Files
lcbp3/specs/200-fullstacks/204-rfa-approval-refactor/plan.md
T
admin 1a162bf320
CI / CD Pipeline / build (push) Successful in 4m54s
CI / CD Pipeline / deploy (push) Failing after 12m9s
feat(rfa-ai): Complete RFA Approval Refactor and AI Model Revision
2026-05-16 10:59:53 +07:00

132 lines
8.2 KiB
Markdown

# Implementation Plan: RFA Approval System Refactor
**Feature Branch**: `204-rfa-approval-refactor`
**Parent Feature**: RFA Approval Refactor
**Version**: 1.0.0
**Status**: Planning
---
## 🏗ïļ Architectural Overview
āđ€āļĢāļēāļˆāļ°āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡āļĢāļ°āļšāļš RFA Approval āđ‚āļ”āļĒāđƒāļŠāđ‰ **Domain-Driven Design (DDD)** āđāļĨāļ° **Unified Workflow Engine (ADR-001)** āđ‚āļ”āļĒāđ€āļ™āđ‰āļ™āđ„āļ›āļ—āļĩāđˆāļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āļ‚āļ­āļ‡ Review Teams, āļĄāļēāļ•āļĢāļāļēāļ™ Response Codes, āđāļĨāļ°āļĢāļ°āļšāļš Delegation/Escalation āļ—āļĩāđˆāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
### Core Components
1. **Review Team Module**: āļˆāļąāļ”āļāļēāļĢāļŠāļĄāļēāļŠāļīāļāļ•āļēāļĄ Discipline āđāļĨāļ° Default Rules
2. **Approval Matrix Service**: āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļāļŽ Response Codes āđāļĨāļ° Implications (Cost/Schedule)
3. **Task Orchestrator**: āļ„āļ§āļšāļ„āļļāļĄ Parallel Review āđāļĨāļ° Lead Consolidation logic
4. **Delegation Manager**: āļ•āļĢāļ§āļˆāļŠāļ­āļšāļŠāļīāļ—āļ˜āļīāđŒāđāļĨāļ°āļŠāļĨāļąāļšāļœāļđāđ‰āļĢāļąāļšāļœāļīāļ”āļŠāļ­āļšāļ‡āļēāļ™āļ•āļēāļĄāļĢāļ°āļĒāļ°āđ€āļ§āļĨāļē
5. **Reminder & Escalation Engine**: āđƒāļŠāđ‰ BullMQ āđƒāļ™āļāļēāļĢāļŠāđˆāļ‡āļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™āđāļšāļš Progressive (3-strike)
6. **Distribution Engine**: āļ—āļģāļ‡āļēāļ™āđāļšāļš Async āđ€āļžāļ·āđˆāļ­āļāļĢāļ°āļˆāļēāļĒāđ€āļ­āļāļŠāļēāļĢāļ•āļēāļĄ Matrix āļŦāļĨāļąāļ‡āļāļēāļĢāļ­āļ™āļļāļĄāļąāļ•āļī
---
## ðŸ›Ąïļ Security & Integrity (Tier 1)
| Gate | Status | Notes |
| :--- | :--- | :--- |
| **ADR-019 UUID** | ✅ PASS | All new entities use publicId (string UUID), internal id (number) with @Exclude() |
| **ADR-009 No Migrations** | ✅ PASS | Schema changes via SQL files in `specs/03-Data-and-Storage/` |
| **ADR-002 Document Numbering** | ✅ PASS | Existing RFA numbering reused, no new numbering needed |
| **ADR-008 BullMQ** | ✅ PASS | Reminders, Distribution, Escalation all use BullMQ |
| **ADR-016 CASL** | ✅ PASS | Reviewer permissions via CASL ability checks |
| **ADR-023/023A AI Boundary** | ✅ PASS | No AI involvement in approval workflow (Ollama on Admin Desktop only) |
| **ADR-007 Error Handling** | ✅ PASS | BusinessException/WorkflowException for approval errors |
| **No `any` types** | ✅ PASS | Strict TypeScript enforced |
| **No `console.log`** | ✅ PASS | NestJS Logger for backend, removed for frontend commits |
---
## 🗚ïļ Implementation Roadmap
### Phase 0: Research & Foundation (Validated)
- [x] āļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļ„āļ§āļēāļĄāđāļ•āļāļ•āđˆāļēāļ‡āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļĢāļ°āļšāļšāļ›āļąāļˆāļˆāļļāļšāļąāļ™āļāļąāļš TeamBinder/InEight
- [x] āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļžāļĢāđ‰āļ­āļĄāļ‚āļ­āļ‡ Workflow Engine āļŠāļģāļŦāļĢāļąāļš Parallel Tasks
- [x] āļāļģāļŦāļ™āļ” Schema āļžāļ·āđ‰āļ™āļāļēāļ™āļŠāļģāļŦāļĢāļąāļš Entities āđƒāļŦāļĄāđˆ
### Phase 1: Data Model & Contracts (Next Step)
- [ ] āļŠāļĢāđ‰āļēāļ‡ SQL schema āļŠāļģāļŦāļĢāļąāļš `ReviewTeam`, `ReviewTask`, `Delegation`, `ApprovalMatrix`
- [ ] āļ­āļąāļ›āđ€āļ”āļ• Data Dictionary āđƒāļ™ `specs/03-Data-and-Storage/`
- [ ] āļ™āļīāļĒāļēāļĄ API DTOs āđāļĨāļ° Response Interfaces āđƒāļ™ NestJS
### Phase 2: Core Logic & Services
- [ ] āļžāļąāļ’āļ™āļē `ReviewTeamService` āđāļĨāļ° `DelegationService`
- [ ] āļžāļąāļ’āļ™āļē `ApprovalMatrixService` (Logic: Lead Consolidation, Category Filtering)
- [ ] āļžāļąāļ’āļ™āļē `RemindersProcessor` (Logic: 3-Strike Escalation via BullMQ)
### Phase 3: Workflow Integration
- [ ] āļ­āļąāļ›āđ€āļ”āļ• RFA Workflow DSL āđƒāļŦāđ‰āļĢāļ­āļ‡āļĢāļąāļš Parallel Review Step
- [ ] āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­ Event Hooks āļŠāļģāļŦāļĢāļąāļš Auto-Distribution (Transmittal generation)
- [ ] āļžāļąāļ’āļ™āļē Proxy Logic āđƒāļ™ Task Manager āļŠāļģāļŦāļĢāļąāļš Delegation
### Phase 4: Frontend UI/UX
- [ ] āļžāļąāļ’āļ™āļē Horizontal Stepper āļŠāļģāļŦāļĢāļąāļš Parallel Review visualization
- [ ] āļžāļąāļ’āļ™āļē Delegation Settings UI āđāļĨāļ° Matrix Management Dashboard
- [ ] āļ›āļĢāļąāļšāļ›āļĢāļļāļ‡ RFA Detail page āđƒāļŦāđ‰āļĢāļ­āļ‡āļĢāļąāļš Side Panel layout (Discipline details)
### Phase 5: Testing & Validation
- [ ] Unit Tests āļŠāļģāļŦāļĢāļąāļš Lead Consolidation rules
- [ ] E2E Tests āļŠāļģāļŦāļĢāļąāļš Delegation expiry āđāļĨāļ° Escalation flow
- [ ] āđ‚āļŦāļĨāļ”āđ€āļ—āļŠāļ•āđŒāļŠāļģāļŦāļĢāļąāļš Distribution Matrix (Concurrent approvals)
- [ ] **Performance Tests āļŠāļģāļŦāļĢāļąāļš Approval Matrix Service**
- Load testing āļāļąāļš 1000+ response code rules
- Benchmark consensus calculation āļāļąāļš 10+ disciplines
- Query performance test āļŠāļģāļŦāļĢāļąāļš review_tasks āļāļąāļš indexes
- Document SLA targets: Approval lookup < 100ms, Consensus calc < 500ms
---
## 📐 Technical Decisions
### Decision 1: Lead Consolidation Logic (Parallel Review)
āđ€āļĢāļēāļˆāļ°āđƒāļŠāđ‰ **Lead Consolidation** āđāļ—āļ™ Majority Vote āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡āļāļąāļšāļĄāļēāļ•āļĢāļāļēāļ™āļ­āļļāļ•āļŠāļēāļŦāļāļĢāļĢāļĄ āđ‚āļ”āļĒ Lead Discipline āļˆāļ°āđ„āļ”āđ‰āļĢāļąāļšāļŠāļīāļ—āļ˜āļīāđŒāđƒāļ™āļāļēāļĢ "āļŠāļĢāļļāļ›āļœāļĨ" āļŦāļĨāļąāļ‡āļˆāļēāļāļ—āļļāļ Discipline āļ—āļģāļ‡āļēāļ™āđ€āļŠāļĢāđ‡āļˆ āļŦāļĢāļ·āļ­āļŠāļēāļĄāļēāļĢāļ– override āđ„āļ”āđ‰āļ•āļēāļĄāļŠāļīāļ—āļ˜āļīāđŒ PM
### Decision 2: Single-Level Delegation
āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļ‚āļ­āļ‡ Circular Dependency āđāļĨāļ° Audit Trail āđ€āļĢāļēāļˆāļ°āļˆāļģāļāļąāļ”āļāļēāļĢāļĄāļ­āļšāļŦāļĄāļēāļĒāļ‡āļēāļ™āđƒāļŦāđ‰āđ€āļžāļĩāļĒāļ‡ **1 āļĢāļ°āļ”āļąāļš** āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™ (A -> B) āđ‚āļ”āļĒ B āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļŠāđˆāļ‡āļ•āđˆāļ­āđƒāļŦāđ‰ C āđ„āļ”āđ‰āđƒāļ™āļāļēāļ™āļ°āļœāļđāđ‰āđƒāļŠāđ‰āļ›āļāļ•āļī
### Decision 3: 3-Strike Progressive Escalation
āļāļēāļĢāļĒāļāļĢāļ°āļ”āļąāļšāļˆāļ°āđƒāļŠāđ‰āļĢāļ°āļšāļš 3 āļ„āļĢāļąāđ‰āļ‡ (Reminders) āļ•āđˆāļ­āļĢāļ°āļ”āļąāļšāļ„āļ§āļēāļĄāļŠāļģāļ„āļąāļ āļāđˆāļ­āļ™āļˆāļ°āļĒāđ‰āļēāļĒāļ‡āļēāļ™āđ„āļ›āđƒāļŦāđ‰āļœāļđāđ‰āļšāļąāļ‡āļ„āļąāļšāļšāļąāļāļŠāļē (L1 -> L2) āđāļĨāļ°āđ€āļĄāļ·āđˆāļ­āļ–āļķāļ‡āļĢāļ°āļ”āļąāļšāļŠāļđāļ‡āļŠāļļāļ”āļˆāļ°āļŠāđˆāļ‡ Daily Reminder āļˆāļ™āļāļ§āđˆāļēāļˆāļ°āļˆāļšāļ‡āļēāļ™
---
## ⚠ïļ Potential Blockers
- **Workflow DSL Flexibility**: āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āļ‚āļ­āļ‡ Engine āļ›āļąāļˆāļˆāļļāļšāļąāļ™āđƒāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ Parallel Tasks āļ—āļĩāđˆāļĢāļ­āļāļēāļĢ Consolidation
- **Migration of Existing RFAs**: āđāļœāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢ RFA āļ—āļĩāđˆāļāļģāļĨāļąāļ‡āļ­āļĒāļđāđˆāđƒāļ™āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢ (In-flight) āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āļœāđˆāļēāļ™āļĢāļ°āļšāļš
- **CASL Matrix Overlap**: āļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļ‚āļ­āļ‡āļŠāļīāļ—āļ˜āļīāđŒāđ€āļĄāļ·āđˆāļ­āļĄāļĩāļ—āļąāđ‰āļ‡ Delegation āđāļĨāļ° Review Team roles āļ‹āđ‰āļ­āļ™āļ—āļąāļšāļāļąāļ™
---
## 🔗 Cross-Spec Dependencies
### Dependencies āļˆāļēāļ 302-ai-model-revision
| Component | Impact | Coordination |
|-----------|--------|--------------|
| **BullMQ Infrastructure** | āđƒāļŠāđ‰ queue `ai-realtime` āđāļĨāļ° `ai-batch` āļĢāđˆāļ§āļĄāļāļąāļ™ | āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āđˆāļē Reminder/Escalation jobs āđ„āļĄāđˆāļŠāļ™āļāļąāļš AI jobs |
| **QdrantService** | āļ­āļēāļˆāđƒāļŠāđ‰āļŠāļģāļŦāļĢāļąāļš RFA document search | āļ•āļĢāļ§āļˆāļŠāļ­āļš projectPublicId filtering āļ–āđ‰āļēāļĄāļĩ integration |
| **Ollama on Desk-5439** | Shared GPU resource | Schedule Reminder batch jobs āļ™āļ­āļāļŠāđˆāļ§āļ‡ AI peak |
### Shared Entities/Services
- **Audit Logging**: āđƒāļŠāđ‰ `audit_logs` table āļĢāđˆāļ§āļĄāļāļąāļ™ â€” āļ•āļĢāļ§āļˆāļŠāļ­āļš action types āđ„āļĄāđˆāļ‹āđ‰āļģāļāļąāļ™
- **Notification System**: āđƒāļŠāđ‰ BullMQ + notification service āļĢāđˆāļ§āļĄāļāļąāļ™ â€” āļ•āļĢāļ§āļˆāļŠāļ­āļš queue priority
### Deployment Sequence Recommendation
1. Phase 1-2 āļ‚āļ­āļ‡ AI Model Revision (āđ€āļŠāļĢāđ‡āļˆāļāđˆāļ­āļ™)
2. Phase 1-3 āļ‚āļ­āļ‡ RFA Approval Refactor (āđƒāļŠāđ‰ BullMQ āļ—āļĩāđˆ setup āđāļĨāđ‰āļ§)
3. Phase 4+ āļ—āļąāđ‰āļ‡āļŠāļ­āļ‡ features āļ—āļģāļžāļĢāđ‰āļ­āļĄāļāļąāļ™āđ„āļ”āđ‰
---
## 🔗 References
- **Spec File**: `specs/200-fullstacks/204-rfa-approval-refactor/spec.md`
- **Research File**: `specs/200-fullstacks/204-rfa-approval-refactor/research.md`
- **Cross-Spec**: `specs/300-others/302-ai-model-revision/plan.md` (BullMQ/Qdrant shared infrastructure)
- **ADR-001**: Unified Workflow Engine
- **ADR-019**: Hybrid Identifier Strategy
- **ADR-008**: BullMQ Notification Strategy