MM Daily Digest 数据分析流水线
从 Mattermost 聊天记录自动提取事件、聚合任务、匹配项目、生成洞察,最终推送到 Agent Portal 门户的完整数据分析 Pipeline。
概述
MM Daily Digest(mm-daily-digest)是 Rabbit 开发和维护的后端数据分析系统,负责将每天散落在各 Bot 频道的 Mattermost 对话记录,经过多层处理,转化为结构化的项目洞察和可操作的管理建议。
Pipeline 架构
L0 采集 (collector.py)
↓ Mattermost API 拉取消息,按 bot 分组,过滤噪声
L1 提取 (extractor.py)
↓ LLM 提取事件,40K chars/chunk,分块重试
L1.5 聚合 (aggregator.py) ← 新增
↓ 碎片事件合并为 5-10 个"任务"
L2 日报 (per-bot summary)
↓ 每个 bot 生成精简日报
L3 全局洞察 (insights)
↓ things_done + needs_attention + NBA
项目匹配 (project_tracker.py)
↓ 事件→项目自动归类
推送 (pusher.py)
→ Supabase (AP_dashboard / AP_daily_activities / AP_daily_insights)
各层详情
L0 采集 — collector.py
- 调用 Mattermost REST API
- 按 bot 分组、过滤系统消息和噪声
- 增量拉取,只获取新消息
L1 提取 — extractor.py
- LLM 处理,每 40K 字符一个分块
- 提取结构化事件(时间、类型、描述)
- 带重试逻辑
L1.5 聚合 — aggregator.py(关键创新)
解决的核心问题:L1 产出的是消息级碎片事件(rabbit 83 条、webbot 120 条),直接展示就是流水账。
聚合效果对比:
| Bot | 聚合前 | 聚合后 |
|---|---|---|
| webbot | 120 条流水账 | 9 个任务 |
| rabbit | 83 条流水账 | 8 个任务 |
| quokka | 28 条 | 6 个任务 |
每个任务包含:标题、时间段、状态、产出(deliverables)
L2 日报
- 每个 bot 精简日报,10 字 one-liner 摘要
- 重点是产出和未完成事项,不复述对话
L3 全局洞察
| 维度 | 旧版 | 新版 |
|---|---|---|
| 做了几件事 | 30 条碎片 timeline | 12 件事(按主题聚合) |
| 需关注 | 21 条红色告警 | 5 条,每条有 NBA |
| 焦点 | 3 条(无描述) | 3 件事标 is_focus: true |
| bot 摘要 | 长描述 | 10 字 one-liner |
项目追踪 — project_tracker.py
- 自动从事件中发现和匹配项目
- 支持增量匹配(
run_incremental_matching) - curated 保护机制:手动整理的项目标记
curated: true,pipeline 只追加里程碑,不改名称/描述/状态
NBA(Next Best Action)机制
每条 needs_attention 项附带:
{
"nba": {
"action": "建议操作描述",
"target_bot": "portalbot",
"message": "建议发送的消息内容"
}
}门户前端可一键点击 NBA 按钮,通过 Admin Token 模拟 dora 身份直接给对应 bot 发消息。
数据存储
Supabase 表
| 表 | 用途 |
|---|---|
| AP_dashboard | 仪表盘汇总数据 |
| AP_daily_activities | 每日活动详情(聚合后的任务) |
| AP_daily_insights | 按日期存储的洞察数据 |
| AP_projects | 项目看板数据 |
按日期存储策略
- 唯一键:
date - 同一天多次分析 → update 覆盖
- 不同天 → 各存一份
- 支持门户上的时间切换功能
定时频率
| 任务 | 频率 |
|---|---|
| L0 采集 + L1 提取 | 每 15 分钟 |
| 全量 digest(L1.5+L2+L3+项目匹配+推送) | 每 30 分钟 |
项目看板功能
对话模式
- 门户上每个项目卡片只有一个按钮:💬 对话
- 格式:
[项目: 项目名] 你的指令 - 示例:
[项目: BNEF 活动管理平台] 合并到 PackHorizon - 所有操作通过自然语言,由 Rabbit 后端处理
项目合并
真正的合并流程:
- 数据合并 — 里程碑、bot 列表、事件全部合到一起
- LLM 重新分析 — 合并后全部数据重新生成描述、状态、下一步
- 写入更新 — 主项目更新,被合并项目 dismiss
项目审核
- 项目看板支持删除、改名、合并、改状态、编辑描述
- 22 个活跃项目(从 100 个自动发现中清理)
相关页面
- ottor-pc-cloud-bot — 开发和维护者
- agent-portal — 前端展示层
- portalbot — 门户前端开发 bot