chore: add missing multi-level editor for approval workflow, rename projects to campaings.
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# 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 `ContentItem` has at most one active approval workflow instance.
|
||||
- Instantiate ordered approval steps from workspace configuration when content enters `In approval`.
|
||||
- Track step status as `Pending` or `Approved`.
|
||||
- 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 `Approved` or `Scheduled` after 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 `Optional` and `Required` flows 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.vue`
|
||||
- `frontend/src/features/reviews/*`
|
||||
|
||||
## Done When
|
||||
|
||||
- [x] Content entering approval creates a runtime approval workflow with ordered steps.
|
||||
- [x] Only the current pending step can be approved.
|
||||
- [x] Required approver counts are enforced.
|
||||
- [x] Final approval updates content status according to workspace options.
|
||||
- [x] Approval history remains available after completion.
|
||||
- [x] Notifications are written for current approvers and final approval.
|
||||
- [x] Backend tests cover sequencing, counts, access, and final status behavior.
|
||||
|
||||
## Validation Commands
|
||||
|
||||
```bash
|
||||
dotnet build backend/Socialize.slnx
|
||||
dotnet test backend/Socialize.slnx
|
||||
cd frontend && npm run build
|
||||
```
|
||||
Reference in New Issue
Block a user