Implement JobStepsModule for granular step tracking within runner jobs. Features: - Create and track job steps (SETUP, EXECUTION, VALIDATION, CLEANUP) - Track step status transitions (PENDING → RUNNING → COMPLETED/FAILED) - Record token usage for AI_ACTION steps - Calculate step duration automatically - GET endpoints for listing and retrieving steps Implementation: - JobStepsService: CRUD operations, status tracking, duration calculation - JobStepsController: GET /runner-jobs/:jobId/steps endpoints - DTOs: CreateStepDto, UpdateStepDto with validation - Full unit test coverage (16 tests) Quality gates: - Build: ✅ Passed - Lint: ✅ Passed - Tests: ✅ 16/16 passed - Coverage: ✅ 100% statements, 100% functions, 100% lines, 83.33% branches Also fixed pre-existing TypeScript strict mode issue in job-events DTO. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Issue #168: Job steps tracking
Objective
Implement job-steps module for granular step tracking within jobs. This module will track individual steps (SETUP, EXECUTION, VALIDATION, CLEANUP) within a runner job, recording status transitions, token usage, and duration.
Approach
- Analyze existing RunnerJobsModule and JobStep model
- Create JobStepsModule with TDD approach
- Implement service layer for step CRUD and status tracking
- Implement controller with GET endpoints
- Ensure proper integration with RunnerJobsModule
Progress
- Analyze existing code structure
- Create directory structure and DTOs
- RED: Write tests for JobStepsService
- GREEN: Implement JobStepsService
- RED: Write tests for JobStepsController
- GREEN: Implement JobStepsController
- Create JobStepsModule
- REFACTOR: Clean up and optimize
- Quality gates: typecheck, lint, test, coverage
- Commit changes
Testing
- Unit tests for service methods (13 tests)
- Unit tests for controller endpoints (3 tests)
- Mock Prisma service
- Verify token usage tracking
- Verify duration calculation
- Coverage: 100% statements, 100% functions, 100% lines, 83.33% branches
Notes
- Step types: COMMAND, AI_ACTION, GATE, ARTIFACT
- Step phases: SETUP, EXECUTION, VALIDATION, CLEANUP
- Status transitions: pending → running → completed/failed
- Track token usage per step (for AI_ACTION steps)
- Calculate duration on completion
Implementation Summary
Created the following files:
/home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/job-steps.module.ts- Module definition/home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/job-steps.service.ts- Service with CRUD operations/home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/job-steps.controller.ts- Controller with GET endpoints/home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/dto/create-step.dto.ts- DTO for creating steps/home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/dto/update-step.dto.ts- DTO for updating steps/home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/dto/index.ts- DTO exports/home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/job-steps.service.spec.ts- Service tests (13 tests)/home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/job-steps.controller.spec.ts- Controller tests (3 tests)/home/jwoltje/src/mosaic-stack/apps/api/src/job-steps/index.ts- Module exports
Also fixed pre-existing issue in job-events DTO (added ! to required properties).
Quality Gates
- ✅ Build: Passed
- ✅ Lint: Passed (auto-fixed formatting)
- ✅ Tests: 16/16 passed
- ✅ Coverage: 100% statements, 100% functions, 100% lines, 83.33% branches