← 返回文档中心

决策支持引擎

决策支持引擎(Insight Engine)

自动扫描关键指标,发现异常趋势时主动生成建议并推送。

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_rulesenabled=true 的规则。从指标存储中拉取对应 metric_source 的数据,与 condition 中定义的阈值/趋势做比对。触发后生成 insight_events 记录,通过飞书机器人推送消息。用户在飞书中回复"执行"或"忽略"后,系统回调更新 user_feedbackstatus 字段,同时记录决策偏好用于优化后续建议策略。