Appearance
Fase 1.2: Job Dispatcher
← Anterior: 1.1 Infraestructura | Siguiente: 1.3 Endpoints →
Crear clase JobDispatcher
Archivo: backend/background-jobs-system.md
Rama: feature/background-jobs-dispatcher
Fase: 1.2: Job Dispatcher con exec()
Estimación: 4 horas
Dependencias: Crear Models BackgroundJobModel y NotificationModel
Deliverables
- [ ] Crear
server/src/services/BackgroundJobs/JobDispatcher.php- [ ] Método
dispatch(handlerClass, payload, schema): Job ID - [ ] Persistencia en BD
- [ ] Asignación de UUID
- [ ] Validación de schema multi-tenant
- [ ] Método
- [ ] Exception handling (InvalidJobHandler, InvalidSchema)
- [ ] Unit tests con mock JobModel
- [ ] Integration tests con BD real
Crear script CLI worker (bootstrap-cli.php)
Archivo: backend/background-jobs-system.md
Rama: feature/background-jobs-dispatcher
Fase: 1.2: Job Dispatcher con exec()
Estimación: 3 horas
Dependencias: Crear clase JobDispatcher
Deliverables
- [ ] Crear
server/bin/worker.php(CLI entrypoint) - [ ] Lógica de polling cada 5 segundos
- [ ] Graceful shutdown (SIGTERM)
- [ ] Logging a STDOUT
- [ ] Parámetro --schema para multi-tenancy
- [ ] Tests simulando execution
Crear clase JobRunner
Archivo: backend/background-jobs-system.md
Rama: feature/background-jobs-dispatcher
Fase: 1.2: Job Dispatcher con exec()
Estimación: 4 horas
Dependencias: Crear script CLI worker, Crear Models
Deliverables
- [ ] Crear
server/src/services/BackgroundJobs/JobRunner.php- [ ] Método
executeJob(jobId) - [ ] Carga handler dinámico
- [ ] Manejo de excepciones
- [ ] Actualiza status (pending → processing → completed/failed)
- [ ] Registra timestamps (started_at, completed_at)
- [ ] Almacena resultado en JSON
- [ ] Método
- [ ] Unit tests con stubs
- [ ] Integration tests end-to-end
Crear interfaz JobHandlerInterface
Archivo: backend/background-jobs-system.md
Rama: feature/background-jobs-handlers
Fase: 1.2: Job Dispatcher con exec()
Estimación: 2 horas
Dependencias: Ninguna (puede crearse en paralelo)
Deliverables
- [ ] Crear
server/src/services/BackgroundJobs/JobHandlerInterface.php- [ ] Método
handle(payload): array - [ ] Método
getName(): string - [ ] PHPDoc con ejemplos
- [ ] Método
- [ ] Abstract base class
AbstractJobHandler - [ ] Tests verificando interfaz
Crear BatchInvoicingJobHandler
Archivo: backend/background-jobs-system.md
Rama: feature/background-jobs-handlers
Fase: 1.2: Job Dispatcher con exec()
Estimación: 5 horas
Dependencias: Crear interfaz JobHandlerInterface, Crear clase JobRunner
Deliverables
- [ ] Crear
server/src/services/BackgroundJobs/Handlers/BatchInvoicingJobHandler.php- [ ] Implementa JobHandlerInterface
- [ ] Payload esperado:
{ facturas: [id1, id2, ...] } - [ ] Lógica de facturación batch (usa FacturacionService existente)
- [ ] Retorna
{ processed: N, failed: N, errors: [...] }
- [ ] Manejo de errores parciales
- [ ] Logging por factura
- [ ] Unit tests
- [ ] Integration tests con BD mock
← Anterior: 1.1 Infraestructura | Siguiente: 1.3 Endpoints →