72 lines
2.6 KiB
Markdown
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
|
|
```
|