diff --git a/ROADMAP.md b/ROADMAP.md index 68c0185..74b88c6 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -3,7 +3,7 @@ > Single source of truth for project status and remaining work. > Previous planning documents (IMPLEMENTATION_PLAN.md, UPGRADE_PLAN.md) are archived in `docs/archive/`. -*Last updated: 2026-03-14* +*Last updated: 2026-03-14 (Phase 2 complete)* --- @@ -67,6 +67,47 @@ | **Weekly executive report** | Full report page at `/reports/weekly/[date]` with KPI strip, completed, deadlines, at-risk, upcoming sections | | **Skill data model** | `Skill`, `UserSkill`, `StageSkillRequirement` in schema with seed data — **no assignment UI yet** | +### Phase 2: Multi-Brand Ready (Dynamic Pipelines) + +| Feature | Status | +|---|---| +| **WP1 — RBAC Foundation** | ✅ Complete | +| `Permission` enum (20 perms) + `OrgRolePermission` model | ✅ | +| `requireAuth(permission?)` replaces `getAuthSession()` across all 28 API routes | ✅ | +| Default permissions per role (ADMIN/PRODUCER/ARTIST) with org-level overrides | ✅ | +| Permission matrix settings page (`/settings/permissions`) | ✅ | +| **WP2 — Org Hardening** | ✅ Complete | +| Denormalized `organizationId` on Deliverable + DeliverableStage | ✅ | +| `assertOrgAccess()` on all project/deliverable/stage API routes | ✅ | +| Backfill script (`scripts/backfill-org-ids.ts`) | ✅ | +| **WP3 — Dynamic Pipeline Schema** | ✅ Complete | +| `PipelineTemplate`, `PipelineStageDefinition`, `PipelineStageDependencyV2` models | ✅ | +| `pipelineTemplateId` on Project, `stageDefinitionId` on DeliverableStage | ✅ | +| Stage resolver normalizes old/new definitions | ✅ | +| `deliverable-service.ts` creates stages from project's dynamic pipeline | ✅ | +| Migration script (`scripts/migrate-to-dynamic-pipelines.ts`) | ✅ | +| **WP4 — Pipeline Template CRUD** | ✅ Complete | +| Full service: list, get, create, update, archive, duplicate | ✅ | +| Stage CRUD: add, update, remove, reorder | ✅ | +| Dependency management with cycle detection | ✅ | +| Pipeline validation (cycles, orphans, root stages) | ✅ | +| 8 API routes under `/api/pipelines/` | ✅ | +| **WP5 — Pipeline Builder UI** | ✅ Complete | +| `@xyflow/react` dependency graph visualization | ✅ | +| Pipeline list page (`/settings/pipelines`) with create, duplicate, archive | ✅ | +| Pipeline editor page with two-panel layout (stage list + dependency graph) | ✅ | +| Stage edit sheet, validation banner, custom edge with delete | ✅ | +| **WP6 — Invite System & Org Onboarding** | ✅ Complete | +| `Invitation` model with token-based accept flow | ✅ | +| Invitation service: create, list, revoke, accept | ✅ | +| Team settings page (`/settings/team`) with member list + invite form | ✅ | +| **WP7 — Custom Fields & Notification Rules** | ✅ Complete | +| `CustomFieldDefinition` model + `customFields` JSON on Project/Deliverable | ✅ | +| `NotificationRule` model (org-scoped event + conditions + channels) | ✅ | +| CRUD services, validators, hooks, API routes for both | ✅ | +| Custom fields settings page (`/settings/fields`) | ✅ | +| Notification rules settings page (`/settings/notifications`) | ✅ | + --- ## Remaining Work — Priority Order @@ -735,8 +776,13 @@ Note: `Dockerfile` and `docker-compose.yml` already exist in the repo root — r | Model | Status | |---|---| | Organization, User, Account, Session | ✅ | -| PipelineStageTemplate, PipelineStageDependency | ✅ | -| Project, Deliverable, DeliverableStage | ✅ (with pgvector embedding columns) | +| PipelineStageTemplate, PipelineStageDependency | ✅ (legacy global, kept for backward compat) | +| PipelineTemplate, PipelineStageDefinition, PipelineStageDependencyV2 | ✅ (Phase 2 — org-scoped dynamic pipelines) | +| OrgRolePermission | ✅ (Phase 2 — RBAC) | +| Invitation | ✅ (Phase 2 — invite system) | +| CustomFieldDefinition | ✅ (Phase 2 — custom fields) | +| NotificationRule | ✅ (Phase 2 — notification rules) | +| Project, Deliverable, DeliverableStage | ✅ (with pgvector, customFields JSON, org denormalization) | | StageAssignment, Revision, Comment | ✅ | | Notification | ✅ | | AutomationRule, AutomationExecution | ✅ | @@ -779,6 +825,12 @@ src/ │ │ ├── reviews/ # A7 Review sessions │ │ ├── templates/ # D3 Project templates │ │ └── settings/ +│ │ ├── permissions/ # ✅ Phase 2 RBAC matrix +│ │ ├── pipelines/ # ✅ Phase 2 Pipeline builder +│ │ ├── team/ # ✅ Phase 2 Team + invitations +│ │ ├── fields/ # ✅ Phase 2 Custom fields +│ │ ├── notifications/ # ✅ Phase 2 Notification rules +│ │ └── skills/ # ✅ Skills management │ ├── (portal)/[token]/ # C3 Client portal (external) │ ├── (external)/review/ # B3 External review links │ └── api/ @@ -789,12 +841,14 @@ src/ │ ├── workload/ # ✅ Capacity grid + heatmap components │ ├── calendar/ # ✅ Calendar components │ ├── reports/weekly/ # ✅ Weekly report components +│ ├── pipeline-builder/ # ✅ Phase 2 Pipeline graph + stage list │ ├── revisions/ # A1 Image comparison (to build) │ ├── review/ # A2-A7 Full review viewer (to build) │ ├── automations/ # D1 Automation UI (to build) │ └── search/ # ✅ Smart search panel ├── lib/ -│ ├── pipeline/ # ✅ Dependency engine + stage machine +│ ├── pipeline/ # ✅ Dependency engine + stage machine + stage resolver +│ ├── rbac/ # ✅ Phase 2 permissions + org scope + requireAuth │ ├── automation/ # ✅ Event bus + rule engine + executor │ ├── services/ # Business logic per entity │ └── validators/ # Zod schemas @@ -822,11 +876,12 @@ export NVM_DIR="$HOME/.nvm" && [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" | Library | Purpose | Feature | |---|---|---| +| `@xyflow/react` | Pipeline dependency graph visualization | ✅ Phase 2 WP5 (installed) | | `sharp` | PNG alpha compositing + image validation + thumbnail generation | A1, E1, E2 | | `bcryptjs` | Password hashing for portal links | C3 | | `@react-pdf/renderer` | PDF export for weekly report download button | C — weekly report enhancement | --- -*Document version: 1.0 — Created 2026-03-14* +*Document version: 1.1 — Updated 2026-03-14 (Phase 2: Dynamic Pipelines complete)* *To be updated as features are built and priorities shift.*