1.0.110.sql 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. -- 1.0.110.sql
  2. -- S8-OVERVIEW-DEMO-DATA-COVERAGE-SEED-1
  3. -- 为 S8 overview 演示补 6 条覆盖 seed:让 S2/S3/S5 三张卡 + QDC.QUALITY/DELIVERY/INVENTORY 三桶 + 6 个 period
  4. -- (today / this_week / this_month / last_24h / last_7d / last_30d) 全部有数据;
  5. -- 全部挂到现有 in_progress 订单(SO-2026-017/018/019)+ 现有部门(D-QA / D-PROD / D-PURCHASE / D-WAREHOUSE),
  6. -- **不使用 D-UNASSIGNED**。
  7. -- 执行入口:AutoVersionUpdate.UseAutoVersionUpdate(),csproj Version=1.0.110 主节点首次启动时触发。
  8. -- 幂等性:
  9. -- * 主表 INSERT ... ON DUPLICATE KEY UPDATE 走唯一键 (tenant_id, factory_id, exception_code);
  10. -- 重复执行只刷新 updated_at/updated_by,不刷新 created_at,不破坏时间窗覆盖。
  11. -- * timeline INSERT ... SELECT ... WHERE NOT EXISTS (exception_id, action_code='CREATE'),防重 6 条。
  12. -- 安全边界:不新增 exception_type;不动 watch_rule;不改 ado_s8_order_flow_stage;
  13. -- 不动现有 16 条 ORDER_FLOW_KPI_OVERTIME_DERIVED;source_rule_code 全部为 S8_OVERVIEW_DEMO_COVERAGE_SEED,
  14. -- rollback 可一键 UPDATE is_deleted=1 WHERE source_rule_code='S8_OVERVIEW_DEMO_COVERAGE_SEED'。
  15. -- 2026-05-16
  16. -- 1) 6 条 seed 主表 upsert
  17. INSERT INTO ado_s8_exception
  18. (tenant_id, factory_id, exception_code, title, description,
  19. scene_code, source_type, status, severity, priority_score, priority_level,
  20. occurrence_dept_id, responsible_dept_id, sla_deadline, timeout_flag,
  21. created_at, is_deleted, created_by,
  22. related_object_code, module_code, exception_type_code, source_payload,
  23. dedup_key, last_detected_at, source_rule_code, source_object_type, source_object_id,
  24. consecutive_hit_count, consecutive_miss_count,
  25. stage_code, order_flow_code, rule_mechanism)
  26. SELECT
  27. 1, -- tenant_id(与现有 16 条派生异常对齐)
  28. 1, -- factory_id
  29. s.exception_code,
  30. s.title,
  31. s.description,
  32. s.stage_code, -- scene_code = stage_code
  33. 'AUTO_WATCH',
  34. 'NEW',
  35. s.severity,
  36. 0.00,
  37. 'P3',
  38. d.RecID, -- occurrence_dept_id
  39. d.RecID, -- responsible_dept_id(与 occurrence 同值)
  40. DATE_ADD(s.created_at, INTERVAL IFNULL(t.sla_minutes, 240) MINUTE),
  41. 0, -- timeout_flag
  42. s.created_at,
  43. 0, -- is_deleted
  44. 'system:s8_overview_demo_coverage_seed',
  45. s.related_object_code,
  46. s.stage_code, -- module_code = stage_code
  47. s.type_code,
  48. JSON_OBJECT(
  49. 'seedPurpose', 'S8_OVERVIEW_DEMO_COVERAGE',
  50. 'stage', s.stage_code,
  51. 'typeCode', s.type_code,
  52. 'orderCode', s.related_object_code,
  53. 'deptCode', s.dept_code,
  54. 'periodCoverage', s.period_coverage,
  55. 'source', 'S8_OVERVIEW_DEMO_COVERAGE_SEED'),
  56. CONCAT('S8_OVERVIEW_DEMO_COVERAGE:', s.stage_code, ':', s.type_code, ':', s.seq),
  57. s.created_at,
  58. 'S8_OVERVIEW_DEMO_COVERAGE_SEED',
  59. 'SALES_ORDER',
  60. CAST(o.id AS CHAR),
  61. 1, -- consecutive_hit_count
  62. 0, -- consecutive_miss_count
  63. s.stage_code,
  64. NULL, -- order_flow_code = NULL(S2/S3/S5 不属于 ORDER_FLOW 5 节点)
  65. 'DATE'
  66. FROM (
  67. SELECT 'EX-DEMO-COV-S2-01' AS exception_code, '01' AS seq,
  68. 'S2' AS stage_code, 'MFG_QUALITY_ABNORMAL' AS type_code, 'SERIOUS' AS severity,
  69. 'SO-2026-019' AS related_object_code, 'D-QA' AS dept_code,
  70. CAST('2026-05-16 08:00:00' AS DATETIME) AS created_at,
  71. '订单 SO-2026-019 制造协同出现批量质量异常 [演示覆盖]' AS title,
  72. '用于 S8 overview 演示覆盖:S2 制造协同 + QDC.QUALITY;不代表运行时规则命中。' AS description,
  73. 'today,last_24h,this_week,this_month,last_7d,last_30d' AS period_coverage
  74. UNION ALL SELECT 'EX-DEMO-COV-S3-01', '01',
  75. 'S3', 'SUPPLIER_DELIVERY_DELAY_WARNING', 'FOLLOW',
  76. 'SO-2026-018', 'D-PURCHASE',
  77. CAST('2026-05-16 09:30:00' AS DATETIME),
  78. '订单 SO-2026-018 供应商交付延期预警 [演示覆盖]',
  79. '用于 S8 overview 演示覆盖:S3 供应协同 + QDC.DELIVERY;不代表运行时规则命中。',
  80. 'today,last_24h,this_week,this_month,last_7d,last_30d'
  81. UNION ALL SELECT 'EX-DEMO-COV-S5-01', '01',
  82. 'S5', 'MATERIAL_STOCK_ABNORMAL', 'FOLLOW',
  83. 'SO-2026-018', 'D-WAREHOUSE',
  84. CAST('2026-05-16 06:00:00' AS DATETIME), -- 5/16 凌晨:覆盖 today/last_24h
  85. '订单 SO-2026-018 物料库存水位异常 [演示覆盖]',
  86. '用于 S8 overview 演示覆盖:S5 物料仓储 + QDC.INVENTORY;不代表运行时规则命中。',
  87. 'today,last_24h,this_week,this_month,last_7d,last_30d'
  88. UNION ALL SELECT 'EX-DEMO-COV-S2-02', '02',
  89. 'S2', 'EQUIP_FAULT', 'SERIOUS',
  90. 'SO-2026-019', 'D-PROD',
  91. CAST('2026-05-12 10:00:00' AS DATETIME), -- 本周二:覆盖 this_week/last_7d/this_month/last_30d
  92. '订单 SO-2026-019 关键设备停机故障 [演示覆盖]',
  93. '用于 S8 overview 演示覆盖:S2 设备故障,让 D-PROD 出现 SERIOUS;不代表运行时规则命中。',
  94. 'this_week,this_month,last_7d,last_30d'
  95. UNION ALL SELECT 'EX-DEMO-COV-S3-02', '02',
  96. 'S3', 'SUPPLIER_ETA_ISSUE', 'FOLLOW',
  97. 'SO-2026-017', 'D-PURCHASE',
  98. CAST('2026-05-12 11:30:00' AS DATETIME),
  99. '订单 SO-2026-017 供应商未回复 ETA [演示覆盖]',
  100. '用于 S8 overview 演示覆盖:S3 供应商 ETA 异常(不在 QDC whitelist,仅点亮 S3 卡)。',
  101. 'this_week,this_month,last_7d,last_30d'
  102. UNION ALL SELECT 'EX-DEMO-COV-S5-02', '02',
  103. 'S5', 'INVENTORY_TURNOVER_ABNORMAL', 'FOLLOW',
  104. 'SO-2026-018', 'D-WAREHOUSE',
  105. CAST('2026-05-03 09:00:00' AS DATETIME), -- 本月初:覆盖 this_month/last_30d
  106. '订单 SO-2026-018 库存周转率异常 [演示覆盖]',
  107. '用于 S8 overview 演示覆盖:S5 库存周转 + QDC.INVENTORY;不代表运行时规则命中。',
  108. 'this_month,last_30d'
  109. ) s
  110. JOIN DepartmentMaster d
  111. ON d.Department = s.dept_code AND d.factory_ref_id = 1 AND d.IsActive = 1
  112. LEFT JOIN ado_s8_exception_type t
  113. ON t.type_code = s.type_code AND t.tenant_id = 0 AND t.factory_id = 0
  114. LEFT JOIN ado_s8_order_flow_order o
  115. ON o.order_code = s.related_object_code AND o.is_deleted = 0
  116. ON DUPLICATE KEY UPDATE
  117. updated_at = NOW(),
  118. updated_by = 'system:s8_overview_demo_coverage_seed';
  119. -- 2) 写 timeline(CREATE 动作,按 (exception_id, action_code) 去重)
  120. INSERT INTO ado_s8_exception_timeline
  121. (exception_id, action_code, action_label, from_status, to_status,
  122. operator_id, operator_name, action_remark, created_at)
  123. SELECT
  124. e.id,
  125. 'CREATE',
  126. '演示覆盖派生',
  127. NULL,
  128. 'NEW',
  129. NULL,
  130. 'system',
  131. 'S8 overview demo coverage seed',
  132. e.created_at
  133. FROM ado_s8_exception e
  134. WHERE e.source_rule_code = 'S8_OVERVIEW_DEMO_COVERAGE_SEED'
  135. AND NOT EXISTS (
  136. SELECT 1 FROM ado_s8_exception_timeline tl
  137. WHERE tl.exception_id = e.id AND tl.action_code = 'CREATE'
  138. );
  139. -- 验证 SQL(注释,仅人工核对):
  140. -- SELECT COUNT(*) FROM ado_s8_exception WHERE is_deleted=0 AND source_rule_code='S8_OVERVIEW_DEMO_COVERAGE_SEED';
  141. -- SELECT stage_code, severity, COUNT(*) FROM ado_s8_exception WHERE is_deleted=0
  142. -- GROUP BY stage_code, severity ORDER BY stage_code, severity;
  143. -- SELECT COUNT(*) FROM ado_s8_exception_timeline WHERE action_remark='S8 overview demo coverage seed';