Build exchange workspace and shared transaction services (#28)

This commit is contained in:
Stephan D committed 2026-09-12 12:01:36 +02:00
1 parent 52b7135eda
commit c496da8a55
48 files changed
+4757 -120

No files matched your search

+39
View File
@@ -195,3 +195,42 @@ essential information, accessibility, and recovery. Documentation only.
Validation: skill-creator `quick_validate.py` passed in an isolated environment
with PyYAML (the system Python lacked it); `git diff --check` passed. No runtime
tests were needed. The PR is not merged.
## Exchange workspace — task #28
- Branch `workspace-28`, stacked on `limits-22` / PR #23. Merge KYC #21 first,
then limits #23, then retarget this workspace contribution to main. The approved
plan from #24/#25 is included and updated for the user's available-only direction.
- Implemented Accounts, Activity/detail, Limits and Settings in a responsive
go_router shell, with top-up, exchange and payout input/review/status flows.
One action group follows the selected currency; all colors use theme roles.
Only available balances are displayed. Status explains credit timing, outgoing
amount plus fee, completion and full return after failure.
- Shared `sxchnge_wallet` service/providers own coherent demo balances, quotes,
idempotent submissions, reconciliation, history, account language and live
snapshot refresh. The limits adapter reuses the KYC DTO/mapper and refreshes
usage when operations change. Widgets consume provider models.
- Language is in account settings, with failed-save feedback and retry. Public
auth and verified-email screens enter the workspace. KYC remains optional;
the demo service enforces its basic/verified outgoing caps at submission.
- UX review: EN/RU at 320px with 1.6 text scaling; available-only presentation;
field preservation after errors; explicit draft discard; quote expiry;
loading/stale/empty states; operation outcome explanations; accessible labels,
semantic status announcements and focus after quote/errors. Browser walkthrough
verifies quote amounts and service-confirmed credit with the exchange handoff.
Native mobile and dedicated VoiceOver/TalkBack testing remain release QA.
- Measurement review: typed draft/quote/submission/settlement steps with scoped
journey IDs, safe failure enums, simulated flag and deduplicated terminal
outcomes. No financial amounts, recipients or account IDs in events. Pending
app closure is not draft abandonment. Real PostHog delivery and cross-session
server outcomes remain integration work.
- Validation passed: `make test-frontend` (115 tests), `flutter analyze` in app,
sxchnge_wallet, sxchnge_analytics and sxchnge_kyc; format check of all 36 changed
Dart files; `flutter build web`; `git diff --check`. Review fixes included
narrow Russian layouts, limit-provider typing, automatic pending refresh,
single-use quotes and ambiguous-response recovery. No security scan requested.
- Demo limits: opening EUR 75, fixed rates/fees and three currencies, no real
payment methods/bank validation/storage/auth enforcement. Account preferences,
history and balances reset on reload. No receipt export, date pagination,
notification preferences or security settings beyond an honest capability note.
Backend adapters must supply these before production use; see the wallet README.