_migrate_and_seed_kanban.py 6.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import pymysql
  2. conn = pymysql.connect(host='123.60.180.165', port=3306, user='aidopremote', password='1234567890aiDOP#', database='aidopdev', charset='utf8mb4', autocommit=True)
  3. def ensure_columns(cur, table, defs):
  4. cur.execute(f"SHOW COLUMNS FROM `{table}`")
  5. existing = {r[0] for r in cur.fetchall()}
  6. for col, ddl in defs:
  7. if col not in existing:
  8. cur.execute(f"ALTER TABLE `{table}` ADD COLUMN {ddl}")
  9. try:
  10. with conn.cursor() as cur:
  11. ensure_columns(cur, 'ado_s9_kpi_def', [
  12. ('metric_code', "metric_code varchar(64) NULL COMMENT '指标编码'"),
  13. ('metric_name', "metric_name varchar(128) NULL COMMENT '指标名称'"),
  14. ('module_code', "module_code varchar(8) NULL COMMENT '模块编码'"),
  15. ('metric_level', "metric_level tinyint NULL COMMENT '层级'"),
  16. ('unit', "unit varchar(16) NULL COMMENT '单位'"),
  17. ('target_value', "target_value decimal(18,4) NULL COMMENT '目标值'"),
  18. ('warn_threshold', "warn_threshold decimal(18,4) NULL COMMENT '预警阈值'"),
  19. ('danger_threshold', "danger_threshold decimal(18,4) NULL COMMENT '告警阈值'"),
  20. ])
  21. for t in ['ado_s9_kpi_value_l1_day','ado_s9_kpi_value_l2_day','ado_s9_kpi_value_l3_day']:
  22. ensure_columns(cur, t, [
  23. ('module_code', "module_code varchar(8) NULL COMMENT '模块编码'"),
  24. ('metric_code', "metric_code varchar(64) NULL COMMENT '指标编码'"),
  25. ('metric_value', "metric_value decimal(18,4) NULL COMMENT '指标值'"),
  26. ('target_value', "target_value decimal(18,4) NULL COMMENT '目标值'"),
  27. ('status_color', "status_color varchar(16) NULL COMMENT '状态色'"),
  28. ('trend_flag', "trend_flag varchar(8) NULL COMMENT '趋势'"),
  29. ('calc_time', "calc_time datetime(3) NULL COMMENT '计算时间'"),
  30. ])
  31. ensure_columns(cur, 'ado_s8_alert_record', [
  32. ('alert_code', "alert_code varchar(64) NULL COMMENT '预警编码'"),
  33. ('rule_code', "rule_code varchar(64) NULL COMMENT '规则编码'"),
  34. ('metric_code', "metric_code varchar(64) NULL COMMENT '指标编码'"),
  35. ('metric_value', "metric_value decimal(18,4) NULL COMMENT '指标值'"),
  36. ('target_value', "target_value decimal(18,4) NULL COMMENT '目标值'"),
  37. ('level_code', "level_code varchar(16) NULL COMMENT '预警等级'"),
  38. ('alert_time', "alert_time datetime(3) NULL COMMENT '预警时间'"),
  39. ('message', "message varchar(500) NULL COMMENT '预警信息'"),
  40. ])
  41. cur.execute("DELETE FROM ado_s9_kpi_value_l1_day WHERE tenant_id=1 AND factory_id=1")
  42. cur.execute("DELETE FROM ado_s8_alert_record WHERE tenant_id=1 AND factory_id=1")
  43. inserts = [
  44. "INSERT INTO ado_s9_kpi_value_l1_day (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,module_code,metric_code,metric_value,target_value,status_color,trend_flag,calc_time) VALUES (500001,1,1,1,1,'OK',CURDATE(),NOW(3),NOW(3),0,1,'S1','S1_OTD',75,95,'red','down',NOW(3))",
  45. "INSERT INTO ado_s9_kpi_value_l1_day (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,module_code,metric_code,metric_value,target_value,status_color,trend_flag,calc_time) VALUES (500002,1,1,1,1,'OK',CURDATE(),NOW(3),NOW(3),0,1,'S2','S2_SAT',85,99,'red','down',NOW(3))",
  46. "INSERT INTO ado_s9_kpi_value_l1_day (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,module_code,metric_code,metric_value,target_value,status_color,trend_flag,calc_time) VALUES (500003,1,1,1,1,'OK',CURDATE(),NOW(3),NOW(3),0,1,'S3','S3_KIT',75,95,'red','down',NOW(3))",
  47. "INSERT INTO ado_s9_kpi_value_l1_day (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,module_code,metric_code,metric_value,target_value,status_color,trend_flag,calc_time) VALUES (500004,1,1,1,1,'OK',CURDATE(),NOW(3),NOW(3),0,1,'S4','S4_ONTIME',99,99,'green','flat',NOW(3))",
  48. "INSERT INTO ado_s9_kpi_value_l1_day (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,module_code,metric_code,metric_value,target_value,status_color,trend_flag,calc_time) VALUES (500005,1,1,1,1,'OK',CURDATE(),NOW(3),NOW(3),0,1,'S5','S5_MATCH',99,98,'green','up',NOW(3))",
  49. "INSERT INTO ado_s9_kpi_value_l1_day (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,module_code,metric_code,metric_value,target_value,status_color,trend_flag,calc_time) VALUES (500006,1,1,1,1,'OK',CURDATE(),NOW(3),NOW(3),0,1,'S6','S6_FPYY',85,98,'red','down',NOW(3))",
  50. "INSERT INTO ado_s9_kpi_value_l1_day (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,module_code,metric_code,metric_value,target_value,status_color,trend_flag,calc_time) VALUES (500007,1,1,1,1,'OK',CURDATE(),NOW(3),NOW(3),0,1,'S7','S7_DEFECT',1.0,0.8,'red','up',NOW(3))",
  51. "INSERT INTO ado_s9_kpi_value_l1_day (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,module_code,metric_code,metric_value,target_value,status_color,trend_flag,calc_time) VALUES (500008,1,1,1,1,'OK',CURDATE(),NOW(3),NOW(3),0,1,'S8','S8_ALERT',4,0,'red','up',NOW(3))",
  52. "INSERT INTO ado_s9_kpi_value_l1_day (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,module_code,metric_code,metric_value,target_value,status_color,trend_flag,calc_time) VALUES (500009,1,1,1,1,'OK',CURDATE(),NOW(3),NOW(3),0,1,'S9','S9_INDEX',86,95,'yellow','down',NOW(3))",
  53. "INSERT INTO ado_s8_alert_record (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,alert_code,rule_code,metric_code,metric_value,target_value,level_code,alert_time,message) VALUES (800001,1,1,1,1,'OPEN',CURDATE(),NOW(3),NOW(3),0,1,'ALARM-S2-001','RULE-S2-OEE','S2_SAT',85,99,'critical',NOW(3),'机台 A-04 停机超时')",
  54. "INSERT INTO ado_s8_alert_record (id,tenant_id,org_id,company_id,factory_id,status,biz_date,create_time,update_time,is_deleted,is_active,alert_code,rule_code,metric_code,metric_value,target_value,level_code,alert_time,message) VALUES (800002,1,1,1,1,'OPEN',CURDATE(),NOW(3),NOW(3),0,1,'ALARM-S4-001','RULE-S4-MATL','S4_ONTIME',93.8,99,'high',NOW(3),'物料 P-99 缺料预警')"
  55. ]
  56. for s in inserts:
  57. cur.execute(s)
  58. cur.execute("SELECT COUNT(*) FROM ado_s9_kpi_value_l1_day WHERE tenant_id=1 AND factory_id=1")
  59. a = cur.fetchone()[0]
  60. cur.execute("SELECT COUNT(*) FROM ado_s8_alert_record WHERE tenant_id=1 AND factory_id=1")
  61. b = cur.fetchone()[0]
  62. print(f"ok: l1={a}, s8_alert={b}")
  63. finally:
  64. conn.close()