2.6 KiB
2.6 KiB
Task: Execute multi-level approval workflow
Feature
docs/FEATURES/approval-workflow.md
Goal
Use configured multi-level approval steps when content enters approval and when approvers record decisions.
Context
Tasks 005 and 006 make multi-level approval configurable. This task makes that configuration affect runtime approval behavior.
Scope
- Create or update the approval workflow runtime model so a
ContentItemhas at most one active approval workflow instance. - Instantiate ordered approval steps from workspace configuration when content enters
In approval. - Track step status as
PendingorApproved. - Allow approval only on the current pending step.
- Require each step's configured approver count before the step becomes approved.
- Advance to the next step after the current step is approved.
- Move content to
ApprovedorScheduledafter the final step completes, following existing workspace options. - Preserve approval history.
- Notify current step approvers when a step becomes current.
- Notify publish-capable users when final approval completes.
- Keep the existing single-step
OptionalandRequiredflows working.
Constraints
- Do not implement configuration recalculation for already-active workflows in this task unless the task is explicitly expanded.
- Do not implement reminders, comments, mentions, reopening, or magic links in this task.
- Do not delete previous approval history.
- Preserve workspace scoping and access checks.
Likely Files
backend/src/Socialize.Api/Modules/Approvals/Data/*backend/src/Socialize.Api/Modules/Approvals/Handlers/*backend/src/Socialize.Api/Modules/Approvals/Services/*backend/src/Socialize.Api/Modules/ContentItems/Handlers/*backend/src/Socialize.Api/Modules/Notifications/*backend/src/Socialize.Api/Migrations/*backend/tests/Socialize.Tests/Approvals/*frontend/src/features/content/views/ContentItemDetailView.vuefrontend/src/features/reviews/*
Done When
- Content entering approval creates a runtime approval workflow with ordered steps.
- Only the current pending step can be approved.
- Required approver counts are enforced.
- Final approval updates content status according to workspace options.
- Approval history remains available after completion.
- Notifications are written for current approvers and final approval.
- Backend tests cover sequencing, counts, access, and final status behavior.
Validation Commands
dotnet build backend/Socialize.slnx
dotnet test backend/Socialize.slnx
cd frontend && npm run build