Files
social-media/docs/TASKS/approval-workflow/005-multi-level-approval-step-configuration-backend.md
2026-05-01 14:23:37 -04:00

72 lines
2.6 KiB
Markdown

# Task: Multi-level approval step configuration backend
## Feature
`docs/FEATURES/approval-workflow.md`
## Goal
Persist workspace-level multi-level approval step configuration and expose it through workspace settings APIs.
## Context
The workspace can currently select `Multi-level`, but there is no backend model or API surface for defining the ordered steps that make multi-level approval usable.
## Scope
- Add a workspace-owned approval step configuration data model.
- Each configured step must include:
- display name
- sort order
- target type: `Role`, `Membership`, or `Member`
- target value
- required approver count
- Add EF Core configuration and migration.
- Return configured approval steps from workspace APIs.
- Allow workspace managers/admins to replace the configured step list for a workspace.
- Validate:
- `Multi-level` workspaces must have at least one step.
- step names are required and bounded.
- target type is one of `Role`, `Membership`, or `Member`.
- role targets use known workspace roles.
- membership targets use known membership categories.
- member targets reference a user with workspace access.
- required approver count is at least 1.
- sort order is stable and unique per workspace.
## Constraints
- Do not implement active approval workflow instance recalculation in this task.
- Do not implement approval step execution or per-step approval decisions in this task.
- Do not implement reminders, comments, reopening, or magic links in this task.
- Keep backend feature code under `backend/src/Socialize.Api/Modules/Approvals` or `Modules/Workspaces` according to existing ownership patterns.
- If backend contracts change, update OpenAPI when the backend is running.
## Likely Files
- `backend/src/Socialize.Api/Modules/Approvals/Data/*`
- `backend/src/Socialize.Api/Modules/Approvals/Handlers/*`
- `backend/src/Socialize.Api/Modules/Workspaces/Handlers/*`
- `backend/src/Socialize.Api/Data/AppDbContext.cs`
- `backend/src/Socialize.Api/Migrations/*`
- `backend/tests/Socialize.Tests/Approvals/*`
- `shared/openapi/openapi.json`
- `frontend/src/api/schema.d.ts`
## Done When
- [x] Multi-level step configuration is persisted per workspace.
- [x] Workspace responses include configured approval steps.
- [x] Managers/admins can save an ordered list of approval steps.
- [x] Invalid target types, target values, counts, and empty multi-level configurations are rejected.
- [x] Backend tests cover validation and persistence rules.
- [x] OpenAPI and generated frontend schema are updated.
## Validation Commands
```bash
dotnet build backend/Socialize.slnx
dotnet test backend/Socialize.slnx
./scripts/update-openapi.sh
```