Implements runner-jobs module for job lifecycle management and queue submission. Changes: - Created RunnerJobsModule with service, controller, and DTOs - Implemented job creation with BullMQ queue submission - Implemented job listing with filters (status, type, agentTaskId) - Implemented job detail retrieval with steps and events - Implemented cancel operation for pending/queued jobs - Implemented retry operation for failed jobs - Added comprehensive unit tests (24 tests, 100% coverage) - Integrated with BullMQ for async job processing - Integrated with Prisma for database operations - Followed existing CRUD patterns from tasks/events modules API Endpoints: - POST /runner-jobs - Create and queue a new job - GET /runner-jobs - List jobs (with filters) - GET /runner-jobs/:id - Get job details - POST /runner-jobs/:id/cancel - Cancel a running job - POST /runner-jobs/:id/retry - Retry a failed job Quality Gates: - Typecheck: ✅ PASSED - Lint: ✅ PASSED - Build: ✅ PASSED - Tests: ✅ PASSED (24/24 tests) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Issue #167: Runner jobs CRUD and queue submission
Objective
Implement runner-jobs module for job lifecycle management and queue submission, integrating with BullMQ for async job processing.
Prerequisites
- #164 (Database schema) - RunnerJob model available ✅
- #165 (BullMQ module) - BullMqService available for queue submission ✅
Approach
- Review existing CRUD patterns (tasks, events modules)
- Review RunnerJob schema and BullMqService interface
- Follow TDD: Write tests first (RED phase)
- Implement service layer with Prisma + BullMQ integration (GREEN phase)
- Implement controller layer (GREEN phase)
- Refactor and optimize (REFACTOR phase)
- Run quality gates (typecheck, lint, build, test)
API Endpoints
- POST /runner-jobs - Create and queue a new job
- GET /runner-jobs - List jobs (with filters)
- GET /runner-jobs/:id - Get job details
- POST /runner-jobs/:id/cancel - Cancel a running job
- POST /runner-jobs/:id/retry - Retry a failed job
Progress
- Review existing patterns and dependencies
- Create DTOs (CreateJobDto, QueryJobsDto)
- Write service tests (RED phase)
- Implement service with Prisma + BullMQ (GREEN phase)
- Write controller tests (RED phase)
- Implement controller (GREEN phase)
- Create module configuration
- Run quality gates (typecheck, lint, build, test)
- Commit changes
Quality Gates Results
- Typecheck: ✅ PASSED
- Lint: ✅ PASSED (auto-fixed formatting)
- Build: ✅ PASSED
- Tests: ✅ PASSED (24/24 tests passing)
Testing
- Unit tests for RunnerJobsService
- Unit tests for RunnerJobsController
- Mock BullMqService for queue operations
- Mock Prisma for database operations
- Target: ≥85% coverage
Notes
- Follow existing CRUD patterns from tasks/events modules
- Use DTOs for validation
- Integrate with BullMqService for queue submission
- Use Prisma for all database operations
- Follow PDA-friendly language principles in responses