feat: Backend OCR receipt proxy endpoint (#129) #130
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Relates to #129
Milestone 1: Backend OCR Receipt Proxy Endpoint
Add backend proxy endpoint for receipt-specific OCR extraction that calls the existing Python
/extract/receiptendpoint.Files
backend/src/features/ocr/domain/ocr.types.tsbackend/src/features/ocr/external/ocr-client.tsbackend/src/features/ocr/domain/ocr.service.tsbackend/src/features/ocr/api/ocr.controller.tsbackend/src/features/ocr/api/ocr.routes.tsRequirements
ReceiptExtractionResponsetype withreceiptType,extractedFields,rawText,processingTimeMsOcrClient.extractReceipt()method that POSTs to Python/extract/receiptwith optionalreceipt_type=fuelform fieldocrService.extractReceipt()method with file validation (10MB max, image types only)OcrController.extractReceipt()handler with file upload, validation, error mappingPOST /api/ocr/extract/receiptroute with auth middlewareAcceptance Criteria
Tests
backend/src/features/ocr/tests/unit/ocr-receipt.test.tsMilestone: Backend OCR Receipt Proxy Endpoint
Phase: Execution | Agent: Feature Agent | Status: PASS
Changes Made
Types (
ocr.types.ts):ReceiptExtractionResponsewithreceiptType,extractedFields,rawText,processingTimeMs,errorReceiptExtractRequestwithfileBuffer,contentType, optionalreceiptTypeClient (
ocr-client.ts):extractReceipt()method that POSTs to Python/extract/receiptreceipt_typeform field for specialized fuel extractionService (
ocr.service.ts):extractReceipt()with file validation: 10MB max, image types only (JPEG, PNG, HEIC, HEIF)SUPPORTED_IMAGE_TYPESconstant separate from generalSUPPORTED_TYPESController (
ocr.controller.ts):extractReceipt()handler with multipart file upload, content type validation, error mappingreceipt_typeform field from multipart dataRoutes (
ocr.routes.ts):POST /api/ocr/extract/receiptwith auth middlewareBarrel (
index.ts):ReceiptExtractionResponsetypeTests
9 unit tests in
ocr/tests/unit/ocr-receipt.test.ts:Verification
e0e578aVerdict: PASS | Next: Sub-issue complete, ready for parent PR