feat(management): 驾驶舱KPI环比(prev_kpis+delta)+异常卡带员工名跳详情+列表进详情带筛选
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -184,6 +184,26 @@ async def management_dashboard(
|
||||
"lifecycle": lifecycle,
|
||||
}
|
||||
|
||||
# ---- 前窗环比基线(批次D):prev 窗全员一次 period_metrics,聚合式与
|
||||
# kpis 完全同式(活跃客户=Σactive_friends、活跃员工=天数>0 计数、
|
||||
# msg_total=Σ(sent+recv)、cust_threads=Σ)。lifecycle(期末存量)与
|
||||
# 通话(全渠道口径,表无渠道维)不加环比——期末/混合口径的环比意义弱。
|
||||
ps, pe = prev_window(start, end)
|
||||
prev_pms = list((await period_metrics(session, ps, pe, ch)).values())
|
||||
prev_kpis = {
|
||||
# 全员求和口径同 kpis(跨员工共享客户可能重复计)
|
||||
"active_customers": sum(p.active_friends for p in prev_pms),
|
||||
"active_employees": sum(1 for p in prev_pms if p.days_with_data > 0),
|
||||
"msg_total": sum(p.msg_sent + p.msg_recv for p in prev_pms),
|
||||
"cust_threads": sum(p.cust_threads for p in prev_pms),
|
||||
}
|
||||
# 前窗无消息(prev=0)不算环比——None 而非 0/负∞
|
||||
prev_msg = prev_kpis["msg_total"]
|
||||
msg_delta = (
|
||||
round((kpis["msg_total"] - prev_msg) / prev_msg, 3)
|
||||
if prev_msg > 0 else None
|
||||
)
|
||||
|
||||
# ---- 维度分布(全员 score_employee 的维度状态计数) ----
|
||||
dim_summary: dict[str, dict] = {}
|
||||
for a in assembled.values():
|
||||
@@ -207,7 +227,13 @@ async def management_dashboard(
|
||||
)
|
||||
|
||||
# ---- 异常汇总:critical 先、warning 后,同 severity 按 affected desc ----
|
||||
anomalies = [a for data in assembled.values() for a in data["anomalies"]]
|
||||
# dashboard 卡片 enrich employee_name(staff 名,assemble 已在手)供前端
|
||||
# 跳员工详情;员工详情端点的 anomalies 不带(自指无意义)
|
||||
anomalies = [
|
||||
{**a, "employee_name": data["name"]}
|
||||
for data in assembled.values()
|
||||
for a in data["anomalies"]
|
||||
]
|
||||
sev_rank = {"critical": 0, "warning": 1}
|
||||
anomalies.sort(key=lambda a: (
|
||||
sev_rank.get(a["severity"], 9),
|
||||
@@ -222,6 +248,8 @@ async def management_dashboard(
|
||||
"metric_version": METRIC_VERSION,
|
||||
"config_source": config_source,
|
||||
"kpis": kpis,
|
||||
"prev_kpis": prev_kpis,
|
||||
"msg_delta": msg_delta,
|
||||
"communication_trend": comm_trend,
|
||||
"service_trend": service_trend,
|
||||
"lifecycle": lifecycle,
|
||||
|
||||
Reference in New Issue
Block a user