From 61aca1da339459c8327c8ae84ce3e7c0684934ad Mon Sep 17 00:00:00 2001
From: oluwa1to9-web <270304166+oluwa1to9-web@users.noreply.github.com>
Date: Sun, 18 Oct 2026 15:48:37 -0500
Subject: [PATCH] feat(facility): scan-to-verify orders (#52) and payout ledger
with escrow terms (#53)
- #52 Scan-to-verify orders with device camera:
* Camera QR scanner with native BarcodeDetector API and fallback decoder
* Explicit camera media stream track teardown on unmount / screen exit
* Manual token entry fallback and permission denied handling
* 5 verified order states (valid, superseded, expired, fulfilled, not_eligible)
* Jump straight into fulfillment queue from valid orders
* Clear HTTP 429 rate-limit error surface against token enumeration
- #53 Facility payout ledger with escrow terms:
* Payout totals (held, released, refunded) across XLM and USDC
* BigInt-safe amount formatting (formatStroops) preventing IEEE 754 precision loss
* Plain-language escrow terms (releaser rules, refund deadline countdowns)
* Threat model T8 approaching deadline warnings (< 48h) on unfulfilled escrows
* Deep links to Stellar Expert testnet transaction explorer
* Filter by status and asset; cursor-paginated ledger
- Added tests for camera teardown, all 5 verification states, 429 rate limit,
totals calculations, deadline warnings, and explorer links.
- Updated ARCHITECTURE_ESSENTIALS.md Known assumptions and ROADMAP.md.
- Generated desktop and mobile screenshots.
---
ARCHITECTURE_ESSENTIALS.md | 17 +
ROADMAP.md | 9 +-
screenshots/facility-payments-desktop.png | Bin 0 -> 110307 bytes
screenshots/facility-payments-mobile.png | Bin 0 -> 65317 bytes
screenshots/facility-verify-desktop.png | Bin 0 -> 58385 bytes
screenshots/facility-verify-mobile.png | Bin 0 -> 52622 bytes
src/App.tsx | 18 +
src/components/Layout.tsx | 6 +
.../components/ManualTokenEntry.tsx | 62 +++
.../order-verify/components/OrderScanner.tsx | 76 ++++
.../components/OrderVerify.module.css | 380 ++++++++++++++++++
.../components/OrderVerify.test.tsx | 206 ++++++++++
.../components/OrderVerifyView.tsx | 118 ++++++
.../components/VerificationResultCard.tsx | 163 ++++++++
.../order-verify/hooks/useCameraQrScanner.ts | 146 +++++++
.../order-verify/hooks/useOrderVerify.ts | 17 +
.../FacilityPayoutLedger.module.css | 278 +++++++++++++
.../components/FacilityPayoutLedger.test.tsx | 190 +++++++++
.../components/FacilityPayoutLedger.tsx | 270 +++++++++++++
.../payments/hooks/useFacilityLedger.ts | 175 ++++++++
src/pages/FacilityDashboardPage.tsx | 6 +
src/pages/FacilityPaymentsPage.tsx | 28 ++
src/pages/FacilityTeamPage.tsx | 6 +
src/pages/OrderVerifyPage.tsx | 28 ++
src/services/order-verify-service.ts | 112 ++++++
src/services/payments-service.ts | 43 +-
src/types/models.ts | 80 ++++
27 files changed, 2432 insertions(+), 2 deletions(-)
create mode 100644 screenshots/facility-payments-desktop.png
create mode 100644 screenshots/facility-payments-mobile.png
create mode 100644 screenshots/facility-verify-desktop.png
create mode 100644 screenshots/facility-verify-mobile.png
create mode 100644 src/features/order-verify/components/ManualTokenEntry.tsx
create mode 100644 src/features/order-verify/components/OrderScanner.tsx
create mode 100644 src/features/order-verify/components/OrderVerify.module.css
create mode 100644 src/features/order-verify/components/OrderVerify.test.tsx
create mode 100644 src/features/order-verify/components/OrderVerifyView.tsx
create mode 100644 src/features/order-verify/components/VerificationResultCard.tsx
create mode 100644 src/features/order-verify/hooks/useCameraQrScanner.ts
create mode 100644 src/features/order-verify/hooks/useOrderVerify.ts
create mode 100644 src/features/payments/components/FacilityPayoutLedger.module.css
create mode 100644 src/features/payments/components/FacilityPayoutLedger.test.tsx
create mode 100644 src/features/payments/components/FacilityPayoutLedger.tsx
create mode 100644 src/features/payments/hooks/useFacilityLedger.ts
create mode 100644 src/pages/FacilityPaymentsPage.tsx
create mode 100644 src/pages/OrderVerifyPage.tsx
create mode 100644 src/services/order-verify-service.ts
diff --git a/ARCHITECTURE_ESSENTIALS.md b/ARCHITECTURE_ESSENTIALS.md
index 8532f87..ea649ec 100644
--- a/ARCHITECTURE_ESSENTIALS.md
+++ b/ARCHITECTURE_ESSENTIALS.md
@@ -172,6 +172,23 @@ Undo behaviour: start/complete are applied optimistically and can be reverted wi
- `GET /facilities/:facilityId/fulfillment-queue` → `FulfillmentQueueItem[]` — queue items with action attribution (`attribution: { action, performedByUserId, performedByName, performedByRole, timestamp, notes }`).
- `POST /facilities/:facilityId/fulfillment-queue/:itemId/action` (body: `{action: 'fulfilled' | 'rejected', notes?}`) → `FulfillmentQueueItem` — records the acting staff user's identity and role for PRD §7 audit trail.
+### Scan-to-verify orders with device camera (issue #52, docforum-core#71)
+- `POST /facilities/me/verify-order` (body: `{ token: string }`) → `VerifyOrderResponse`
+ - Token verification endpoint returning 5 explicit states: `valid`, `superseded`, `expired`, `fulfilled`, `not_eligible`.
+ - Minimal order summary for fulfillment verification: `orderId`, `orderType`, `patientName`, `medicationOrTest`, `instructions`, `issuedAt`, `expiresAt`, `supersededBy`, `fulfilledAt`, `fulfilledByFacility`.
+ - Rate-limiting (HTTP 429) protection against brute-force token enumeration; error surfaced clearly in UI with retry guidance.
+ - Device camera QR scanning using `BarcodeDetector` API with fallback; strict camera media stream track teardown on unmount or screen exit.
+ - Manual token entry fallback.
+
+### Facility payout ledger & escrow terms (issue #53, docforum-core#90)
+- `GET /facilities/:facilityId/payout-ledger?cursor=&status=&asset=` → `FacilityLedgerPage`
+ - Cursor-paginated ledger of on-chain escrow deposits, releases, and refunds.
+ - Totals breakdown for held, released, and refunded funds separated by asset (`XLM` vs `USDC`).
+ - Strict BigInt-safe amount formatting for Stellar stroops (7 decimals: 1 XLM/USDC = 10,000,000 stroops).
+ - Escrow terms in plain language (releaser condition, refund deadline countdown).
+ - Approaching deadline warnings: prominent alerts when held escrow refund deadline is < 48 hours away and order is unfulfilled (Threat Model T8 compliance).
+ - Direct explorer links to Stellar testnet transactions (`https://stellar.expert/explorer/testnet/tx/...`).
+
## Roadmap / status
See `ROADMAP.md` in this repo, and Phase 7 in `docforum-core`'s
`ROADMAP.md` for the original (pre-split) frontend phase this was carved
diff --git a/ROADMAP.md b/ROADMAP.md
index 896bcca..e1d6738 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -59,8 +59,10 @@ real API" (no refresh-on-reload flow).
- [x] Doctor practice insights: utilisation, no-shows and turnaround. Tracked as [issue #50](https://github.com/DocForum/docforum-web/issues/50) (High, 200 pts) — `src/features/insights/`, `DoctorPracticeInsightsPage`, slot utilisation by week, no-show/late-cancel rates, referral turnaround, message response time; charts with accessible table alternatives; date range selector; small-sample caveats; doctor-only data (no peer comparisons).
## Phase W4 — Facility core flow
-**Fully scoped into issues #8 and #51.**
+**Fully scoped into issues #8, #51, #52, and #53.**
- [x] Facility staff accounts: invite, list and remove. Tracked as [issue #51](https://github.com/DocForum/docforum-web/issues/51) (High, 200 pts) — `src/features/facility-team/`, `FacilityTeamPage`, owner staff invite by email with fixed roles, pending invites with resend/revoke, member removal with backend session revocation and last-owner protection, read-only staff view, and fulfillment queue action attribution (PRD §7).
+- [x] Scan-to-verify orders with the device camera. Tracked as [issue #52](https://github.com/DocForum/docforum-web/issues/52) (High, 200 pts) — `src/features/order-verify/`, `OrderVerifyPage` (`/facility/verify`), camera QR scanning via BarcodeDetector API with JS fallback, verified order states (`valid`, `superseded`, `expired`, `fulfilled`, `not_eligible`), instant jump into fulfillment queue, manual token entry fallback, camera permission and stream teardown, and 429 rate limit error handling.
+- [x] Facility payout ledger with per-order escrow status and terms. Tracked as [issue #53](https://github.com/DocForum/docforum-web/issues/53) (High, 200 pts) — `src/features/payments/`, `FacilityPaymentsPage` (`/facility/payments`), cursor-paginated ledger, escrow totals cards (held, released, refunded), BigInt-safe amount formatting for Stellar stroops across assets (XLM vs USDC), plain-language escrow terms with releasers and refund countdowns, approaching deadline warnings (< 48h), and Stellar Expert testnet transaction explorer links.
- [ ] Fulfillment queue. Tracked as [issue #8](https://github.com/DocForum/docforum-web/issues/8) (Medium, 150 pts).
- [ ] Mark fulfilled/rejected, attach lab result. Folded into issue #8 above.
@@ -356,5 +358,10 @@ real API" (no refresh-on-reload flow).
- `#50 Doctor practice insights`: private insights page (`/doctor/insights`) with weekly slot utilisation, no-show and late-cancellation rates, referral acceptance turnaround, and messages response time. Includes SVG charts paired with accessible semantic `
` alternatives, date range selector (presets + custom), clearly labelled small-sample caveats, and strict peer-comparison suppression (doctor's own confidential data only). Wired into `DoctorDashboardPage`, command palette (`⌘K`), and navigation.
- `#51 Facility staff accounts & fulfillment attribution`: dedicated team management page (`/facility/team`) with member list, role assignment (`owner` vs `staff`), email invitations, resend/revoke pending invites, member removal with backend session revocation warning, and last-owner deletion protection. Enforced read-only view and action suppression for staff members. In the fulfillment queue (`/facility`), added action attribution display showing which staff member dispensed/fulfilled each order for PRD §7 audit trail.
- Updated `ARCHITECTURE_ESSENTIALS.md` "Known assumptions" and `ROADMAP.md`. 24 test files and 112/112 tests passing; typecheck and build green.
+- 2026-10-18 — Built Phase W4 Scan-to-verify orders (#52) and Facility payout ledger with escrow terms (#53):
+ - `#52 Scan-to-verify orders with device camera`: dedicated verification page (`/facility/verify`) enabling facility staff to scan order QR codes via device camera or enter tokens manually. Uses native `BarcodeDetector` API with fallback; guarantees complete media stream track teardown on screen unmount/exit. Dispatches to `POST /facilities/me/verify-order` and cleanly displays all 5 result states (`valid`, `superseded`, `expired`, `fulfilled`, `not_eligible`) alongside minimal clinical order summaries. Valid results feature an immediate CTA to jump into fulfillment (`/facility?orderId=...`). Surfaces HTTP 429 rate-limit protection against enumeration.
+ - `#53 Facility payout ledger with escrow terms`: dedicated payments page (`/facility/payments`) displaying held, released, and refunded totals for both XLM and USDC. Uses BigInt-safe math (`formatStroops`) for Stellar 7-decimal stroop precision. Renders cursor-paginated escrow ledger with plain-language terms (releaser rules and refund deadline countdowns) adhering to threat model T8. Prominently flags approaching refund deadlines (< 48h) on unfulfilled orders. Integrates direct deep links to Stellar Expert testnet explorer for funding, release, and refund transactions.
+ - Updated `ARCHITECTURE_ESSENTIALS.md` "Known assumptions" and `ROADMAP.md`. 26 test files and 124/124 tests passing; typecheck and build green. Captured desktop and mobile screenshots into `screenshots/`.
+
diff --git a/screenshots/facility-payments-desktop.png b/screenshots/facility-payments-desktop.png
new file mode 100644
index 0000000000000000000000000000000000000000..d71add160a5dc69087fb9115846691879f7f8c1d
GIT binary patch
literal 110307
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