feat(reviews): order-line reviews with merchant reply and platform moderation (add-product-reviews)

This commit is contained in:
Chengdong Zhang
2026-09-24 16:38:05 +08:00
parent 473d19d089
commit c532f87b03
34 changed files with 2055 additions and 36 deletions
+11 -10
View File
@@ -70,11 +70,10 @@ fixed-data adapter as the required rollback implementation.
Recorded so the gap is explicit, not because all of them belong in scope:
- [ ] **Reviews / 评价** — no model; the mall presents none (review counts, the detail
page's review tab/summary/replies were removed in wave 6 rather than kept invented).
Missing: `order_comments` (order-item bound, rated, replyable), public read on product
pages, shop reply, admin moderation. Writing/moderating/displaying reviews is a feature
with its own lifecycle.
- [x] **Reviews / 评价** — implemented as `add-product-reviews`: order-item-bound reviews
with 1-5 ratings and bilingual content, one merchant reply, platform hide/delete
moderation, public paginated listing and SQL rating summary on product pages, and a
buyer-center pending-review list.
- [ ] **Distribution / 分销**, **cashes / 提现** — common B2B2C account modules; no mock,
no UI, no model here. Customer-account freeze/credit is the intended foundation.
Public money-log listing is not in `add-customer-accounts`. Deferred design notes below.
@@ -82,8 +81,10 @@ Recorded so the gap is explicit, not because all of them belong in scope:
the footer has no help links. No article model. Cheap version: static locale pages;
full version: admin-managed articles.
- [ ] **OAuth login, SMS/captcha** — common storefront plugins; here auth is email+password only.
- [ ] **Freight templates / 运费模板** — shop-side shipping-fee rules; checkout currently
charges no shipping at all.
- [x] **Freight templates / 运费模板** — implemented as `add-freight-templates`: shop-scoped
templates (by piece/weight, first+additional fees, free thresholds, region overrides),
server-side checkout fee computation with per-item snapshots, and a shipping-company
dictionary validated at ship time.
## Deferred designs from general B2B2C storefronts
@@ -98,9 +99,9 @@ transaction rules before implementation.
- [x] **Favorites** — implemented as `add-favorites` with explicit nullable product/shop
foreign keys, an exactly-one-target check, and one partial unique index per kind.
Do not revisit a polymorphic `target_id`/type pair.
- [ ] **Reviews / 评价** — a future review belongs to a fulfilled order item, not just a
product. Preserve an immutable rating/content snapshot, allow one shop reply, and make
public visibility and platform moderation explicit lifecycle states.
- [x] **Reviews / 评价** — shipped in `add-product-reviews` exactly as designed here:
order-item bound, immutable snapshot, one guarded shop reply, explicit visible/hidden
moderation states.
- [ ] **Distribution / 分销** — a future merchant activity may configure per-product levels,
but commissions must be created as order-item ledger entries and become payable only after
the order reaches its chosen settlement condition. Do not use floating commission rates or