--- name: contract-workflow description: State machine 9 phase cho hợp đồng TP/NCC/Tổ đội — guard rule, SLA auto-approve, role × phase matrix. Dùng khi debug transition, approve HĐ, xử lý HĐ quá hạn. when-to-use: - "transition contract" - "chuyển phase hợp đồng" - "HĐ quá hạn auto-approve" - "role không duyệt được" - "reject contract về draft" --- # Contract Workflow Skill > **Phase 3 deliverable.** Hiện tại skill này là PLACEHOLDER — sẽ được expand khi implement Phase 3. ## Context Xem đầy đủ ở [`docs/workflow-contract.md`](../../../docs/workflow-contract.md): - 9 state: `DangChon` → `DangSoanThao` → `DangGopY` → `DangDamPhan` → `DangInKy` → `DangKiemTraCCM` → `DangTrinhKy` → `DangDongDau` → `DaPhatHanh` (+ `TuChoi`) - SLA mỗi phase: Draft 7d, GópÝ 7d, ĐàmPhán 7d, InKý 1d, CCMCheck 3d, BOD 1d - Role × Phase matrix (Drafter, TBP/TPB, PD/PM, PRO/EQU/FIN/ACT, CCM, BOD/NĐUQ, HRA) ## Code pointers (sẽ có sau Phase 3) - `src/Backend/SolutionErp.Domain/Contracts/ContractPhase.cs` (enum) - `src/Backend/SolutionErp.Domain/Contracts/Contract.cs` (aggregate root) - `src/Backend/SolutionErp.Application/Contracts/Services/IContractWorkflowService.cs` - `src/Backend/SolutionErp.Infrastructure/HostedServices/SlaExpiryJob.cs` ## Common pitfalls (dự kiến — update khi build) - Không check bypass flag khi HĐ với Chủ đầu tư → sẽ reject oan ở CCM phase - Gen mã HĐ trước khi BOD approve → có thể waste số thứ tự nếu reject sau đó - Auto-approve chạy trong transaction dài → lock table → timeout