Files
cma-management/check_cma_detail.py
Hermes CI Fix 3dddd36866 init: 管理会计OS初始代码
包含前后端完整代码:
- 前端:Vue3+Vite+ElementPlus
- 后端:FastAPI+SQLAlchemy
- 模块:驾驶舱/KPI/战略地图/预警/预算/成本/预测/改善行动
- 当前版本:v1.0.0
2026-05-28 17:32:22 +08:00

141 lines
4.4 KiB
Python

#!/usr/bin/env python3
"""管理会计OS数据详情检查"""
import json, urllib.request
BASE = "http://127.0.0.1:8010"
def login():
data = json.dumps({"username":"admin","password":"admin123"}).encode()
req = urllib.request.Request(BASE + "/api/cma/auth/login", data=data,
headers={"Content-Type":"application/json"}, method="POST")
resp = json.loads(urllib.request.urlopen(req).read())
return resp["token"]
def api(path, token):
auth = "Bearer " + token
req = urllib.request.Request(BASE + path, headers={"Authorization": auth})
resp = json.loads(urllib.request.urlopen(req).read())
return resp
token = login()
# KPI详情
print("="*60)
print("KPI定义(前5条)")
print("="*60)
data = api("/api/cma/kpis", token)
for kpi in data.get("data", data)[:5]:
print(" [%s] %s" % (kpi.get("code","?"), kpi.get("name","?")))
print(" 维度:%s | 权重:%s | 单位:%s" % (
kpi.get("dimension","?"), kpi.get("weight","?"), kpi.get("unit","?")))
print(" 当前值:%s | 目标值:%s | 实际值:%s" % (
kpi.get("current_value","-"), kpi.get("target_value","-"), kpi.get("actual_value","-")))
if kpi.get("threshold_green"):
print(" 阈值: 绿<%s 黄<%s 红<%s" % (
kpi.get("threshold_green",""), kpi.get("threshold_yellow",""), kpi.get("threshold_red","")))
print()
# 用户
print("="*60)
print("用户列表")
print("="*60)
data = api("/api/cma/users", token)
if isinstance(data, dict):
# 可能是 {username: {...}} 格式
users = [data[k] for k in data if isinstance(data[k], dict)]
else:
users = data
for u in users:
print(" %-12s | %-15s | %-10s | role_code=%s" % (
u.get("username","?"), u.get("name","?"), u.get("role_name","?"), u.get("role","?")))
# 战略地图
print()
print("="*60)
print("战略地图")
print("="*60)
data = api("/api/cma/maps", token)
for m in data.get("data", data):
print(" [%s] %s - %s, 状态:%s" % (
m.get("id","?"), m.get("title","?"), m.get("period","?"), m.get("status","?")))
# 数据源
print()
print("="*60)
print("数据源配置")
print("="*60)
data = api("/api/cma/data/sources", token)
for s in data.get("data", data):
print(" %s - 类型:%s, API:%s" % (
s.get("name","?"), s.get("type","?"), s.get("api_endpoint","?")))
# 通知渠道
print()
print("="*60)
print("通知渠道")
print("="*60)
data = api("/api/cma/notifications/channels", token)
for c in data.get("data", data):
print(" %s - %s, 启用:%s" % (
c.get("name","?"), c.get("type","?"), c.get("enabled","?")))
# 预警规则
print()
print("="*60)
print("预警规则(前8条)")
print("="*60)
data = api("/api/cma/alert-rules", token)
rules = data.get("data", data)
print(" 共 %d 条规则" % len(rules))
for r in rules[:8]:
print(" %s - KPI:%s, 条件:%s %s" % (
r.get("name","?"), r.get("kpi_code","?"), r.get("condition","?"), r.get("threshold","?")))
# 预警记录
print()
print("="*60)
print("预警记录(前6条)")
print("="*60)
data = api("/api/cma/alerts", token)
for a in data.get("data", data)[:6]:
print(" [%s] %s" % (a.get("severity","?"), a.get("kpi_name","?")))
print(" 值:%s/%s 阈值:%s 状态:%s 处理人:%s" % (
a.get("current_value","?"), a.get("target_value","?"),
a.get("threshold","?"), a.get("status","?"), a.get("resolver","?")))
# 行动计划
print()
print("="*60)
print("行动计划")
print("="*60)
data = api("/api/cma/action-plans", token)
for p in data.get("data", data):
print(" %s - KPI:%s, 状态:%s, 负责人:%s" % (
p.get("title","?"), p.get("kpi_code","?"), p.get("status","?"), p.get("assignee","?")))
# Dashboard summary
print()
print("="*60)
print("Dashboard Summary")
print("="*60)
data = api("/api/cma/dashboard/summary", token)
print(" KPI总数:%s" % data.get("kpi_total"))
print(" 预警数:%s" % data.get("alert_count"))
ds = data.get("dimension_stats", {})
print(" 维度统计: %s" % json.dumps(ds, ensure_ascii=False))
# 权限
print()
print("="*60)
print("权限配置")
print("="*60)
data = api("/api/cma/permissions/config", token)
rp = data.get("route_permissions", {})
print(" 路由权限(每个角色模块数):")
for role, modules in rp.items():
print(" %-12s: %d 个模块" % (role, len(modules)))
ap = data.get("action_permissions", {})
print(" 操作权限:")
for role, actions in ap.items():
print(" %-12s: %s" % (role, actions))