Adds 2 units and docs for unit 3. nfr-requirements plan
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
# Execution Plan — Master CMS Module
|
||||
|
||||
## Detailed Analysis Summary
|
||||
|
||||
### Transformation Scope
|
||||
- **Transformation Type**: Multi-component addition — new module + slave-side middleware extension + frontend page + documentation
|
||||
- **Primary Changes**: New `SlpModularCms.Modules.Master` project; extended `SlpModularCms.Modules.Availability`; updated `/cms` frontend page
|
||||
- **Related Components**: Core (new entity), Api shell (module registration), Availability module (middleware extension), Frontend (CMS page)
|
||||
|
||||
### Change Impact Assessment
|
||||
- **User-facing changes**: Yes — `/cms` page gets a full slave management UI; slave CMS users see a disable message on 503
|
||||
- **Structural changes**: Yes — new module project, per-module DbContext pattern introduced
|
||||
- **Data model changes**: Yes — new `CmsInstance` entity (master), new `MasterRegistration` entity (slave)
|
||||
- **API changes**: Yes — new Master module endpoints; new internal slave registration endpoint; extended 503 response body
|
||||
- **NFR impact**: Yes — API key security, availability caching strategy, background service, fail-open design
|
||||
|
||||
### Component Relationships
|
||||
|
||||
**Primary new component**: `SlpModularCms.Modules.Master`
|
||||
- Depends on: `SlpModularCms.Core` (shared DbContext base, IModule), `SlpModularCms.Api` (module registration)
|
||||
|
||||
**Modified component**: `SlpModularCms.Modules.Availability`
|
||||
- Extended with: master registration endpoint, two-phase availability check, `MasterAvailabilityService`, slave-side `MasterDbContext`
|
||||
- Depends on: `SlpModularCms.Core`
|
||||
|
||||
**Modified component**: `SlpModularCms.Frontend`
|
||||
- Extended with: CMS page slave management UI, new TanStack Query hooks, new API types
|
||||
|
||||
### Risk Assessment
|
||||
- **Risk Level**: Medium-High
|
||||
- **Rollback Complexity**: Moderate — new module can be unregistered from Api; slave-side changes are additive; frontend changes are isolated to one route
|
||||
- **Testing Complexity**: Complex — involves network calls between Master and Slave, background service timing, cache behavior, fallback logic
|
||||
|
||||
---
|
||||
|
||||
## Workflow Visualization
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
Start(["Master CMS Module Request"])
|
||||
|
||||
subgraph INCEPTION["🔵 INCEPTION PHASE"]
|
||||
WD["Workspace Detection\nCOMPLETED"]
|
||||
RE["Reverse Engineering\nSKIPPED (artifacts exist)"]
|
||||
RA["Requirements Analysis\nCOMPLETED"]
|
||||
US["User Stories\nSKIPPED"]
|
||||
WP["Workflow Planning\nIN PROGRESS"]
|
||||
AD["Application Design\nEXECUTE"]
|
||||
UG["Units Generation\nEXECUTE"]
|
||||
end
|
||||
|
||||
subgraph CONSTRUCTION["🟢 CONSTRUCTION PHASE — Per Unit"]
|
||||
FD["Functional Design\nEXECUTE"]
|
||||
NFRA["NFR Requirements\nEXECUTE"]
|
||||
NFRD["NFR Design\nEXECUTE"]
|
||||
ID["Infrastructure Design\nSKIPPED"]
|
||||
CG["Code Generation\nEXECUTE"]
|
||||
BT["Build and Test\nEXECUTE"]
|
||||
end
|
||||
|
||||
subgraph OPERATIONS["🟡 OPERATIONS PHASE"]
|
||||
OPS["Operations\nPLACEHOLDER"]
|
||||
end
|
||||
|
||||
Start --> WD --> RA --> WP --> AD --> UG
|
||||
UG --> FD --> NFRA --> NFRD --> CG
|
||||
ID -.->|skipped| CG
|
||||
CG -->|repeat per unit| FD
|
||||
CG --> BT --> OPS --> End(["Complete"])
|
||||
|
||||
style WD fill:#4CAF50,stroke:#1B5E20,stroke-width:3px,color:#fff
|
||||
style RA fill:#4CAF50,stroke:#1B5E20,stroke-width:3px,color:#fff
|
||||
style WP fill:#4CAF50,stroke:#1B5E20,stroke-width:3px,color:#fff
|
||||
style CG fill:#4CAF50,stroke:#1B5E20,stroke-width:3px,color:#fff
|
||||
style BT fill:#4CAF50,stroke:#1B5E20,stroke-width:3px,color:#fff
|
||||
style RE fill:#BDBDBD,stroke:#424242,stroke-width:2px,stroke-dasharray:5 5,color:#000
|
||||
style US fill:#BDBDBD,stroke:#424242,stroke-width:2px,stroke-dasharray:5 5,color:#000
|
||||
style ID fill:#BDBDBD,stroke:#424242,stroke-width:2px,stroke-dasharray:5 5,color:#000
|
||||
style AD fill:#FFA726,stroke:#E65100,stroke-width:3px,stroke-dasharray:5 5,color:#000
|
||||
style UG fill:#FFA726,stroke:#E65100,stroke-width:3px,stroke-dasharray:5 5,color:#000
|
||||
style FD fill:#FFA726,stroke:#E65100,stroke-width:3px,stroke-dasharray:5 5,color:#000
|
||||
style NFRA fill:#FFA726,stroke:#E65100,stroke-width:3px,stroke-dasharray:5 5,color:#000
|
||||
style NFRD fill:#FFA726,stroke:#E65100,stroke-width:3px,stroke-dasharray:5 5,color:#000
|
||||
style OPS fill:#BDBDBD,stroke:#424242,stroke-width:2px,stroke-dasharray:5 5,color:#000
|
||||
style Start fill:#CE93D8,stroke:#6A1B9A,stroke-width:3px,color:#000
|
||||
style End fill:#CE93D8,stroke:#6A1B9A,stroke-width:3px,color:#000
|
||||
style INCEPTION fill:#BBDEFB,stroke:#1565C0,stroke-width:3px,color:#000
|
||||
style CONSTRUCTION fill:#C8E6C9,stroke:#2E7D32,stroke-width:3px,color:#000
|
||||
style OPERATIONS fill:#FFF59D,stroke:#F57F17,stroke-width:3px,color:#000
|
||||
linkStyle default stroke:#333,stroke-width:2px
|
||||
```
|
||||
|
||||
Text alternative: Inception (WD→RA→WP→AD→UG completed/executing), Construction per-unit loop (FD→NFR Req→NFR Design→CodeGen, Infrastructure skipped), Build & Test, Operations placeholder.
|
||||
|
||||
---
|
||||
|
||||
## Phases to Execute
|
||||
|
||||
### 🔵 INCEPTION PHASE
|
||||
- [x] Workspace Detection — COMPLETED
|
||||
- [x] Reverse Engineering — SKIPPED (shared artifacts already exist in `aidlc-docs/_shared/`)
|
||||
- [x] Requirements Analysis — COMPLETED
|
||||
- [ ] User Stories — **SKIP**
|
||||
- *Rationale*: Feature is owner-operated and technical in nature. Requirements are clear and detailed. No multiple personas or acceptance criteria gaps.
|
||||
- [x] Workflow Planning — IN PROGRESS
|
||||
- [ ] Application Design — **EXECUTE**
|
||||
- *Rationale*: New module project, new services, new controller, background service, new frontend components — all need component definition and dependency mapping before code generation.
|
||||
- [ ] Units Generation — **EXECUTE**
|
||||
- *Rationale*: 4 distinct units spanning backend (master), backend (slave extension), frontend, and documentation. Sequencing and dependencies must be planned.
|
||||
|
||||
### 🟢 CONSTRUCTION PHASE (per unit)
|
||||
- [ ] Functional Design — **EXECUTE**
|
||||
- *Rationale*: Complex business logic per unit (registration handshake, two-phase middleware, background integrity check, cache + fallback)
|
||||
- [ ] NFR Requirements — **EXECUTE**
|
||||
- *Rationale*: New security concerns (API key handling), caching strategy, fail-open requirements, test coverage targets
|
||||
- [ ] NFR Design — **EXECUTE**
|
||||
- *Rationale*: Design patterns for background service, per-module DbContext, middleware extension, client-side caching
|
||||
- [ ] Infrastructure Design — **SKIP**
|
||||
- *Rationale*: No new cloud/infrastructure resources. Same deployment model (single .NET process + React SPA). Module registration is code-level, not infrastructure-level.
|
||||
- [ ] Code Generation — **EXECUTE** (always)
|
||||
- [ ] Build and Test — **EXECUTE** (always)
|
||||
|
||||
### 🟡 OPERATIONS PHASE
|
||||
- [ ] Operations — PLACEHOLDER
|
||||
|
||||
---
|
||||
|
||||
## Unit Decomposition (Proposed)
|
||||
|
||||
| # | Unit Name | Scope | Depends On |
|
||||
|---|-----------|-------|------------|
|
||||
| 1 | master-backend | New `SlpModularCms.Modules.Master` project: `CmsInstance` entity, `MasterDbContext`, migrations, `CmsInstanceService`, `MasterController`, `IntegrityCheckBackgroundService`, `MasterModule : IModule`, test project | Core |
|
||||
| 2 | slave-availability-extension | Extended `SlpModularCms.Modules.Availability`: `MasterRegistration` entity, slave `MasterDbContext`, migrations, `MasterAvailabilityService` (pull/cache/fallback), registration endpoint, two-phase `AvailabilityMiddleware` | Unit 1 (API contract) |
|
||||
| 3 | frontend-cms-page | `/cms` page: `CmsInstanceList`, `AddCmsInstanceDialog`, `SetStatusDialog`, new TanStack Query hooks, API types | Unit 1 (REST API) |
|
||||
| 4 | documentation | Update `README.md` (migrations section, module guide, prod env vars), replace `frontend/README.md` | Units 1–3 (documents final patterns) |
|
||||
|
||||
---
|
||||
|
||||
## Package Change Sequence
|
||||
|
||||
```
|
||||
SlpModularCms.Core ← no changes (CmsInstance owned by Modules.Master)
|
||||
↓
|
||||
SlpModularCms.Modules.Master [Unit 1] ← new project
|
||||
↓
|
||||
SlpModularCms.Modules.Availability [Unit 2] ← extended
|
||||
↓
|
||||
SlpModularCms.Api ← registers new Master module
|
||||
↓
|
||||
frontend/ [Unit 3] ← CMS page updated
|
||||
↓
|
||||
README.md / frontend/README.md [Unit 4] ← documentation
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Success Criteria
|
||||
- **Primary Goal**: Owner on the Master CMS can register slave CMSes and toggle their availability; slaves enforce the master-controlled status with a two-phase check
|
||||
- **Key Deliverables**: `SlpModularCms.Modules.Master` project, extended Availability module, updated `/cms` frontend page, updated documentation
|
||||
- **Quality Gates**: ≥80% test coverage on new backend code; fail-open behavior verified; API key not exposed in list responses; two-phase middleware verified for all status combinations
|
||||
Reference in New Issue
Block a user