Payment catalog (Phase 5.x — see requirement/phase5-payment-catalog-plan.md):
- New tables payment_method_groups + payment_methods with seed (3 groups,
10 methods; GoPay seeded inactive pending Xendit channel confirmation).
- payment-catalog.service.js with two-layer cache (60s in-process + 1h
Valkey) and config:invalidate pub/sub fanout. Mutator API + casing-
tolerant findActiveMethodByCode for downstream validation.
- App-facing GET /api/client/payment-methods returns pre-grouped JSON,
active-only, empty groups dropped server-side.
- POST /api/client/payment-requests now validates `method` against the
catalog (INVALID_PAYMENT_METHOD 422) and stamps
product_metadata.preferred_payment_code (upper-cased).
- Control-center /internal/payment-{groups,methods}{,/:id,/reorder}
endpoints (full CRUD + idempotent reorder). New Payment Catalog page
wired into the CC nav.
- Customer app renders the catalog as collapsible groups (first expanded)
via paymentCatalogProvider; QRIS-only hardcoded fallback on 5xx so
checkout never hard-fails. Replaces the hardcoded _PayMethod enum.
- 10 brand SVGs (~63KB) bundled in client_app/assets/payment_icons/ from
github.com/hafidznoor/idn-finlogos. Xendit's per-channel media-asset
pages were planned but found decommissioned during implementation —
switched to idn-finlogos with the standard "channels-we-accept"
trademark posture. See assets/payment_icons/README.md for the workflow
to add new methods.
- 16 vitest cases covering the service + cache; full backend suite green
(162/162).
Customer-app splash + register polish:
- Splash rewritten per figma S1: warm vertical gradient, two ImageFiltered
radial orbs, 96×96 rounded-square logo tile, "HaloBestie" + "kamu gak
harus ngerasain ini sendirian." Self-driving navigation via context.go
after a 2.5s post-frame timer (native Android splash burns ~1-1.5s
before Flutter paints — 1s timer yielded near-zero visible duration).
Router early-returns null for isSplash so it never moves us off /splash
on its own.
- 3-page onboarding carousel removed: user clarified the new splash
REPLACES that carousel. Dropped /onboarding route, OnboardingScreen,
onboardingDoneProvider + gating, dead splash_{1,2,3}.png + the
splash_chat_hebat.png Flutter asset. Phase 4 /onboarding/* subroutes
untouched; Android-native launch_background drawable left alone.
- Register screen (login-by-phone) polished: circular pink back button +
72×72 logo badge (same brandLogoBg pink as splash, Transform.scale 1.4
to fill the tile). Step-dots indicator removed.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
14 lines
4.1 KiB
XML
14 lines
4.1 KiB
XML
<svg width="80" height="18" viewBox="0 0 80 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<g clip-path="url(#clip0_3802_18151)">
|
|
<path d="M8.73161 17.4632C13.554 17.4632 17.4632 13.554 17.4632 8.73161C17.4632 3.90928 13.554 0 8.73161 0C3.90928 0 0 3.90928 0 8.73161C0 13.554 3.90928 17.4632 8.73161 17.4632Z" fill="#00AED6"/>
|
|
<path d="M8.73161 17.4632C13.554 17.4632 17.4632 13.554 17.4632 8.73161C17.4632 3.90928 13.554 0 8.73161 0C3.90928 0 0 3.90928 0 8.73161C0 13.554 3.90928 17.4632 8.73161 17.4632Z" fill="#00AED6"/>
|
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.8174 8.45967C13.7531 7.3509 12.8095 6.49976 11.7 6.54963H6.18455C5.98362 6.54963 5.82073 6.38674 5.82073 6.18581C5.82073 5.98488 5.98362 5.82199 6.18455 5.82199H11.7727C11.7425 5.06711 11.2277 4.4184 10.4994 4.21756C8.87117 3.93015 7.20521 3.93015 5.577 4.21756C4.65145 4.44555 3.95909 5.2158 3.83068 6.16034C3.57239 7.87395 3.57239 9.61658 3.83068 11.3302C4.02732 12.3276 4.81888 13.1004 5.82076 13.273C7.84189 13.524 9.8863 13.524 11.9074 13.273C12.8062 13.089 13.4863 12.3503 13.5956 11.4393C13.7765 10.457 13.8509 9.45798 13.8174 8.45967ZM12.0056 9.68209V10.0059C12.0056 10.2068 11.8427 10.3697 11.6418 10.3697C11.4409 10.3697 11.278 10.2068 11.278 10.0059V9.68209C11.1617 9.58018 11.0954 9.43286 11.0961 9.27826C11.0961 8.97686 11.3404 8.73253 11.6418 8.73253C11.9432 8.73253 12.1875 8.97686 12.1875 9.27826C12.1882 9.43286 12.1219 9.58018 12.0056 9.68209Z" fill="white"/>
|
|
<path d="M24.3658 13.0782C25.1069 14.1355 26.3393 14.7378 27.6288 14.6727C29.1494 14.6727 30.2679 13.7014 30.2679 12.3811V11.6848H30.231C29.3978 12.499 28.2604 12.9249 27.0973 12.858C25.2599 12.9107 23.5374 11.9665 22.5936 10.3892C21.6497 8.81182 21.6318 6.84759 22.5468 5.25335C23.4618 3.65911 25.1669 2.68372 27.0049 2.70304C28.1901 2.627 29.3551 3.0373 30.231 3.83926H30.2679V2.88638H32.8715V12.3449C32.8715 15.0941 30.69 17.0006 27.6288 17.0006C25.6237 17.11 23.6877 16.2511 22.4231 14.6912L24.3658 13.0782ZM30.1585 7.19392C30.1585 6.09394 28.9121 5.08563 27.5193 5.08563C25.7585 5.08563 24.5861 6.14936 24.5861 7.74391C24.5339 8.49941 24.8178 9.23942 25.362 9.76607C25.9062 10.2927 26.6551 10.5523 27.4085 10.4754C28.9306 10.4754 30.1585 9.52178 30.1585 8.33014V7.19392ZM39.6902 2.61139C42.8622 2.61139 45.1716 4.86606 45.1716 7.74391C45.1716 10.6218 42.8622 12.8764 39.6902 12.8764C37.7763 13.0019 35.9515 12.052 34.9565 10.4123C33.9614 8.7725 33.9614 6.71532 34.9565 5.07556C35.9515 3.43581 37.7763 2.48592 39.6902 2.61139ZM39.6902 4.99396C38.1741 5.0043 36.9525 6.23985 36.9593 7.75594C36.9662 9.27203 38.1989 10.4965 39.715 10.4932C41.2311 10.4899 42.4584 9.26002 42.4586 7.74391C42.493 7.00132 42.2117 6.27883 41.6843 5.75493C41.1569 5.23104 40.4325 4.95462 39.6902 4.99396ZM46.6382 2.88638H49.2418V3.7476H49.2788C50.1295 2.96525 51.258 2.55607 52.4124 2.61139C55.2074 2.66182 57.4483 4.93938 57.4534 7.73485C57.4584 10.5303 55.2257 12.8159 52.4309 12.8764C51.3276 12.9019 50.2505 12.5384 49.3882 11.8496H49.3512V16.7256H46.6382V2.88638ZM51.9918 5.01241C50.5606 5.01241 49.3512 6.02075 49.3512 7.12073V8.34861C49.3512 9.52178 50.5251 10.4931 52.0088 10.4931C53.5223 10.4884 54.7453 9.25772 54.7407 7.74426C54.7359 6.23081 53.5052 5.00772 51.9918 5.01241ZM62.568 6.80878C64.3459 6.57074 64.8774 6.31422 64.8774 5.81894C64.8774 5.17729 64.1995 4.79286 63.155 4.79286C62.0295 4.69756 61.0023 5.43641 60.7347 6.53379L58.1681 6.00227C58.5348 4.0226 60.5699 2.61139 63.0811 2.61139C65.922 2.61139 67.6828 4.05955 67.6828 6.42365V12.6014H65.2441V11.5384H65.2071C64.3805 12.4698 63.1679 12.9643 61.9257 12.8764C59.7811 12.8764 58.2974 11.7033 58.2974 9.9801C58.2975 8.16528 59.5069 7.23087 62.568 6.80878ZM65.0977 7.83557H65.0608C64.822 8.18376 64.309 8.38556 62.9901 8.6236C61.3942 8.91707 60.8271 9.22831 60.8271 9.79677C60.8271 10.3837 61.3032 10.6402 62.3293 10.6402C63.8883 10.6402 65.0977 9.92538 65.0977 8.99026V7.83557ZM72.5943 12.0699L68.1035 2.88638H71.0922L74.0425 9.22831H74.0794L76.9942 2.88638H80L73.2736 16.7256H70.2849L72.5943 12.0699Z" fill="black"/>
|
|
</g>
|
|
<defs>
|
|
<clipPath id="clip0_3802_18151">
|
|
<rect width="80" height="17.4632" fill="white"/>
|
|
</clipPath>
|
|
</defs>
|
|
</svg>
|