Service Layer medium complexity backend
0
Dependencies
0
Dependents
8
Entities
0
Integrations

Description

Backend service that orchestrates the approval and rejection workflow for activity submissions. It validates submission state transitions, persists decisions with audit metadata, triggers downstream reporting data updates for approved submissions, and dispatches rejection notifications to originating peer mentors.

Feature: Activity Review & Approval

activity-approval-service

Sources & reasoning

Line 329 places activity oversight explicitly in the Admin Web Portal MVP scope (Fase 1). Lines 195 and 263 confirm approval workflows and coordinator quality oversight are structural responsibilities of the admin portal. Blueprint marks this [MVP]. Bufdir reporting dependency makes approval gating critical priority - without it, grant compliance data cannot be trusted.

  • docs/source/likeperson.md · line 195
    Activity oversight, approval workflows, and corrections
  • docs/source/likeperson.md · line 263
    Coordinator oversees follow-up, quality, and approval
  • docs/source/likeperson.md · line 329
    Aktivitetsoversikt og grunnleggende statistikk

Responsibilities

  • Validate that a submission is in a reviewable state before processing a decision
  • Persist approval decisions and update submission status to approved in the database
  • Persist rejection decisions with mandatory coordinator-supplied reasoning
  • Enqueue approved submissions for inclusion in Bufdir-compatible reporting exports
  • Emit rejection notifications to the peer mentor who created the submission

Interfaces

approveActivity(submissionId: string, coordinatorId: string): Promise<ApprovalResult>
rejectActivity(submissionId: string, coordinatorId: string, reason: string): Promise<RejectionResult>
getReviewQueue(filters: ReviewFilters, page: number): Promise<SubmissionPage>
getSubmissionDetail(submissionId: string): Promise<ActivitySubmission>