Files
vmall/docs/code_index/post-order.md
T

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`