| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #!/usr/bin/env python3
- """P-039: seed tenant-isolated test facts so diagnosis loops can run.
- Does not claim production truth. Rows are tagged P039 / P039_TEST_20260818.
- """
- from __future__ import annotations
- import re
- from pathlib import Path
- import pymysql
- from pymysql.constants import CLIENT
- ROOT = Path(__file__).resolve().parents[4]
- CONFIG = ROOT / "server" / "Admin.NET.Application" / "Configuration" / "Database.json"
- A = {"tenant": 838257186181189, "factory": 838257186320453}
- B = {"tenant": 838257212780613, "factory": 838257212858437}
- DEMO = {"tenant": 838257237606469, "factory": 838257237676101}
- def connect() -> pymysql.Connection:
- raw = CONFIG.read_text(encoding="utf-8-sig")
- value = next(
- item
- for item in re.findall(r'(?m)^\s*"ConnectionString"\s*:\s*"([^"]+)"', raw)
- if "Database=aidopdev" in item
- )
- parts = {
- item.split("=", 1)[0].strip().lower(): item.split("=", 1)[1].strip()
- for item in value.split(";")
- if "=" in item
- }
- return pymysql.connect(
- host=parts["server"],
- port=int(parts["port"]),
- user=parts["uid"],
- password=parts["pwd"],
- database=parts["database"],
- charset="utf8mb4",
- autocommit=True,
- client_flag=CLIENT.MULTI_STATEMENTS,
- cursorclass=pymysql.cursors.DictCursor,
- )
- SQL = f"""
- INSERT INTO ado_s8_exception (
- tenant_id, factory_id, exception_code, title, description, scene_code, source_type,
- status, severity, priority_score, priority_level, occurrence_dept_id, responsible_dept_id,
- timeout_flag, created_at, is_deleted, module_code, consecutive_hit_count, consecutive_miss_count,
- related_object_code, created_by)
- SELECT {A['tenant']}, {A['factory']}, 'EX-20260818-P039-A', 'P039 测试异常 产销协同超期',
- 'P039 编制测试数据,用于 A 租户 S8 诊断闭环测通', 'S1', 'MANUAL', 'NEW', 'SERIOUS', 80.00, 'P1',
- {A['factory']}, {A['factory']}, 0, NOW(), 0, 'S1', 1, 0, 'UATA-SO-P039', 'P039'
- FROM DUAL
- WHERE NOT EXISTS (
- SELECT 1 FROM ado_s8_exception
- WHERE tenant_id={A['tenant']} AND factory_id={A['factory']} AND exception_code='EX-20260818-P039-A');
- INSERT INTO mdp_std_fqc_result (
- tenant_id, source_system, bill_no, inspect_time, material_code, material_name, judgment,
- inspect_qty, qualified_qty, unqualified_qty, sap_work_order_no, source_row_id, source_biz_key,
- sync_batch_id, sync_time)
- SELECT {B['tenant']}, 'P039', 'UATB-P039-FQC-001', NOW(), '3121C0035', 'P039测试物料', 'NG',
- 10, 0, 10, 'UATB-WO-001', 'P039-B-FQC-001', 'P039-B-FQC-001', 'P039_TEST_20260818', NOW()
- FROM DUAL
- WHERE NOT EXISTS (
- SELECT 1 FROM mdp_std_fqc_result
- WHERE tenant_id={B['tenant']} AND source_row_id='P039-B-FQC-001');
- INSERT INTO mdp_std_s6_report (
- tenant_id, factory_id, source_system, work_order_no, report_date, report_qty,
- source_row_id, source_biz_key, sync_batch_id, sync_time)
- SELECT {B['tenant']}, {B['factory']}, 'P039', 'UATB-WO-001', NOW(), 8,
- 'P039-B-S6-001', 'P039-B-S6-001', 'P039_TEST_20260818', NOW()
- FROM DUAL
- WHERE NOT EXISTS (
- SELECT 1 FROM mdp_std_s6_report
- WHERE tenant_id={B['tenant']} AND source_system='P039' AND source_biz_key='P039-B-S6-001');
- INSERT INTO qms_qcp_inspbill (
- id, tenant_id, FBILLNO, FBILLSTATUS, FCREATETIME, SampleQty, TestQty, FCOMMENT, UnqualifiedDescription)
- SELECT 101991258985080001, {DEMO['tenant']}, 'UATDEMO-P039-IQC-001', 'NG', NOW(), 10, 10,
- 'P039 编制测试 IQC', 'P039 test NG'
- FROM DUAL
- WHERE NOT EXISTS (
- SELECT 1 FROM qms_qcp_inspbill
- WHERE tenant_id={DEMO['tenant']} AND FBILLNO='UATDEMO-P039-IQC-001');
- """
- def main() -> None:
- conn = connect()
- try:
- with conn.cursor() as cur:
- cur.execute(SQL)
- while True:
- if not cur.nextset():
- break
- with conn.cursor() as cur:
- cur.execute(
- """
- SELECT 'A_s8' k, COUNT(*) c FROM ado_s8_exception
- WHERE tenant_id=%s AND exception_code='EX-20260818-P039-A' AND IFNULL(is_deleted,0)=0
- UNION ALL
- SELECT 'B_fqc', COUNT(*) FROM mdp_std_fqc_result
- WHERE tenant_id=%s AND bill_no='UATB-P039-FQC-001'
- UNION ALL
- SELECT 'B_s6', COUNT(*) FROM mdp_std_s6_report
- WHERE tenant_id=%s AND source_biz_key='P039-B-S6-001'
- UNION ALL
- SELECT 'D_iqc', COUNT(*) FROM qms_qcp_inspbill
- WHERE tenant_id=%s AND FBILLNO='UATDEMO-P039-IQC-001'
- """,
- (A["tenant"], B["tenant"], B["tenant"], DEMO["tenant"]),
- )
- print({row["k"]: row["c"] for row in cur.fetchall()})
- finally:
- conn.close()
- if __name__ == "__main__":
- main()
|