-- 1.0.123.sql -- S8-ORDER-CHAIN-PRODUCT-DESIGN-PPT-STATIC-AND-SINGLE-ORDER-ALIGN-1 -- 修正既有产品设计阶段数据,使其与本批次业务口径一致。仅 UPDATE,禁 DELETE / TRUNCATE / DROP。 -- -- 修正范围: -- 1) ado_s8_order_flow_product_design_drawing: -- a) 非标 (NON_STANDARD) 图号 KPI 从 12 改为 3,对应 actual_days 全部 > 3 → is_achieved=0 / status='red' -- b) responsible_person 由责任单位(研发中心 / 结构设计组 / 电气设计组 / 工艺设计组 / 设计审核组) -- 改为 6 位设计师姓名(李海峰 / 陈思远 / 王明华 / 赵建国 / 刘振宇 / 周启明),按 sort_no 循环分配 -- 2) ado_s8_order_flow_snapshot: -- BASELINE_PPT 中 PRODUCT_DESIGN 行 actualAvgDays 2.6→2.5、onTimeRate 96→98 -- -- 安全边界: -- * 不动 ado_s8_order_flow_order / stage / substep / substep_unit -- * 不动 ORDER_REVIEW_PLAN_CALC / MATERIAL_PURCHASE / BODY_PRODUCTION / FINAL_ASSEMBLY_DELIVERY 任何数据 -- * 不动 S0 / .vscode / Database.json -- * 仅触发 product_type='NON_STANDARD' 的图号行,与无人工修改过的责任人行 -- * snapshot UPDATE 限定 scope_code='BASELINE_PPT' + snapshot_code='CHAIN_AGGREGATE_BASELINE' -- -- 幂等性: -- * 非标行 UPDATE 带 WHERE (kpi_days<>3 OR is_achieved<>0 OR status<>'red'),重复执行命中行数为 0 -- * 责任人 UPDATE 带 WHERE responsible_person NOT IN (6 设计师姓名),已对齐后不再触发 -- * snapshot REPLACE 函数对已替换字符串无效,重复执行结果一致 -- -- 兼容性: -- * 仅使用 UPDATE / REPLACE / CASE / % 运算符,全部 MySQL 5.x / 8.x 通用语法,无需检查 MySQL 版本 -- * 未使用 JSON_REPLACE / JSON_SET,避免依赖 MySQL 5.7.8+ -- -- Rollback: -- * 由 SeedData 与本脚本共同维护目标态。如需回滚业务口径,git revert 同 commit 并重新跑一次本脚本以外的 UPDATE 即可 -- * 本脚本本身无数据破坏性操作 -- 2026-05-21 -- ─── 1) 非标图号 kpi_days / is_achieved / status 联动 ─── UPDATE ado_s8_order_flow_product_design_drawing SET kpi_days = 3.00, is_achieved = 0, status = 'red' WHERE product_type = 'NON_STANDARD' AND is_deleted = 0 AND (kpi_days <> 3.00 OR is_achieved <> 0 OR status <> 'red'); -- ─── 2) 责任人按 sort_no 循环 6 位设计师 ─── UPDATE ado_s8_order_flow_product_design_drawing SET responsible_person = CASE ((sort_no - 1) % 6) WHEN 0 THEN '李海峰' WHEN 1 THEN '陈思远' WHEN 2 THEN '王明华' WHEN 3 THEN '赵建国' WHEN 4 THEN '刘振宇' WHEN 5 THEN '周启明' END WHERE is_deleted = 0 AND responsible_person NOT IN ('李海峰','陈思远','王明华','赵建国','刘振宇','周启明'); -- ─── 3) snapshot PRODUCT_DESIGN actualAvgDays 2.6→2.5 与 onTimeRate 96→98 ─── -- 用片段 '"actualAvgDays":2.6,"onTimeRate":96' 作为整体替换键,该字符串在 BASELINE_PPT JSON 中 -- 仅出现于 PRODUCT_DESIGN 行(其他阶段 actualAvgDays 分别是 6.2 / 15.5 / 6.7 / 2.9),不会误伤。 UPDATE ado_s8_order_flow_snapshot SET stage_snapshots_json = REPLACE( stage_snapshots_json, '"actualAvgDays":2.6,"onTimeRate":96', '"actualAvgDays":2.5,"onTimeRate":98') WHERE scope_code = 'BASELINE_PPT' AND snapshot_code = 'CHAIN_AGGREGATE_BASELINE' AND is_deleted = 0;