算法治理
算法登记、灰度发布、守卫阈值与回滚
算法数
5个
生效
2个
灰度中
0个
已回滚(仍在线运行)
3个
门禁
启用
受治理阶段 5 个 · 灰度 0 个
i上线路径:离线训练 → 离线评估 → 影子运行(只算不用)→ 灰度 → 全量。
i登记册现在真的生效了(2026-09-24 起接到计算上),四种状态的行为各不相同:
· 生效 → 该阶段全量运行;
· 停用 → 该阶段拒绝执行(决策/预测会返回 409 并说明在哪恢复)—— 这是唯一会拦住计算的状态;
· 已回滚 → 仍在运行,跑的是登记里写的「回滚点」那个版本(回滚是"退回上一版",不是停机);
· 灰度 N% → 照常跑,按门店稳定哈希给结果打上「灰度 / 对照」分组标记供 A/B 对比。 注意:代码里每个阶段只有一套实现,灰度不切换算法,只做分组标记 —— 这点不能含糊。
· 没有任何登记行 → 放行并标"未登记"(登记册不完整不应让系统停摆)。
· 自动熔断:阶段收尾按登记里配的「守卫阈值」评估,超阈值就自动改成「已回滚」+ 写审计 + 推告警; 算不出来的指标(覆盖偏差、误拦率/漏拦率)标"不可评估",不参与熔断 —— 不拿猜出来的数字做决策。
· 紧急开关:把 系统参数 里的 algo.gate 设为 off 可临时关闭全部门禁与熔断。
· 生效 → 该阶段全量运行;
· 停用 → 该阶段拒绝执行(决策/预测会返回 409 并说明在哪恢复)—— 这是唯一会拦住计算的状态;
· 已回滚 → 仍在运行,跑的是登记里写的「回滚点」那个版本(回滚是"退回上一版",不是停机);
· 灰度 N% → 照常跑,按门店稳定哈希给结果打上「灰度 / 对照」分组标记供 A/B 对比。 注意:代码里每个阶段只有一套实现,灰度不切换算法,只做分组标记 —— 这点不能含糊。
· 没有任何登记行 → 放行并标"未登记"(登记册不完整不应让系统停摆)。
· 自动熔断:阶段收尾按登记里配的「守卫阈值」评估,超阈值就自动改成「已回滚」+ 写审计 + 推告警; 算不出来的指标(覆盖偏差、误拦率/漏拦率)标"不可评估",不参与熔断 —— 不拿猜出来的数字做决策。
· 紧急开关:把 系统参数 里的 algo.gate 设为 off 可临时关闭全部门禁与熔断。
i台账与实现不一致 3 处:可配不足分配(ALGO-AL-01)台账为「已回滚」:按语义仍在运行(跑登记的回滚点版本),但代码里只有一套实现,版本号不改变公式;调拨求解器(ALGO-ST-01)台账为「已回滚」:按语义仍在运行(跑登记的回滚点版本),但代码里只有一套实现,版本号不改变公式;门店×SKC 周销预测(ALGO-FC-01)台账为「已回滚」:按语义仍在运行(跑登记的回滚点版本),但代码里只有一套实现,版本号不改变公式
i别和「参数自动调优」(/dec/autotune)搞混:那个页面调的是 「模型参数」里的两个值(满足周数 / 安全库存基数),
发布后真的改变引擎结果;本页改的是下面「算法登记册」这张卡片里每条算法的「状态」(停用 / 灰度 / 回滚),
走的是"拦阶段 + 打分组标记 + 守卫熔断"这条链路。两处的"治理约束""回滚"只是词一样,代码上没有关联。
算法登记册
「停用」会真的拦住对应阶段;「变更/回滚/守卫」只改登记;守卫超阈值会自动回滚| 编号 | 名称 | 类型 | 版本 | 负责人 | 状态 | 流量 | 回滚点 | 受管阶段 | 门禁模式 | 活跃版本 | 关键指标 | 守卫阈值 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ALGO-AL-01 | 可配不足分配 | 分配 | v1.6 | 算法组 · 李工 | 已回滚 | 0% | v1.5 | 决策批次里的分配口径(top_first 等)与公平性指标 | 全量运行 | v1.5 | {"满足率":56.3,"零分配门店":0,"gini":0.2865,"守卫评估":{"满足率Min":null,"零分配门店Max":null},"评估时间":"2026-09-24 21:26:30"} | {"满足率Min":50,"零分配门店Max":3} | |
| ALGO-ST-01 | 调拨求解器 | 求解 | v1.2 | 算法组 · 李工 | 已回滚 | 0% | v1.3 | 决策批次的候选生成与求解 | 全量运行 | v1.3 | {"求解时长秒":187,"超时批次":2} | {"求解时长Max":300} | |
| ALGO-GI-01 | 目标库存计算 | 目标库存 | v2.4 | 算法组 · 陈工 | 生效 | 100% | v2.3 | 目标库存 | 全量运行 | v2.4 | {"覆盖偏差":4.2,"齐码率提升":3.1,"守卫评估":{"覆盖偏差Max":null},"评估时间":"2026-09-24 22:07:14"} | {"覆盖偏差Max":10} | |
| ALGO-CT-01 | 约束引擎 | 约束 | v2.0 | 商品中心 · 王运营 | 生效 | 100% | v1.9 | 决策批次里的 7 类约束判定 | 全量运行 | v2.0 | {"误拦率":2.1,"漏拦率":0.4} | {"误拦率Max":5} | |
| ALGO-FC-01 | 门店×SKC 周销预测 | 预测 | v3.1 | 算法组 · 陈工 | 已回滚 | 0% | v3.2 | 预测流水线 | 全量运行 | v3.2 | {"mape":20.6,"wape":24.1,"bias":-0.03,"sample":120,"守卫评估":{"mapeMax":64.1,"biasAbsMax":51.4},"评估时间":"2026-09-24 22:06:45"} | {"mapeMax":25,"biasAbsMax":0.1,"minSamples":60} |
真正生效的机制(与上面"上线闸门"不同,这些是代码里真的在跑的)
哪些是硬约束、哪些还是人工| 层级 | 规则 |
|---|---|
| 硬拦截 | 登记状态 = 停用 → 对应阶段拒绝执行(预测/目标库存/约束/分配/求解) |
| 自动熔断 | 阶段收尾评估登记里配的守卫阈值:预测(MAPE/WAPE/偏差/样本量)、分配(满足率/零分配门店/gini)、求解(时长);超阈值自动回滚 + 审计 + 告警 |
| 分组标记 | 登记状态 = 灰度 N% → 按门店稳定哈希给结果打「灰度 / 对照」标记(不切换实现,只供 A/B 对比) |
| 紧急开关 | 把 系统参数 里的 algo.gate 设为 off → 门禁与熔断全部停用 |
| 仍是人工 | 上线闸门(离线评估/影子运行/全量双签)没有自动校验;「变更」按钮本身不做准入门槛 |