ExpenseApprovalRepository
Component Detail
Data Layer
medium complexity
backend
0
Dependencies
0
Dependents
1
Entities
0
Integrations
Description
Data access layer responsible for persisting and querying expense claims and their associated approval audit records. It provides filtered reads for queue display and writes for recording decisions, ensuring all decision rows include actor ID and timestamp for audit compliance.
expense-approval-repository
Sources & reasoning
Line 70 states directly that claims above the threshold require manual attestation, implying a queue for those cases. Line 342 places reimbursement handling in Phase 2 of the roadmap, which maps to v1.0. The feature is the admin-side counterpart to the mobile expense registration flow and is required for HLF compliance.
-
docs/source/likeperson.md · line 70Automatisk godkjenning under 50 km / uten utlegg, manuell attestering ellers (HLF).
-
docs/source/likeperson.md · line 342Reiserefusjonshåndtering (faste valg, terskelbasert godkjenning)
Responsibilities
- Query pending expense claims with support for status, date, and type filters
- Persist approval decisions with administrator ID and decision timestamp
- Store and retrieve receipt attachment references linked to claims
- Update claim status atomically when a decision is recorded
- Provide audit trail reads for resolved claims
Interfaces
findClaims(filters: QueueFilters): Promise<ExpenseClaim[]>
findClaimById(claimId: string): Promise<ExpenseClaim>
saveDecision(decision: ApprovalDecision): Promise<AuditRecord>
updateClaimStatus(claimId: string, status: ClaimStatus): Promise<void>
getAuditTrail(claimId: string): Promise<AuditRecord[]>