Files
baya-monorepo/docs/status/backlog-closed.md
T
2026-08-02 18:08:40 +03:30

12 KiB

Backlog — closed items

Last verified: 2026-08-02 against commit b876490.

Items confirmed done during phase 4's reconciliation, with what closed them. This is what keeps backlog.md's open count honest — an item only leaves this file if later evidence proves it regressed.


Hardening ledger (3 of 18 items — see backlog.md for the 11 still open + 4 partially-fixed)

Origin Item Closed by
H-02 isTokenAlive could never read the real token (JWE) — treated every session as dead. baa3cc6 ("manual improvement 1") — a well-formed 5-part JWE is now treated as alive without decoding.
H-03 Anonymous visitor to a private shell hit an infinite splash screen. baa3cc6useRoleHydration now has an explicit unauthenticated status; RoleGuard redirects to /login on it.
H-12 Raw stack-trace error boundary; no route-level error pages. 370c1be (ui-phase-1) + d33568b (ui-phase-12) — branded ErrorBoundary with retry, plus error.tsx/global-error.tsx.

REQ ledger — delivered (28 of 67; see backlog.md for the remaining 39 open/partial/deferred)

REQ Item Evidence
REQ-001 ApiResult envelope, camelCase casing, Paginated shape ApiResult.cs, PagedResult.cs
REQ-002 codeLength/expiresInSeconds on OTP request result RequestOtpResult.cs:8
REQ-003 Machine-readable OTP failure codes + retryAfterSeconds VerifyOtpCommand.Handler.cs:43,58
REQ-005 relation/conditions on PatientDto Patient.cs:28,33
REQ-006 Multipart avatar-upload endpoint (nurse + customer) UploadCustomerAvatarCommand.cs, UploadNurseAvatarCommand.cs
REQ-007 Customer name + preferred-language update UpsertCustomerProfileCommand.cs
REQ-008 Client map-pin lat/long on address create/update CreateAddressCommand.cs:21, UpdateAddressCommand.Handler.cs:62-71
REQ-009 provinceId on CustomerAddressDto CustomerAddressDto.cs:12
REQ-010 Pagination param name confirmed (pageSize) PagedResult.cs:4
REQ-011 Nurse-facing structured credential-details endpoint NurseVerificationController.cs:47-51
REQ-012 Search enrichment + public nurse-profile aggregate NurseSearchResultDto.cs:21-23, NursesController.cs:33-35
REQ-013 Variant price on BookingRequestDto BookingRequestDto.cs:20-21,45
REQ-014 variantLabel+patientAge on nurse-inbox list DTO BookingRequestListItemDto.cs:23
REQ-015 Booking/session/EVV enum wire codes confirmed BookingStatus.cs:11-30
REQ-016 Checkout summary read BookingRequestsController.cs:64-66
REQ-017 bookingId on converted request BookingRequestDto.cs:49
REQ-018 Invoice reachable right after capture (auto-issue) ConfirmPaymentAndPostLedgerCommand.Handler.cs:98
REQ-019 Customer-initiated cancellation + refund BookingsController.cs:67-71
REQ-020 Pre-cancel policy preview BookingsController.cs:74-77
REQ-021 Refund lookup-by-booking + fee-leg decomposition RefundsController.cs:29
REQ-023 BNPL eligibility accepts D3 KYC inputs CheckBnplEligibilityQuery.cs:21-23
REQ-025 Nurse earnings balance + list + detail + failureReason NursePayoutsController.cs:27-47
REQ-026 Review eligibility + my-review-for-booking reads BookingReviewsController.cs:33-41
REQ-027 Family care record + record-access reads PatientCareRecordsController.cs:44-59
REQ-028 Ticket inbox enrichment + message idempotency MessagingProjections.cs:13,16-17,62
REQ-029 updatedAt/updatedBy on PlatformConfigDto PlatformConfigDto.cs:11-12
REQ-030 Audit-trail actor/action/date-range filters GetAuditTrailQuery.cs:8-15
REQ-037 tagCodes on the moderation-queue DTO ReviewProjections.cs:37-48

Note: REQ-029/030's server work is closed, but client/src/services/admin/constants.ts still cites both as reasons the admin mock stays primary — a small residual client cleanup, not tracked separately (fold into whichever admin-mock item is next touched).

REQ ledger — obsolete (1)

REQ Item Reason
REQ-004 Confirm multi-role disambiguation (activeRole?) on /me Resolved by product decision in refinement-phase-2: the client owns active-role choice; no MeResult change was ever needed.

Manual-testing iterations 1 & 2 (19 of 20 bullets — 1 partially-fixed, see backlog.md BL-217)

Origin Item Closed by
iteration-1 #1 Login card / all Papers had too large a border radius theme.ts:76-84, tokens.css:46-51
iteration-1 #2 Login-page options should move inside the card AuthCard.tsx:8-33, PhoneStep.tsx:100-117
iteration-1 #3 No top bar needed on the login page PublicLayout.tsx:8-14
iteration-1 #4 Language/theme switches should live only in Settings PublicLayout.tsx:11-13, SettingsPanel.tsx:10-16
iteration-1 #5 Icon set should be modernized with semantic mapping AppIcon/config.ts:1-19 — MUI Icons replaced with Lucide
iteration-1 #6 Default route should resolve by role, not spin forever RoleGuard.tsx:34-38, RoleRouter.tsx:31-46
iteration-1 #7 React-child console error on phone submit OtpStep.tsx:104-115 + regression test richText.test.tsx
iteration-1 #8 OTP input spacing broken in fa locale OtpInput.tsx:119-127gap not RTL-mirrored spacing
iteration-1 #9 Nurse dashboard needed a full visual refactor NurseDashboardScreen.tsx:28-45
iteration-1 #10 Replace drawer nav with a bottom navbar NurseLayout.tsx:11-26, BottomBar.tsx:18-40
iteration-1 #11 Each nav group needs a summary root page NursePracticeScreen.tsx:13-18, NurseFinanceScreen.tsx:10-15
iteration-1 #12 Horizontal scroll present on nurse dashboard AppFrame.tsx:31-33,96-103 — structurally disabled
iteration-1 #13 App should be phone-width at every viewport layout/config.ts:5-14APP_FRAME_MAX_WIDTH=480
iteration-2 #1 Nurse greeting section useless; card borders looked bad NurseDashboardScreen.tsx:38-41, AccentCard.tsx:15-21
iteration-2 #2 Bottom nav needed a better, floating form BottomBar.tsx:22-34,93-101, layout/config.ts:37-44
iteration-2 #3 No easy way to reach the nurse requests page NurseLayout.tsx:16-21,39-44 — now a tab with a badge
iteration-2 #4 Theme-mode toggle buttons had no gap ThemeModeSetting.tsx:60-75
iteration-2 #5 /nurse/verification and /nurse/profile forms were an undifferentiated list nurse/profile/page.tsx:68-80, FormSection.tsx:26-40
iteration-2 #6 /nurse/services had the same forms problem VariantBuilder.tsx:1-70 — react-hook-form + StepperHeader wizard

Report follow-ups confirmed completed by a later phase (curated — the notable ones)

Verification method: cross-referenced against the later phase's own "What was built" section, not re-traced against current code (these predate the flow-gap sweep and were folded in only where a later report's own claim is unambiguous). Treat as strong evidence, not the same rigor as the code-verified items above.

Origin Item Closed by
backend-phase-0 follow-up Extend audit interceptor to write audit_logs; evolve schema; add IHolidayCalendar seed backend-phase-1
backend-phase-0 follow-up ISmsSender seam + auth/OTP REST surface + rate-limit policies backend-phase-2
backend-phase-0 follow-up WebApplicationFactory integration-test project backend-phase-2 (Baya.Test.Api)
backend-phase-2 follow-up Profiles/patients/addresses/nurse bank accounts; /me completion flags read real tables backend-phase-3
backend-phase-2 follow-up Shahkar/KYC populate NationalId; /me surfaces real nurseVerificationStatus backend-phase-6
backend-phase-3 follow-up customer_addresses+nurse_service_areas geography + geocoder backend-phase-4
backend-phase-3 follow-up is_verified flip transaction; Shahkar/KYC; bank-ownership step coupling backend-phase-6
backend-phase-3 follow-up average_rating/total_reviews aggregate recompute backend-phase-14 (total_completed_bookings recompute unconfirmed — see BL-245-adjacent residue)
backend-phase-4 follow-up nurse_search_index fan-out wired to service-area add/remove backend-phase-7
backend-phase-4 follow-up EVV distance check consuming address lat/long backend-phase-9
backend-phase-5 follow-up nurse_search_index, INurseSearch, search query, index fan-out backend-phase-7
backend-phase-5 follow-up booking_requests.variant_snapshot_json persistence backend-phase-9 (not b8 as originally planned)
backend-phase-6 follow-up Search reads nurse_profiles.is_verified for is_searchable backend-phase-7
backend-phase-7 follow-up Search results feed the booking flow; required_caregiver_gender capture backend-phase-8
backend-phase-8 follow-up accepted_awaiting_payment → real bookings row on capture backend-phase-9/10
backend-phase-8 follow-up Stage-2 encrypted booking_care_instructions backend-phase-9
backend-phase-8 follow-up Three-amount split, snapshots, sessions, EVV, dispute window backend-phase-9
backend-phase-9 follow-up Real card capture replacing IPaymentCaptureSimulator backend-phase-10
backend-phase-9 follow-up Reviews-on-completed-booking; partner_center_id wiring backend-phase-14, backend-phase-15
backend-phase-11 follow-up Real IBnplProvider (beyond the b11 revert-only stub) backend-phase-12
backend-phase-11 follow-up Clawback netting/recovery + real INursePayoutStatus backend-phase-13
backend-phase-12 follow-up settled_at-gates-payout coupling flag (require_bnpl_settlement_for_payout) backend-phase-13 (shipped, default off)
backend-phase-14 follow-up Ticket system + partner centers backend-phase-15
frontend-phase-5 follow-up 3 Admin verification review queue (pass/reject, doc viewer) frontend-phase-15
frontend-phase-10 follow-up 1 Admin refund console (RefundPanel) frontend-phase-15
frontend-phase-12 follow-up 2 Admin payout console (/admin/payouts) frontend-phase-15
frontend-phase-13 follow-up 2 Review moderation console (/admin/reviews) frontend-phase-15
frontend-phase-14 follow-up 1 Admin global ticket queue + internal-note composer frontend-phase-15
frontend-phase-14 follow-up 2 Support-alert worklist, partner-center console, audit viewer frontend-phase-15
ui-phase-0/1 follow-up Core primitives (EmptyState/ErrorState/PageHeader/<Money>/Jalali picker) ui-phase-1
ui-phase-0/1 follow-up App-wide motion pass consuming --bal-motion-* tokens ui-phase-12
ui-phase-3 follow-up Skip-onboarding («بعداً تکمیل می‌کنم») ui-phase-4
ui-phase-4 follow-up Public/guest storefront + landing page ui-phase-13
ui-phase-4/5 follow-up Zero-case copy sweep; continue_payment CTA string sweep ui-phase-12
ui-phase-7 follow-up 1 DashboardActivationSlot's full "go live" checklist content ui-phase-8
ui-phase-8 follow-up Coverage map visualization ui-phase-9
handoff-after-refinement-phase-0 No USE_*_MOCK flag had been flipped yet refinement-phase-4 (14 of 22 domains flipped to real)

Not included above (checked and found still genuinely open, or not confirmed by a later report): support_alerts FK constraints (BL-not-filed — low-priority schema hygiene, see decisions.md), region bulk-import feed, SuspendNurse/ResolveSupportAlert/FlagConcern admin actions (BL-245), and everything else already carried into backlog.md's Deferred section.