diff --git a/requirement/phase4-customer-flow-plan.md b/requirement/phase4-customer-flow-plan.md index ad325ca..ea9c2dd 100644 --- a/requirement/phase4-customer-flow-plan.md +++ b/requirement/phase4-customer-flow-plan.md @@ -1,11 +1,26 @@ # Phase 4 — Implementation Plan -> **Status (2026-05-10):** Stages 0–8 are code-complete and committed -> on master (commits `4ada7c9` through `862fc35`, plus the pre-Phase-4 -> `4680c36` OTP test infrastructure). `flutter analyze` clean across -> both apps; backend Vitest 15/15. **Stage 9 (test sweep) is -> operator-driven and in progress** — see "Post-Stage-8 corrections" -> below for fixes applied during the visual sweep. +> **Status (2026-05-18):** Stages 0–10 + the §4 returning-user payment +> migration (Stages 5.1 / 5.3 / 5.4) are code-complete on master. Latest +> milestones: +> +> - Pricing relational migration (commit `1c9d81d`). +> - §4 payment-before-pair for returning users (commit `e09f76c`): +> bestie-history row tap now routes through the full QRIS multi-screen +> flow before pairing, for both targeted (lama) and blast (baru / +> cari-bestie-lain) branches. Legacy `/payment` route + screen retired. +> - Maestro suite (commits `e09f76c` + `93fa5f1`): seven flows +> `ts-01..ts-07` covering every §4 branching point plus the §2 +> "existing user with name skips set-name" edge. All green end-to-end +> against a debug APK rebuilt with the new code; shared onboarding +> prelude under `.maestro/subflows/`. New backend `_test` endpoints +> for offline/online/seed/accept fixtures (`/internal/_test/{force-mitra-{offline,online},reset-all-mitras-online,accept-latest-pending,seed-customer}`). +> - `/internal/_test/force-pairing-timeout` now branches targeted-vs-blast +> so the targeted-fail-post-payment path fires `RETURNING_CHAT_TIMEOUT` +> (drives the BestieOfflinePopup → fallback-to-blast UX). +> +> Older status notes for stages 0–8 preserved in +> "Post-Stage-8 corrections" below. > See [phase4-customer-flow.md](phase4-customer-flow.md) for the PRD, > [flow_customer.md](flow_customer.md) for the source-of-truth flow,