31 lines
1.4 KiB
Markdown
31 lines
1.4 KiB
Markdown
# Index: Post-order (aftersales, reviews)
|
|
|
|
Domain design: `docs/domains/aftersales-reviews.md`. Specs:
|
|
`openspec/specs/aftersale/`, `reviews/`.
|
|
|
|
## Backend (`apps/api`)
|
|
|
|
| File | Holds |
|
|
|---|---|
|
|
| `src/modules/aftersale/service.rs` | state machine, refund completion (ledger-backed), arbitration, messages |
|
|
| `src/modules/aftersale/handlers.rs` | `/aftersales*`, `/shop/aftersales*`, `/admin/aftersales*` |
|
|
| `src/modules/review/service.rs` | create/reply/moderate, listing, rating summary, reviewable lines |
|
|
| `src/modules/review/handlers.rs` | `/products/{id}/reviews*`, `/me/reviewable`, `/reviews`, shop/admin routes |
|
|
| `migrations/0016_aftersales.sql` | aftersales + messages, `orders.refund_total_minor` |
|
|
| `migrations/0018_product_reviews.sql` | product_reviews |
|
|
| `tests/aftersales.rs`, `tests/reviews.rs` | integration coverage |
|
|
|
|
## Shared contract
|
|
|
|
`types.ts`: `Aftersale*`, `Review*`, `ReviewableItem`. `api.ts`: customer
|
|
aftersale/review methods, `shop.*` processing, `admin.*` arbitration/moderation.
|
|
|
|
## Frontends
|
|
|
|
- Mall: `pages/user/aftersales/{index,[id],apply}.vue`,
|
|
`pages/user/reviews.vue`, `pages/user/orders/[id].vue` (apply entry),
|
|
`pages/goods/[id].vue` (reviews tab); mock fixtures in `mock/api.ts`
|
|
(persisted `v6` state)
|
|
- Shop-admin: `pages/aftersales/{index,[id]}.vue`, `pages/reviews.vue`
|
|
- Admin: `pages/aftersales.vue`, `pages/reviews.vue`
|