feat(consignment): 建议价精准匹配璀璨数 + 限制璀璨不超过钻石数量
- 修复价格匹配:parseSpecsFromText 支持「璀」字缩写(1璀/2璀/3璀)与「无璀/0璀」, 避免生产规则被误判为 0 璀;suggestConsignmentPriceFromRules 增加 brillianceCount 精准对齐匹配,未配对应模板则返回空,解决同钻级多条规则全中并取最高价的问题 - 透传参数:路由与打手端服务均增加 brillianceCount 传递 - 限制璀璨不超过钻级: - 前端选项动态禁用:大于当前钻级的璀璨芯片置灰 - 钻级调小自动收敛:若原选璀璨大于新钻级,自动 clamp 至新钻级 - 默认值与联动:璀璨数默认 initialValue=0,queryKey 纳入璀璨,切换即刻带出对应建议价 - 前后端双重校验:前端表单 Validator 校验 + 后端提报硬拦截(brilliance_exceeds_diamond) - 后端 487 / 前端 54 测试全绿,docs/寄卖系统优化方案.md 记录批次 Z
This commit is contained in:
+20
-1
@@ -21,7 +21,8 @@
|
||||
| `632dddc4` | 上一轮:H5 渠道整体下线 + 凭据字段修复 + 状态机封闭(撤销守卫 / 库存绑定唯一性 / 生命周期解绑)+ 押金归属取台账 | 迁移 `079`、`consignment-*` 五个文件、`work-order-*` 三个仓库、两个前端面板 |
|
||||
| `5d11bf20` | 批次 C+D:指派部分成功补偿、凭证核销如实反馈、空规格不放行 + 履约/指派服务端规格复检 | `consignment-fulfillment-service.ts`、`consignment-matching-service.ts`、`consignment-repo.ts`、履约路由、`WorkOrdersPanel.tsx` |
|
||||
| `d6f6219f` | 批次 F1:内部现货履约停在「待加好友」,客服确认后才进赠送冷却 + 备注快捷项 | `work-order-gift-repo.ts`、履约服务、`WorkOrdersPanel.tsx`、`utils/gift-phase.ts` |
|
||||
| 本批提交(批次 Y,同一提交内含本文档,故不写自身 hash) | 批次 Y:修生产 079 迁移 23505——建冻结幂等索引前先去重历史重复冻结并退还多冻押金(服务器未应用过 079,经确认直接改原迁移) | `079_drop_consignment_collect_links.sql`、`consignment-payout.test.ts` |
|
||||
| 本批提交(批次 Z,同一提交内含本文档,故不写自身 hash) | 批次 Z:建议价精准对齐璀璨数(0/1/2/3璀独立匹配避免全中取最高)+ 限制璀璨不超过钻石等级(前端选项禁用与联动收敛 + 后端硬拦截) | `consignment-matching-service.ts`、`consignment-worker-service.ts`、`routes/worker/consignment.ts`、`WorkerConsignmentPage.tsx`、`services/worker.ts` |
|
||||
| `617794f2` | 批次 Y:修生产 079 迁移 23505——建冻结幂等索引前先去重历史重复冻结并退还多冻押金(服务器未应用过 079,经确认直接改原迁移) | `079_drop_consignment_collect_links.sql`、`consignment-payout.test.ts` |
|
||||
| 本批提交(批次 X,同一提交内含本文档,故不写自身 hash) | 批次 X:发布寄卖自动带建议价——规格选齐后按 系统+系列+钻级 从「接单模板」(work_product_rules)匹配价格自动填入(安卓暗潮1钻 → ¥120),多条命中取最高,手改过不覆盖 | `consignment-matching-service.ts`、`product-match-repo.ts`、`consignment-worker-service.ts`、`routes/worker/consignment.ts`、`WorkerConsignmentPage.tsx` |
|
||||
| 本批提交(批次 W,同一提交内含本文档,故不写自身 hash) | 批次 W:规格口径定案——后台全量(系统 苹果/安卓/通用,区服 微信/QQ/互通),打手端按物品展示(苏尔南:系统二选一、区服唯一「互通」默认选中);「互通」为区服通配值,匹配引擎通配符对称化 | `utils/consignment-spec.ts`、`WorkerConsignmentPage.tsx`、两个面板、`consignment-matching-service.ts`、`consignment-worker-service.ts` |
|
||||
| 本批提交(批次 V,同一提交内含本文档,故不写自身 hash) | 批次 V:复核遗留——拼单份额验收收官补寄卖钩子(押金释放+供货货款)、手动匹配弹窗 409 刷新/关键字透传/无打手禁指派、核销反馈抽共享出口 | `work-order-settlement-repo.ts`、`ConsignmentManualMatchModal.tsx`、`utils/voucher-consume.ts` |
|
||||
@@ -326,6 +327,24 @@
|
||||
3. ✅ **测试**:建议价纯函数行为测试(命中/系统不符/钻级不符/系列不符/多命中取最高/通用模板两端命中/无系统模板不命中)。
|
||||
|
||||
**验证**:后端 483 / 前端 54 测试全绿;两侧 `typecheck` / `lint:check` / `format:check` / `check:sql` 通过。
|
||||
|
||||
### 批次 Z · 建议价精准对齐璀璨数 + 璀璨不超过钻石等级(本轮)
|
||||
|
||||
**背景**:生产库接单模板为同钻级配置了不同璀璨的规则(如“苹果怒嚎5钻”分无璀璨、1璀、2璀、3璀),
|
||||
但因忽略璀璨数导致 5 钻的 4 条规则全部命中并强制取最高价 ¥280,且切换璀璨时不刷新价格;同时业务要求璀璨数不得超过钻石等级。
|
||||
|
||||
1. ✅ **规格正则支持「璀」字缩写**:`parseSpecsFromText` 支持 `([1-7])\s*璀(?:璨)?` 与 `无\s*璀(?:璨)?|0\s*璀(?:璨)?`,
|
||||
避免生产规则名称写 `3璀` 时被误识别为 0 璀。
|
||||
2. ✅ **建议价精准对齐璀璨数**:`suggestConsignmentPriceFromRules` 及路由/服务透传 `brillianceCount`,
|
||||
要求 `parsed.brillianceCount === wantedBrilliance`;0璀对0璀、1璀对1璀、3璀对3璀,未配对应模板则返回空,
|
||||
消除同钻级多规则全命中取最高价的缺陷。
|
||||
3. ✅ **发布前端璀璨数不能超过钻石等级**:
|
||||
- 动态禁用:`BRILLIANCE_OPTIONS` 中 `value > diamondLevel` 自动置灰禁用(1钻最多1璀,2钻最多2璀…)。
|
||||
- 自动收敛:调小钻级时(如 5钻改为 2钻),原选璀璨数超出时自动收敛至新钻级(2璀),并联动重算建议价与物品名。
|
||||
- 默认值与联动:璀璨数默认 `initialValue={0}`(无),`queryKey` 纳入 `${bri}`,切换璀璨即刻重新带价。
|
||||
- 双重校验:前端 Validator 校验 + 后端 `publishWorkerConsignment` 拦截(`brilliance_exceeds_diamond`)。
|
||||
|
||||
**验证**:后端 487 / 前端 54 测试全绿;两侧 `typecheck` / `lint:check` / `format:check` 通过。
|
||||
### 批次 W · 规格口径:互通通配 + 后台全量/发布端分物品展示(本轮)
|
||||
|
||||
**业务定案**:
|
||||
|
||||
Reference in New Issue
Block a user