| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- # -*- coding: utf-8 -*-
- """盘点各模块 LayoutItem / KpiMaster 状况,评估 S4 样式推广工作量。"""
- from __future__ import annotations
- import sys
- import pymysql
- sys.stdout.reconfigure(encoding='utf-8')
- CONN = dict(
- host='123.60.180.165', port=3306,
- user='aidopremote', password='1234567890aiDOP#',
- database='aidopdev', charset='utf8mb4', autocommit=True,
- )
- MODULES = ["S1", "S2", "S3", "S4", "S5", "S6", "S7", "S9"]
- TENANTS = [("默认", 1300000000001), ("Demo", 1300000000888)]
- def main() -> None:
- conn = pymysql.connect(**CONN)
- with conn.cursor(pymysql.cursors.DictCursor) as cur:
- # 1. KpiMaster 概览
- print("=" * 100)
- print("【KpiMaster】各模块指标数(按层级)—— 仅默认租户视角")
- print("-" * 100)
- for m in MODULES:
- cur.execute(
- """
- SELECT MetricLevel, COUNT(*) AS cnt
- FROM ado_smart_ops_kpi_master
- WHERE TenantId = %s AND ModuleCode = %s AND IsEnabled = 1
- GROUP BY MetricLevel
- """,
- (TENANTS[0][1], m),
- )
- rows = {r['MetricLevel']: r['cnt'] for r in cur.fetchall()}
- print(f" {m:<4} L1={rows.get(1, 0):<3} L2={rows.get(2, 0):<3} L3={rows.get(3, 0):<3}")
- # 2. LayoutItem 概览
- print("\n" + "=" * 100)
- print("【LayoutItem】各模块已配置的布局行数 + PanelZone 分布")
- print("-" * 100)
- for tname, tid in TENANTS:
- print(f"\n --- [{tname}租户 {tid}] ---")
- for m in MODULES:
- cur.execute(
- """
- SELECT MetricLevel, PanelZone, COUNT(*) AS cnt
- FROM ado_smart_ops_layout_item
- WHERE TenantId = %s AND ModuleCode = %s AND IsEnabled = 1
- GROUP BY MetricLevel, PanelZone
- ORDER BY MetricLevel, PanelZone
- """,
- (tid, m),
- )
- rows = cur.fetchall()
- total = sum(r['cnt'] for r in rows)
- if total == 0:
- print(f" {m:<4} (无布局)")
- continue
- parts = []
- for r in rows:
- lv = f"L{r['MetricLevel']}"
- zone = r['PanelZone'] or "(空)"
- parts.append(f"{lv}/{zone}={r['cnt']}")
- print(f" {m:<4} total={total:<3} {' '.join(parts)}")
- # 3. 每个模块的 L2 指标清单(默认租户)+ PanelZone
- print("\n" + "=" * 100)
- print("【L2 详情】各模块 L2 指标 + 是否已分配 panel_zone(默认租户)")
- print("-" * 100)
- for m in MODULES:
- cur.execute(
- """
- SELECT k.MetricCode, k.MetricName, k.Unit,
- li.PanelZone, li.SortNo AS LayoutSort
- FROM ado_smart_ops_kpi_master k
- LEFT JOIN ado_smart_ops_layout_item li
- ON li.TenantId = k.TenantId AND li.ModuleCode = k.ModuleCode
- AND li.MetricCode = k.MetricCode AND li.MetricLevel = 2
- WHERE k.TenantId = %s AND k.ModuleCode = %s AND k.IsEnabled = 1 AND k.MetricLevel = 2
- ORDER BY k.SortNo
- """,
- (TENANTS[0][1], m),
- )
- rows = cur.fetchall()
- print(f"\n [{m}] L2={len(rows)} 条")
- for r in rows[:12]:
- zone = r['PanelZone'] or "—"
- print(f" {r['MetricCode']:<18} {r['MetricName']:<28} 单位={str(r['Unit']):<8} zone={zone}")
- if len(rows) > 12:
- print(f" ...(还有 {len(rows) - 12} 条省略)")
- conn.close()
- if __name__ == "__main__":
- main()
|