Service Layer medium complexity mobilebackend
0
Dependencies
0
Dependents
1
Entities
0
Integrations

Description

Coordinates receipt image upload lifecycle from capture to confirmed cloud storage. Compresses images before upload, queues them locally when offline, and retries upload when connectivity is restored before the parent expense record syncs. Links confirmed storage URLs to the expense record and reports upload status back to the UI.

Feature: Receipt Photo Upload

receipt-upload-service

Sources & reasoning

Line 68 states a hard receipt photo requirement for claims over 100 kr (HLF). Line 69 confirms that claims without receipts qualify for auto-approval, establishing the conditional enforcement logic. The Phase 2 roadmap (line 343) groups this under Reiserefusjonshåndtering, placing it at v1.0.

  • docs/source/likeperson.md · line 68
    Kvitteringsbilde for utlegg over 100 kr (HLF).
  • docs/source/likeperson.md · line 69
    Automatisk godkjenning under 50 km / uten utlegg, manuell attestering ellers (HLF).

Responsibilities

  • Compress captured images to reduce bandwidth and storage costs
  • Queue images in local offline storage when network is unavailable
  • Upload queued images automatically when connectivity is restored
  • Link confirmed cloud storage URLs to the corresponding expense record
  • Report upload progress and final status to calling components

Interfaces

uploadReceipt(asset: ImageAsset, expenseId: string): Promise<ReceiptUploadResult>
queueForOfflineUpload(asset: ImageAsset, expenseId: string): void
flushOfflineQueue(): Promise<UploadQueueResult>
getUploadStatus(expenseId: string): UploadStatus

Related Data Entities (1)

Data entities managed by this component