Expense Approval Service
Component Detail
Description
Backend service handling the review lifecycle for expense claims, including single-record and bulk approval actions. Writes reviewer decision and timestamp to expense_approvals, dispatches push notifications to the submitting peer mentor, and appends an audit log entry for every state transition.
expense-approval-service
Sources & reasoning
The service layer encapsulates the entire review state machine - single and bulk actions, authorization checks, notification dispatch, and audit trail creation. High complexity is warranted by the transactional requirement that bulk approval must be atomic, combined with cross-cutting concerns of notification and audit that must never be skipped.
No source references — this artifact was included based on reasoning alone (see above).
Responsibilities
- Process approve, reject, and request-correction actions for individual expense claims
- Execute bulk approval atomically for batches of selected claims
- Validate reviewer authorization against organization scope before any state change
- Write expense_approvals record with reviewer_id, action, comment, and timestamp
- Dispatch push notification to submitting peer mentor on each decision
- Emit audit log entry for every approval state transition
Interfaces
reviewExpense(expenseId, reviewerId, action, comment?)
bulkApprove(expenseIds[], reviewerId)
getPendingExpenses(orgId, filters, pagination)
getExpenseDetail(expenseId, reviewerId)
validateReviewerScope(reviewerId, expenseId)
Relationships
Related Data Entities (6)
Data entities managed by this component