Files
social-media/docs/TASKS/approval-workflow/007-execute-multi-level-approval-workflow.md
2026-05-01 14:23:37 -04:00

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 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

  • 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