深色
覆写规则

这一页让你针对「某一个商品 + 某一个平台」下一道人工强制命令,盖过系统平时的自动行为——共三种:锁库存数量、锁价格、停止同步。每条都要写理由、可设到期时间。「覆写」=盖过、强制改写系统的自动决定。
谁会用到:操作员 / Nate。平常系统全自动算库存、自动比价改价;遇到促销保量、新品限量试上架、合约价要守住毛利等特殊情况,需要人工临时凌驾自动时,来这一页插一条规则。
🧠 这一页的原理(白话)
平时 CC WMS 会自动做两件事:①算每个商品该推给平台显示多少可卖库存;②第二阶段自动比价改价。这一页是开给这两件事的「人工例外口」。但务必记住一个经程式码逐项核实的现况:三种命令里目前「只有锁价格真的会生效」。系统里只有比价引擎(repricer)会去读这些规则,而且只读 override_type='price' 这一种;真正把库存推上平台的那段程式(platform-push)完全没有去读这些规则(实测:该档案 0 处引用 override/sync_overrides)。所以现在建一条「锁库存 50」或「停止同步」,画面有、纪录在、能导出 CSV,但系统照样按自己算的数字推库存,不会真的锁成 50、也不会真的停推。弹窗上写的「强制平台显示固定数/完全不推送任何更新」是设计意图(需求文档 docs/09 的 E23/E24 蓝图),后端尚未接线。所有新增/编辑/删除都会写进 audit_log(谁、何时、改哪条、旧值→新值、IP),删除前会先存整笔旧资料快照——删错了 log 里查得回,但画面上无法一键复原。锁价的资料流:你在这页建 price 规则→比价服务用 LEFT JOIN 抓「该 SKU+该平台、未过期、type=price」最新一条当锁定价→算价程式第一步若发现有锁价就直接回 reason='locked'、willApply=false(建议价照算照记,但绝不自动推上平台改价)。过期判定:expires_at 早于现在=已到期(自动被忽略、不再影响比价);留空=永久。
🖱️ 画面上的东西(分页 / 按钮 / 栏位)
| 类型 | 名称 | 是什么 | 点了 / 用了会怎样 | ⚠️ 注意 |
|---|---|---|---|---|
| badge | 标题区:覆写规则 (Sync Override) | 标题「覆写规则 (Sync Override)」+ 副标「对特定 SKU + 平台 强制锁定库存量 / 售价 / 停止同步」。一句话说明这页能做什么。 | 纯文字,不可点。 | |
| button | 导出 CSV(右上,带下载图示) | 一直在。把「目前筛选后看到的」那些规则整理成 Excel 可开的表格档下载。栏位:ID、WMS Code、平台、类型、值、理由、创建人、创建时间、到期时间。档名像 覆写规则_2026-06-16.csv,带 UTF-8 BOM 让中文不乱码。 | 纯前端下载,不打后端、不触发任何平台动作、不改任何资料。安全,可随时导出存档。无(前端直接用已载入清单产生 CSV) | 无(只读动作)。 |
| button | 新增覆写规则(右上蓝色主按钮,加号图示) | 一直在。 | 打开「新增覆写规则」弹窗(见下方 modal)。无(仅开弹窗) | |
| badge | 已移除:Bulk 批量导入 | 程式码注解记载:原有一颗「Bulk 导入」按钮已于 2026-06-10 移除。原因:覆写规则量少、每条都要写理由和到期时间,批量导入价值低又容易误导入。 | 现在没有批量导入功能。要建多条只能一条一条用「新增覆写规则」。 | |
| badge | KPI 卡:生效中 | 目前还没到期的规则总数(前端用载入清单即时算,不是后端另算)。灰字副标:锁库存 · 锁价 · 停同步。 | 纯显示,点不了。 | |
| badge | KPI 卡:即将到期 (24h) | 到期时间落在「未来 24 小时内」的规则数。有的话副标用橘色显示第一笔的「WMS码/平台」;没有就显示灰字「无」。 | 纯显示,点不了。 | |
| badge | KPI 卡:已到期 | 到期时间已过去的规则数。灰字副标:可清理(提示这些可以删了)。 | 纯显示,点不了。 | |
| tab | 生效中 / 已到期 / 全部(三个分页,各带数字徽章) | 生效中=只看还没到期的;已到期=只看已过期的;全部=全部规则。徽章数字对应各自数量。 | 点了切换下方列表内容。纯前端切换,不重新打 API。无(前端在已载入清单上过滤) | |
| field | 搜索框(提示:搜索 WMS Code / 平台 / 理由…) | 打字即时过滤,比对商品码、平台名、理由三个栏位(不分大小写)。 | 输入文字即时筛选当前清单。 | |
| field | 类型下拉 | 选项:类型 (全部) / 锁库存 / 锁价格 / 停同步。 | 挑一个只看那一类。前端过滤。 | |
| field | 平台下拉 | 选项:平台 (全部) / Takealot / Amazon / Makro / Temu。 | 挑一个只看那个平台。前端过滤。注意:这里有 Temu,但下方新增弹窗里没有 Temu 选项。 | |
| badge | 显示 X / Y(最右灰色小字) | 筛选后剩 X 条 / 总共 Y 条。 | 纯显示。 | |
| column | 规则列表表格 | 载入时显示「加载中…」;没有符合的规则时整行显示「无符合条件的覆写规则」。每条规则一列,已到期的列整列变灰。栏位:WMS Code(6 位内部码,等宽字体)|平台(带颜色小标签)|类型(彩色小药丸:锁库存=蓝/info、锁价格=橘/warn、停同步=红/danger)|值(锁库存显件数、锁价格显价格;停同步这格显示「—」)|理由(小字,过长截断)|创建者(建规则的登入帐号)|到期时间(有设显日期时间,没设显灰字「永久」;24 小时内到期用橘色,已过期用淡灰)。 | 只读展示,操作在每列最右两颗按钮。GET /api/overrides(SELECT * FROM sync_overrides ORDER BY created_at DESC LIMIT 200,可带 ?wms_code= / ?platform= 过滤) | |
| button | 编辑(每列最右,铅笔图示) | 打开弹窗的「编辑」模式,带入这条的现有值。 | 编辑时 WMS Code 和平台是锁住不能改的(灰掉),只能改「值 / 理由 / 到期时间」。要换商品、换平台、换类型得删掉重建(设计如此,避免一条 log 的身份被偷换)。PUT /api/overrides/:id(部分更新,只改 值/理由/到期,写 audit_log) | 一般(非破坏性)。 |
| button | 删除(每列最右,垃圾桶图示) | 删除这条规则。 | 先跳确认框「确认删除此覆写规则?此操作不可撤销。」,按确定才真删;删的当下那一列立刻从画面消失;删除过程这颗按钮短暂变灰防连点。DELETE /api/overrides/:id(先存旧值快照→删除→写 audit_log) | 破坏性、不可撤销。删掉这条强制命令就没了——若删的是一条「锁价格」(唯一真生效的类型),代表这商品马上重新交回自动比价系统去改价。6/21 真实改价上线后误删一条锁价规则=可能让本来被保护的商品被自动改价。后台有 audit_log 记谁删了什么、原值是什么,但只是事后查得到,画面上删了无法一键复原。 |
| modal | 弹窗:新增覆写规则 / 编辑覆写规则 | 标题随情境是「新增覆写规则」或「编辑覆写规则」,副标「对特定 SKU + 平台强制锁定行为」。由上到下栏位:①WMS Code(输入框,提示「例: 100019」;编辑模式灰掉不能改;送出时后端会查这商品码是否真存在,不存在回「SKU XXX 不存在」)②平台(一排单选圆钮,选项 Takealot / Amazon FBM / Amazon FBA / Amazon SF / Makro,程式代码 takealot/amzfbm/amzfba/amzsf/makro;没有 Temu)③覆写类型(三个大方块点选一个,选中变色高亮:锁库存数量「强制平台显示固定数」、锁价格「Phase 2 比价不影响」、停止同步「完全不推送任何更新」)④值(只有选锁库存或锁价格时才出现;选停止同步时这格消失;锁库存提示「例: 50」、锁价格提示「例: 199.00」)⑤理由 (必填)(多行文字框,提示「例: Makro 促销保留库存 / 新品试上架限量…」,空的不让送)⑥到期 (可选)(日期时间选择器,下方灰字「到期后自动恢复正常同步。留空表示永久。」)。 | 底部按钮:「取消」=关闭弹窗、清空刚填内容、不存任何东西;「建立规则」(新增) / 「保存修改」(编辑) =送出存档。未填齐前这颗灰的、点不动——条件:商品码、平台、理由都要有;若类型不是停止同步则「值」也要有。送出中变「提交中…」。成功跳绿色小条(覆写规则已建立 / 覆写规则已更新)后自动关窗;失败在底部用红字显示原因(如商品不存在、网络错误)。POST /api/overrides(新增)/ PUT /api/overrides/:id(编辑) | 一般。但平台选 Amazon 的任一种(FBM/FBA/SF)目前会建立失败(见 gotchas)。 |
⚠️ 注意事项 / 别踩的坑
- 【最大地雷,6/21 上线前必读】三种类型现在只有「锁价格」真生效。已逐项核实程式码:真正推库存到平台的那段(platform-push)完全没有读这些规则(实测 0 处引用),所以现在设「锁库存=50」系统照样推它自己算的数字、不会锁成 50;设「停止同步」系统仍会继续推、不会真的停。「锁库存」「停止同步」目前只是存进资料库、显示在画面、能导出 CSV 的「摆设」。不要靠它们来「保护某商品别被超卖」或「暂时下架某商品的同步」——目前做不到。要这两个真生效,需另外把推送流程接上规则表(属待开发)。
- 【弹窗平台选项与后端对不上,选 Amazon 会建立失败】新增弹窗平台有 5 个选项「Takealot / Amazon FBM / Amazon FBA / Amazon SF / Makro」,但后端只认 4 个名字(takealot、amazon、makro、temu)。弹窗送出的是 amzfbm/amzfba/amzsf 这种细分名,后端不接受,会报错「platform 无效」建立失败。白话:现在这页选 Amazon 三种的任一个去建规则,很可能直接失败;能稳建的只有 Takealot 和 Makro。要给 Amazon 设规则请先告诉工程的人——这是前后端没对齐,不是你操作错。
- 【列表平台下拉口径也不一致】列表上方的平台筛选下拉用的是大类(Takealot/Amazon/Makro/Temu),且有 Temu;但弹窗里 Amazon 拆成三种、又没有 Temu。所以即使将来 Amazon 规则能建起来,回列表用平台下拉筛「Amazon」也未必筛得到(筛的是 amazon 这个字,对不上 amzfba 等)。建规则后想找它,建议改用搜索框搜商品码。
- 【理由必填、不能空白】没填理由「建立规则」按钮是灰的点不动,后端也会挡「缺少必填字段:reason」。这是好事——三个月后看 log 才知当初为何锁。请写人看得懂的话。
- 【WMS Code 必须真实存在】后端会先查这码在不在商品表,不在就回「SKU xxx 不存在」。不要凭记忆乱打码,先到商品/库存页确认。
- 【删除永久不可撤销】点垃圾桶会跳「确认删除此覆写规则?此操作不可撤销。」。删了就没了(log 留纪录但清单上拿不回来)。不确定就先用「编辑」改到期时间,不要删。删「锁价格」等于立刻把商品交回自动改价,务必看清再删。
- 【到期时间用你电脑当地时间】弹窗的日期选择器是「本机当地时间」。南非(UTC+2)和中国(UTC+8)同事看到/设的时间会差 6 小时。两地协作设到期时间时要讲清楚是哪边的时间,免得提早或延后失效。
- 【值的格式自己负责】锁库存填整数件数(如 50);锁价格填金额(如 199.00,单位南非 Rand)。程式不会帮你换算或校正格式,别填错单位。
- 【同一商品+同一平台可建多条】系统不挡重复。比价锁价时只会用「最新一条、还没过期」的那条。旧的没删会留在清单造成混乱——建议建新的前先把旧的删掉或设到期。
- 【边界情况文档是蓝图、非现况】docs/09 的 E22(过期自动解除)/E23(锁库存值大于物理库存)/E24(锁库存值为 0=等同停售推 0)描述的是「将来应该」的设计。现况:过期=被动忽略(对锁价格成立,但不会另写一条 expired 纪录);E23/E24 因锁库存根本还没生效而目前不适用。别把蓝图当现况。
✅ 怎么操作(步骤)
- 任务一:新增一条「锁价格」规则(目前唯一真接通的类型)。情境:某商品在 Takealot 想固定卖 199,不让自动比价乱动它。① 右上点「新增覆写规则」② WMS Code 填该商品 6 位码(如 100019),确保是真实存在的码 ③ 平台选「Takealot」(稳定可用;选 Amazon 的细分目前会失败,见地雷)④ 覆写类型点「锁价格」⑤ 值填 199.00(南非 Rand 金额)⑥ 理由(必填)写清楚,如「促销期固定价不参与比价」⑦ 到期(可选)填促销结束日(到期自动恢复自动比价),想长期就留空=永久 ⑧ 点「建立规则」,成功跳「覆写规则已建立」。效果:之后自动比价引擎遇到这商品会停手、不改它的价(提醒:这只是「拦住改价器」,不会主动去 Takealot 后台改价)。
- 任务二:延长 / 修改一条规则。① 在清单找到那行,点右侧铅笔 ② 弹窗里只能改「值 / 理由 / 到期」(WMS Code、平台、类型锁住)③ 例如把到期时间往后延、或清空到期改成永久 ④ 点「保存修改」,跳「覆写规则已更新」。
- 任务三:清理已到期的规则。① 上方点「已到期」分页,看到所有失效规则(行是灰色)② 逐行点垃圾桶→确认框点确定 ③ 安全做法:删之前可先点「导出 CSV」存一份存底。
- 任务四:导出存档。① 先用搜索 / 类型 / 平台筛出要的范围 ② 点「导出 CSV」下载一个 覆写规则_日期.csv。纯下载,不影响系统。
与 6/21 上线测试有关
6/21 第一次真实写线上平台(推虚拟库存 + 线上比价改价),这一页只有「锁价格」会真起作用:要让某些商品在线上比价时被钉死价格、不让机器人改(如清仓品、合约价、促销价),就对该商品+平台建一条「锁价格」并填好锁定价——这是目前唯一能把商品挡在自动改价之外的开关(比价引擎会读它、标该 SKU 为 locked、willApply=false 不进改价候选、也不会主动去后台改价)。三件事务必告诉操作员:①锁库存、停止同步目前是装饰性的,建了不会真改变推给平台的库存、也不会真的停推,别拿它们当「保护某商品不被超卖/下架同步」的保险;②弹窗里给 Amazon 建任何覆写目前会失败(amzfbm/amzfba/amzsf 后端不收,报 platform 无效),能稳建的只有 Takealot、Makro;③删除是这页唯一危险键、有二次确认,删「锁价格」等于立刻把商品交回自动改价。建议上线前要嘛先把锁库存/停止同步接通推送流程,要嘛明确告诉操作员这两个现在没用、别依赖。