audit-risk-README.md 10 KB

🛡️ 拉迷家居 · 风险预警审计技能文档

版本: v1.0 适用范围: 拉迷家居企微群聊风险监控系统 维护人: 风控团队


一、系统概述

1.1 背景

拉迷家居在企微运营约 60+ 个业主群,每日产生数百条聊天消息。现有风险预警系统通过「关键词匹配 + AI 审核」双重机制自动检测群聊中的风险内容(投诉、质量、法律纠纷等)。

本技能文档提供一套完整的事后审计工具,用于:

  • 检验预警系统的覆盖效果
  • 发现漏报的潜在风险消息
  • 优化关键词库和预警规则
  • 生成可视化管理报告

1.2 预警系统工作原理

消息到达 → 关键词匹配(AC自动机) → 命中? → AI深度分析(DeepSeek) → 有风险? → 创建RiskEvent → 通知负责人
                ↓ 未命中                    ↓ 无风险
              丢弃                        丢弃

关键瓶颈:

  • 关键词命中率直接影响预警覆盖面
  • AI 分析是第二道闸门,但只在关键词命中后触发
  • 关键词未命中 → 消息对预警系统完全不可见

二、审计脚本清单

脚本 文件 用途 建议频率 耗时
覆盖审计 audit-risk-coverage.ts 关键词覆盖率 + 漏报检测 + 可视化 HTML 每周 ~30s
深度分析 audit-risk-deep-analysis.ts 多维度分析 + AI 管理建议 + MD 报告 每月 ~10s
昵称回填 backfill-member-nicknames.ts 从 Message 表回填 GroupMember 缺失昵称 按需 ~30s

三、快速开始

3.1 环境要求

# .env 中需要配置
DEEPSEEK_API_KEY=sk-xxxx      # AI 分析必需(可选,不配则跳过 AI 评审)
QIWE_GUID=B8591A9D-B540-...

3.2 运行覆盖审计

cd backend
npx tsx scripts/audit-risk-coverage.ts

输出: audit-risk-YYYY-MM-DD.html — 在浏览器中打开,包含:

  • 概览卡片(消息量、预警数、覆盖率)
  • 已触发预警列表
  • 漏报群列表(含消息样本 + AI 评审结论)
  • 未覆盖关键词云
  • 管理建议卡片

3.3 运行深度分析

cd backend
npx tsx scripts/audit-risk-deep-analysis.ts

输出: audit-risk-deep-YYYY-MM-DD.md — Markdown 格式,包含:

  • 消息活动分布(按天/群/参与者)
  • 关键词类别有效性排名
  • 漏报原因分类(促销/业务/真实风险)
  • AI 管理建议(5 维度)
  • 行动项清单(立即/短期/持续)

四、本期审计结果(2026-06-15 ~ 06-22)

4.1 核心数据

指标 数值 评估
文本消息总量 1,470 日均 184 条
活跃群数 149 -
参与人数 142 -
风险事件 4 条 仅覆盖 3 个群
启用关键词 181 个 -
触发过预警的关键词 4 个 覆盖率 2.2% 🔴
完全未触发的关键词 176 个 占比 97.2%
漏报群 21 个 高危 3 / 中危 17 / 低危 1

4.2 已触发的 4 条预警

关键词 触发群 严重度
优惠 多个群 low~medium
投诉 - -
(其余 2 个) - -

4.3 关键词类别有效率

类别 总词数 命中词 命中消息 有效率
价格讨论 22 5 25 23%
质量工艺 17 8 8 47%
安装施工 12 2 3 17%
负面情绪 17 1 2 6%
竞品对比 23 1 1 4%
投诉抱怨 51 0 0 0% 🔴
敏感词 25 0 0 0% 🔴
法律监管 8 0 0 0% 🔴

4.4 漏报分类

类型一:促销营销用词(占比最大 ~80%)

  • 「定金」「订金」「优惠」出现在大量 618 促销广播中
  • 同一营销文案在 10+ 个群重复发送
  • AI 评审: 正常促销,无真实风险
  • 结论: 误报,不需预警

类型二:正常业务沟通(~12%)

  • 「色差」用于"告别线上色差"的到店体验邀约
  • 「垃圾」用于询问垃圾桶尺寸
  • 「宜家」用于游戏互动"宜家对杯"
  • 结论: 误报,不需预警

类型三:真实质量风险(~8%,需关注)

  • 「脱胶」- 客户在 VIP 服务群反映产品脱胶
  • AI 评审: ⚠ 有风险(medium),安装师傅已提出修补方案
  • 结论: 应预警但未预警

4.5 关键发现

  1. 关键词库严重冗余: 181 个词中 176 个从未触发过预警,97% 的词是"沉睡词"
  2. 三大类别完全失效: 投诉抱怨(51词)、敏感词(25词)、法律监管(8词) 合计 84 个关键词零命中
  3. 真漏报极少: 21 个"漏报群"中,仅 2-3 个属于真实风险(脱胶等),其余均为促销营销用词误匹配
  4. 盲区存在: 纯关键词无法识别口语化抱怨("柜子有缝""板子发黑""味道大"等)

五、管理建议

5.1 关键词库优化(高优先级)

操作 涉及关键词 原因
🔴 移除/降级 定金、订金、优惠、折扣、打折、砍价 大量 618 促销误匹配,非真实风险
🔴 移除/降级 色差、垃圾、宜家 正常业务语境高频出现
🟡 保留升级 脱胶、开裂、变形、发霉、装错 质量类词命中即应预警
🟡 保留观察 投诉、维权、退款、甲醛、超标 核心敏感词,虽本期未命中但须保留
🟢 新增 柜子有缝、板子发黑、味道大、掉皮 补充口语化投诉表达

目标: 将关键词库从 181 精简至 60-80 个高质量词,覆盖率从 2.2% 提升至 10%+

5.2 预警规则优化

  1. 质量类关键词独立规则: "脱胶/开裂/变形/发霉/装错/尺寸不对" → 命中即报,不经过 AI 二次确认
  2. 聚合升级规则: 同一群 1 小时内命中 ≥3 个不同中低危关键词 → 自动升级为高危预警
  3. 频次监控: 连续 3 天命中但 AI 判定无风险的关键词 → 标记为疑似误报,人工审核

5.3 盲区补充

盲区类型 示例 检测方案
口语化投诉 "柜子有缝""板子黑了一块" 补充口语化关键词或正则变体
情绪爆发 连发 5+ 条消息、大量感叹号 统计消息密度和标点密度
图片/语音 客户发损坏照片 标注图片+文字交叉检测(需 OCR)
群内@负责人 @店长 + 投诉内容 检测 @模式 + 负面词组合

5.4 流程优化

  1. 三级响应机制:

    • 高危预警 → 15 分钟内客服主管介入
    • 中危预警 → 30 分钟内区域经理跟进
    • 低危预警 → 2 小时内门店负责人确认
  2. 闭环证据: 预警关闭前需提供解决证据(维修照片、客户确认截图),防止"已读不回"

  3. 误报标记: 确认为误报的事件必须在关闭原因中注明,作为优化关键词的输入

5.5 定期审计节奏

频率 动作 负责
每日 查看风控大屏 pending 事件 值班客服
每周一 运行覆盖审计脚本,对比上周 风控专员
每月初 运行深度分析,输出月度报告 风控负责人
每月底 关键词大扫除(淘汰零命中词) 风控 + 运营

核心 KPI:

  • 关键词覆盖率 > 10%(当前 2.2%)
  • 误报率 < 30%
  • 预警响应时间 < 30 分钟
  • 漏报群 < 5 个/月(含高危 0 个)

六、代码架构说明

6.1 audit-risk-coverage.ts

数据查询 (fetchAllData)
  ├── Message (msgType=0,2,13,29)
  ├── RiskEvent
  ├── RiskKeyword (enabled=true)
  └── GroupChat (roomId→roomName 映射)
      ↓
覆盖分析 (analyzeCoverage)
  ├── 按群分组消息
  ├── 关键词匹配 (matchKeywordsInMessages)
  ├── 漏报检测 (对比 alertedRoomIds / alertedKeywords)
  └── 按严重度排序输出
      ↓
AI 评审 (aiReviewMissedAlert)
  └── 高危/中危漏报 → DeepSeek 二次判定
      ↓
HTML 报告 (generateHTML)
  └── 可视化报告 + 管理建议卡片

6.2 audit-risk-deep-analysis.ts

数据查询 (fetchData) + 基础统计 (basicStats)
  ├── 按天/按群/按发送者分布
  └── 活跃群 TOP 15
      ↓
关键词匹配分析 (matchAnalysis)
  ├── 全量关键词命中次数
  ├── 各类别有效率排行
  └── 命中消息列表
      ↓
漏报分析 (missedVsAlerted)
  ├── 逐群对比命中词 vs 已预警词
  ├── 漏报群分类(高危/中危/低危)
  └── 真正未覆盖关键词
      ↓
AI 管理建议 (aiSummaryReport)
  └── 5 维度管理建议(关键词/规则/盲区/流程/审计)
      ↓
MD 报告生成

6.3 关键依赖

import Parse from '../src/db/parse-client.js';  // Parse Server SDK
// AI: DeepSeek API (/v1/chat/completions)
// 模型: deepseek-chat, temperature=0.2~0.4

七、附录

A. 相关文件索引

文件 说明
audit-risk-coverage.ts 覆盖审计脚本
audit-risk-deep-analysis.ts 深度分析脚本
backfill-member-nicknames.ts 昵称回填脚本
audit-risk-2026-06-15-22.html 本期 HTML 报告
audit-risk-2026-06-15-22.md 本期 MD 报告(简版)
audit-risk-deep-2026-06-15-22.md 本期深度 MD 报告
../src/services/message-analyzer.service.ts 线上分析引擎
../src/services/compliance-check.service.ts 合规检查 + AC 自动机
../src/services/ai-analysis.service.ts DeepSeek AI 分析
../src/services/risk-event.service.ts 风险事件 CRUD

B. 常见问题

Q: 脚本跑很慢? A: AI 评审阶段每个漏报群调一次 DeepSeek,限制最多 20 次。取消 AI 可不配 DEEPSEEK_API_KEY。

Q: 漏报数量为什么和实际感觉不一致? A: 当前漏报检测基于"关键词命中但未触发预警"。关键词没命中的消息不在检测范围内(盲区)。

Q: 如何新增关键词? A: RiskKeyword 表手动添加,或通过前端「关键词管理」页面操作。系统每 5 分钟自动刷新 AC 自动机。

Q: 如何查看实时预警? A: 前端风控大屏 http://localhost:4041/risk-control/dashboard,或预警弹窗(每 30s 轮询)。


技能文档由风控团队维护,每次重大变更后更新版本号。