feat(analytics): 看板管理化补强——员工活跃排行表+预警行动入口卡片

管理者反馈「纯汇总数字看不到有用信息」:overview 载荷扩
staff_ranking(全员行:msg_total rollup 优先/空表回退 msg_daily_stats
聚合,active_* 两路径统一走 msg_daily_stats 窗内 distinct peer——
stat_daily_staff 的 active_* 是当日快照,跨日 SUM/MAX 语义皆错;
call_cnt 按 user_id 落窗直查;环比同期对齐)+ actions(该回未回 2h/
真流失 30d/敏感词 pending,复用已测试查询路径各取 total)。

前端看板:toolbar 下三张可点行动卡(0 灰显仍可点,直达处置页,
随 channel 切换刷新)+ 趋势卡下员工排行表(max-height 420 滚动,
未映射小 tag,环比色同卡片惯例 None 显 '-')。

测试 574→577 全绿(rollup 聚合/回退/行动计数三新);build 过。

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-07 11:48:24 +08:00
parent 8499a74a72
commit 487f45b074
4 changed files with 448 additions and 1 deletions
+10
View File
@@ -19,6 +19,14 @@ export interface OverviewCards {
export interface TrendPoint { day: number; msg: number; active_customers: number; call_cnt: number }
export interface AnomalyStaff { user_id: string; yesterday: number; prev7_mean: number; new?: boolean }
export interface Anomaly { total_delta_pct: number; yesterday_total: number; prev7_mean: number; staff: AnomalyStaff[] }
// 员工活跃排行(2026-09-07 管理者反馈补强):active_*=窗内 distinct peer,
// msg_delta 仅周/月且当前/前窗均非 0 才有值
export interface StaffRankingRow {
user_id: string; name: string; unmapped: boolean
msg_total: number; active_friends: number; active_rooms: number
call_cnt: number; msg_delta: number | null
}
export interface ActionCounts { unreplied_2h: number; churn_real_30d: number; sensitive_pending: number }
export interface OverviewResp {
scope: Scope
channel: Channel
@@ -26,6 +34,8 @@ export interface OverviewResp {
cards: OverviewCards
trend: TrendPoint[]
anomaly: Anomaly | null
staff_ranking: StaffRankingRow[]
actions: ActionCounts
}
export interface HealthResp { data_as_of: number | null; entities: { table: string; last_seen: string | null }[] }
export interface ChurnRow {