Implements, verifies, and archives the three remaining Wave 2 changes from openspec/MIGRATION-PLAN.md. - add-wallet-settlement (P3): demo recharge, guarded withdrawal freeze and one-time admin review, paginated own fund entries, idempotent per-shop weekly/monthly settlement statements with commission rate and one-time payout confirmation. - add-merchant-onboarding (P5): personal/enterprise applications with one live application per user, guarded review with mandatory rejection reason, and transactional shop + owner provisioning returning one-time credentials; mall onboarding/status pages and an admin review console. - add-membership-messaging (P7): platform member levels, append-only growth accrual on order completion with guarded one-way leveling, order/shipment/ refund system messages with unread/read state and soft deletion, plus the mall header unread badge. Backend: migrations 0019-0023, new wallet, settlement, merchant_onboarding, membership and messaging modules, event hooks in order/fulfillment/aftersale, and integration suites for each. Shared contract extended and all three frontends updated; code indexes, domain docs, backend guidelines and the migration tracker synced. Verification: cargo test -p vmall-api green twice consecutively; mall, admin and shop-admin builds pass; browser smoke on every new surface; openspec validate --all --strict green (33 passed). The three changes share the @vmall/shared contract, the mall mock adapter and per-app locale/nav files, so they are committed together to keep every commit buildable.
2.1 KiB
2.1 KiB
Index: Platform (identity, accounts, shops, content, currency, addresses)
Domain design: docs/domains/platform.md. Specs: openspec/specs/auth/,
customer-accounts/, wallet/, settlement/, merchant-onboarding/,
membership/, messaging/, store-directory/, storefront-content/,
currency/, address-book/, rbac/.
Backend (apps/api)
| Module | Holds |
|---|---|
modules/identity/ |
register/login/me; admin user role assignment |
modules/account/ |
customer_accounts ledger; credit/debit/freeze/release, ensure_monetary_account |
modules/wallet/ |
demo recharge, guarded withdrawal freeze + one-time admin review, paginated own fund entries |
modules/settlement/ |
idempotent per-shop weekly/monthly statements, commission-rate setting, one-time payout confirmation |
modules/shop/ |
shop CRUD/status, profiles, PUT /shop/profile merchant self-write |
modules/merchant_onboarding/ |
merchant applications (personal/enterprise), guarded review, transactional approval provisioning |
modules/membership/ |
member level catalog, growth accrual ledger, one-way level upgrade, derived status |
modules/messaging/ |
event-driven system messages, unread/read state, soft delete, unread count |
modules/content/ |
four home-content kinds, whole-list replacement |
modules/currency/ |
currency registry, rates, convert endpoint |
modules/address/ |
customer address book |
src/auth.rs |
AuthUser, require, own_shop, require_shop |
src/error.rs |
ApiError envelope, unique_conflict |
src/money.rs |
convert_minor |
Tests: tests/auth.rs, tests/accounts.rs, tests/wallet.rs,
tests/settlement.rs, tests/merchant_applications.rs, tests/membership.rs,
tests/messaging.rs, tests/shops.rs, tests/content.rs,
tests/addresses.rs, tests/catalog.rs (currency too).
Frontends
- Mall:
pages/login.vue,pages/register.vue, header/footer shell inlayouts//app.vue,pages/user/addresses.vue - Shop-admin:
pages/shop-profile.vue - Admin:
pages/users.vue,pages/shops.vue,pages/content.vue,pages/brands.vue,pages/currencies.vue,pages/member-levels.vue