feat: import job runner in-memory

- Añade ImportRunner en memoria con concurrencia configurable
- Tests TDD para enqueue, concurrencia y comportamiento tras stop
- Actualiza /api/import/scan para encolar jobs y registrar errores
- Ajusta tsconfig.json para incluir tests en comprobaciones de tipo
This commit is contained in:
2026-02-08 22:24:56 +01:00
parent 1a42422c7e
commit 4298b003d9
20 changed files with 696 additions and 1 deletions

View File

@@ -0,0 +1,25 @@
import { FastifyInstance } from 'fastify';
import { runner } from '../jobs/importRunner';
export default async function importRoutes(app: FastifyInstance) {
app.post('/import/scan', async (request, reply) => {
const body = request.body as any;
// Encolar el job en background (placeholder)
setImmediate(() => {
// placeholder task: no persistencia, trabajo ligero en background
runner
.enqueue(async () => {
// usar body en caso necesario; aquí sólo un placeholder
void body;
return true;
})
.catch((err) => {
app.log.warn({ err }, 'Background import task failed');
});
});
// Responder inmediatamente
reply.code(202).send({ status: 'queued' });
});
}