自动扫描关键指标,发现异常趋势时主动生成建议并推送。
flowchart TD
A[定时扫描每小时触发] --> B[遍历所有 insight_rules]
B --> C{规则条件
是否触发?}
C -->|否| D[跳过]
C -->|是| E[生成 insight_event]
E --> F[采集指标快照数据]
F --> G[填充建议模板]
G --> H[评估严重等级]
H --> I{action_type?}
I -->|recommend| J[推送建议到飞书]
I -->|auto_execute| K[自动执行操作]
I -->|notify_only| L[仅通知]
J --> M{用户反馈?}
K --> N[记录执行结果]
L --> M
M -->|执行| O[执行操作并记录]
M -->|忽略| P[记录忽略决策]
O --> Q[更新决策偏好模型]
P --> Q
N --> Q
D --> B
class I,M decision
class D,L,P skip
class A,B,C,E,F,G,H,J,K,N,O,Q process
classDef process fill:#1a2744,stroke:#58a6ff,stroke-width:1px,color:#c9d1d9
classDef decision fill:#3a2a1a,stroke:#f0883e,stroke-width:2px,color:#f0883e
classDef done fill:#1a3a2a,stroke:#3fb950,stroke-width:1px,color:#3fb950
classDef error fill:#3a1a1a,stroke:#f85149,stroke-width:2px,color:#f85149
classDef warning fill:#3a2a1a,stroke:#d29922,stroke-width:1px,color:#d29922
classDef skip fill:#21262d,stroke:#484f58,color:#8b949e
数据模型
CREATE TABLE insight_rules (
id BIGSERIAL PRIMARY KEY,
name VARCHAR(128) NOT NULL,
description TEXT,
metric_source VARCHAR(64) NOT NULL, -- 指标来源(如 supplier_price_competitiveness)
condition JSONB NOT NULL, -- 触发条件(如 {"change_pct": -10, "window_days": 3})
suggestion TEXT NOT NULL, -- 建议方案模板
severity VARCHAR(16) DEFAULT 'info', -- info/warning/critical
action_type VARCHAR(32), -- recommend/auto_execute/notify_only
enabled BOOLEAN DEFAULT true,
created_at TIMESTAMPTZ DEFAULT now()
);
CREATE TABLE insight_events (
id BIGSERIAL PRIMARY KEY,
rule_id BIGINT REFERENCES insight_rules(id),
triggered_at TIMESTAMPTZ NOT NULL,
metric_data JSONB NOT NULL, -- 触发时的指标快照
suggestion_text TEXT NOT NULL,
channel VARCHAR(32) DEFAULT 'feishu',
status VARCHAR(16) DEFAULT 'pending', -- pending/accepted/ignored/executed
user_feedback VARCHAR(16), -- 用户的反馈
processed_at TIMESTAMPTZ
);
API 接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/insights/rules | 获取所有规则 |
| POST | /api/insights/rules | 创建规则 |
| GET | /api/insights/events | 获取事件列表 |
| POST | /api/insights/events/{id}/feedback | 提交反馈 |
业务逻辑
系统每小时触发一次全量扫描任务,逐条检查 insight_rules 中 enabled=true 的规则。从指标存储中拉取对应 metric_source 的数据,与 condition 中定义的阈值/趋势做比对。触发后生成 insight_events 记录,通过飞书机器人推送消息。用户在飞书中回复"执行"或"忽略"后,系统回调更新 user_feedback 和 status 字段,同时记录决策偏好用于优化后续建议策略。