feat: wave 2 migration (P3, P5, P7 openspec changes)
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.
This commit is contained in:
@@ -2,7 +2,9 @@
|
||||
|
||||
## Purpose
|
||||
The merchant console for managing a shop's products and fulfilling its orders.
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement: Merchant product management
|
||||
Shop users SHALL manage only their own shop's products: create/edit bilingual content, manage SKUs, publish/unpublish with immediate effect on the storefront.
|
||||
|
||||
@@ -131,3 +133,24 @@ Shop users SHALL list only their own shop's reviews in shop-admin through the sh
|
||||
- **WHEN** a merchant opens a review that already carries their shop's reply
|
||||
- **THEN** no reply submission is offered and other shops' reviews are unreachable
|
||||
|
||||
### Requirement: Merchant settlement statements
|
||||
Shop-admin SHALL list and open the signed-in shop's settlement statements — period, amount snapshot, and status — through the shared API contract, and allow manual generation for a closed period of the own shop. Shop-scoped pages SHALL never expose another shop's statements or their order/refund breakdown.
|
||||
|
||||
#### Scenario: statements list and detail
|
||||
- **WHEN** a merchant opens the settlement page
|
||||
- **THEN** only their own shop's statements are listed and each opens into its snapshot breakdown of orders, refunds, commission, and payable amount
|
||||
|
||||
#### Scenario: generation is idempotent in the UI
|
||||
- **WHEN** the merchant generates a statement for a period that already has one
|
||||
- **THEN** the existing statement appears without duplication
|
||||
|
||||
### Requirement: Shop-account withdrawal
|
||||
The shop owner SHALL view the shop account summary (available and frozen balance of the shop owner's account) and apply to withdraw from it through the shared API contract, seeing the request as pending until the platform reviews it.
|
||||
|
||||
#### Scenario: shop-account withdrawal freezes funds
|
||||
- **WHEN** the shop owner submits a withdrawal request from the shop-account page
|
||||
- **THEN** the summary reflects the frozen amount and the request lists as pending
|
||||
|
||||
#### Scenario: reviewed request reflects outcome
|
||||
- **WHEN** the platform rejects the shop owner's pending withdrawal
|
||||
- **THEN** the shop-account summary shows the amount returned to available balance and the request shows as rejected
|
||||
|
||||
Reference in New Issue
Block a user