feat: Form integration, tier gating, and receipt display (#16) #153
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 #16
Summary
Integrate maintenance receipt OCR into
MaintenanceRecordFormwith tier gating, auto-populate form fields from accepted OCR results, and display linked receipt on existing maintenance record components.Scope
MaintenanceRecordForm(tier-gated)useTierAccess('maintenance.receiptScan')with lock icon + upgrade dialog for non-ProsetValue()(React Hook Form)receiptDocumentIdwhen creating maintenance recordMaintenanceRecordEditDialogMaintenanceRecordsListrowsFiles
frontend/src/features/maintenance/components/MaintenanceRecordForm.tsx(MODIFY - add scan button, wire OCR)frontend/src/features/maintenance/components/MaintenanceRecordEditDialog.tsx(MODIFY - show linked receipt thumbnail + view button)frontend/src/features/maintenance/components/MaintenanceRecordsList.tsx(MODIFY - show receipt indicator on list rows)frontend/src/features/maintenance/api/maintenance.api.ts(MODIFY - add receiptDocumentId to create payload)frontend/src/core/config/feature-tiers.ts(MODIFY - add maintenance.receiptScan feature key)Technical Notes
CameraCapturecomponentmappedFieldsfrom the hook'sacceptResult()callback viasetValue()callsMaintenanceRecordEditDialog: thumbnail + "View Receipt" button whenreceiptDocumentexistsMaintenanceRecordsList: small icon on rows with linked receiptsAcceptance Criteria
Milestone: Form Integration, Tier Gating, Receipt Display (#153)
Phase: Execution | Agent: Frontend Agent | Status: PASS
Changes Made
frontend/src/features/maintenance/types/maintenance.types.tsreceiptDocumentIdtoMaintenanceRecordandCreateMaintenanceRecordRequest, addedReceiptDocumentMetainterface, addedreceiptDocumenttoMaintenanceRecordResponsefrontend/src/features/maintenance/components/MaintenanceRecordForm.tsxuseMaintenanceReceiptOcrhook +CameraCapture+MaintenanceReceiptReviewModal, auto-populate viasetValue(), upload receipt as document on submitfrontend/src/features/maintenance/components/MaintenanceRecordEditDialog.tsxfrontend/src/features/maintenance/components/MaintenanceRecordsList.tsxReceipticon on rows with linked receiptsImplementation Notes
useTierAccess('maintenance.receiptScan')withReceiptCameraButtonlocked state +UpgradeRequiredDialog(mirrors fuel log pattern)documentsApi.download(), shows responsive layout with "View Receipt" buttonmaintenance.receiptScanalready present from M2Verification
npx tsc --noEmit)anytype warnings)06ff810on branchissue-16-maintenance-receipt-upload-ocrVerdict: PASS | Next: QR post-implementation review