# 企微社群运营实施记录

> 对应方案：`qiwei-group-operations-product-development-spec.md`  
> 开始日期：2026-07-18  
> 当前阶段：Phase 3 受控自动化底座已完成，真实自动发送保持关闭

## 状态说明

- `完成`：代码已落地并通过对应本地验证。
- `进行中`：已有实现，但仍缺集成或真实环境验证。
- `待开始`：尚未开发。
- `受阻`：需要真实账号、业务规则或外部权限。

## 已完成

### 2026-07-18

| 工作项 | 状态 | 产物/说明 |
|---|---|---|
| 产品与技术方案 | 完成 | `docs/specs/qiwei-group-operations-product-development-spec.md` |
| `qiwei-group-operations` Skill 骨架 | 完成 | 主 `SKILL.md` + 数据模型、质检规则、输出契约三份渐进引用 |
| Skill UI 元数据 | 完成 | `skills/qiwei-group-operations/agents/openai.yaml` |
| 社群运营 SQLite 数据层 | 完成 | 群主档、SOP/版本、计划/计划项、消息、质检、审计；所有业务表带 `account_key` |
| SOP 版本管理 | 完成 | 创建草稿、创建版本、发布、指定版本回滚、审计 |
| 每日运营计划 | 完成 | 从已发布 SOP 生成待审核计划，同群同日幂等，支持模板变量 |
| 计划项人工闭环 | 完成 | 批准、拒绝、跳过、标记人工已执行；真实自动发送保持关闭 |
| 确定性质检 MVP | 完成 | 投诉/退款等风险词、客户问题超时未回应、稳定指纹去重、原消息证据 |
| 每日运营简报 | 完成 | 群数、已发布 SOP、今日任务、完成率、待审核、高风险和未闭环事项 |
| MCP 工具 | 完成 | 新增 8 个工具：上下文、计划、话术、质检、简报、SOP、计划执行、质检处理 |
| Dashboard API | 完成 | 新增 `/api/group-ops/*` 读取、发布、计划、审核和质检处理接口 |
| Dashboard MVP | 完成 | 新增“社群运营”导航、运营指标、SOP、计划生成、今日工作台、质检预警 |
| 可访问性与响应式基础 | 完成 | 表单 label、按钮禁用态、键盘 focus、375px/平板布局、减少动态效果 |
| 本地 smoke 脚本 | 完成 | 覆盖账号隔离、SOP 发布、计划幂等、审核执行、风险质检和闭环 |
| 发布检查接入 | 完成 | `release-check.js` 已加入 `group-ops:check` 与 `group-ops:smoke` |
| 群消息兼容入库 | 完成 | webhook 与历史同步成功落盘后，按设备 `guid` 兼容写入账号隔离的社群运营群/消息表；缺少 guid 时安全跳过新表 |

### 2026-07-18 · Phase 2

| 工作项 | 状态 | 产物/说明 |
|---|---|---|
| 按门店批量生成计划 | 完成 | 支持显式群列表或门店范围；逐群幂等，部分失败不回滚成功项 |
| 跨门店运营对比 | 完成 | 展示群数、今日任务、完成数、执行率、未闭环与高风险；无任务时显示数据不足 |
| 群活跃趋势与生命周期建议 | 完成 | 对比近 7 天与前 7 天消息、活跃成员、最近消息、风险，并给出可解释建议和覆盖率 |
| 整改任务主账 | 完成 | 质检项可创建整改任务，支持负责人、期限、优先级、状态和审计 |
| 企微官方待办衔接 | 完成 | 精确匹配内部成员且人工确认后创建真实待办；本地完成可同步官方完成状态 |
| 质检阈值配置 | 完成 | 账号级 SLA、风险词、禁止承诺配置并留审计；消息质检自动采用当前配置 |
| 误报反馈评测集 | 完成 | `false_positive` 不删除历史结论，独立保存反馈记录并统计误报率 |
| 质量评测脚本 | 完成 | `scripts/group-operations-quality-eval.js` 输出 precision/recall 并纳入发布检查 |
| 优秀话术沉淀 | 完成 | 从已执行且有最终内容的计划项汇总高频话术，不把未发送草稿计入 |
| SOP 版本治理 | 完成 | 版本列表、结构差异、影响群/门店预览、指定版本发布和回滚 |
| Dashboard 五视图 | 完成 | 运营总览、今日工作台、群洞察、SOP 版本、质检督导；移动端响应式与键盘焦点保持一致 |
| Phase 2 MCP/API | 完成 | 新增批量计划、运营洞察、整改任务 3 个 MCP 工具，总计 86 个；Dashboard API 完成对应闭环 |

### 2026-07-18 · Phase 3

| 工作项 | 状态 | 产物/说明 |
|---|---|---|
| 自动化策略版本 | 完成 | 策略草稿、不可变版本、人工激活、历史策略保留；激活后强制保持暂停 |
| 群与内容白名单 | 完成 | 只有显式 `allowedGroupIds` 和 `allowedTypes` 才能通过执行闸门 |
| 时间窗与灰度 | 完成 | 使用 Asia/Shanghai 判断星期和时间窗；按 roomId 稳定哈希命中灰度比例 |
| 单群频控 | 完成 | 单群每日、近 7 天发送上限，基于成功回执计数 |
| 内容与风险闸门 | 完成 | 未批准、未到时间、高风险未闭环、变量未替换、禁止承诺和重复发送全部拦截 |
| 幂等与回执 | 完成 | 保存幂等键、策略版本、决策、模式、状态、外部消息 ID、错误和完成时间 |
| 连续失败熔断 | 完成 | 达到策略阈值自动熔断；后续项目全部阻止，只能人工确认复位 |
| 一键暂停/恢复 | 完成 | 暂停立即生效；恢复必须人工确认；状态变化全量审计 |
| dry-run | 完成 | 支持预演和记录 dry-run，不调用 Fmode、不改变计划项发送状态 |
| 真实发送三重保护 | 完成 | 仅 `auto` 策略 + `execute=true/confirmed=true` + `QIWEI_GROUP_OPS_LIVE_SEND=1` 才可能调用 `/msg/sendText` |
| 自动化 Dashboard | 完成 | 新增策略、状态、白名单、时间窗、灰度、频控、熔断、预演、dry-run 和执行日志视图 |
| Phase 3 MCP/API | 完成 | 新增 `qiwei_group_ops_automation`，总计 87 个 MCP 工具 |
| 自动化专项测试 | 完成 | 覆盖暂停、白名单、灰度、时间窗、连续失败熔断、人工复位、dry-run 和真实发送阻断 |

### 2026-07-18 · 规格对照审查修复

| 工作项 | 状态 | 产物/说明 |
|---|---|---|
| SOP 草稿与发布版本隔离 | 完成 | 创建新草稿不再停用当前已发布 SOP；生成计划只读取当前发布快照，实际话术与 `playbook_version_id` 保持一致 |
| 有效回应判定 | 完成 | 客户问题后的无关、寒暄或占位消息不再算有效回应；新增意图与关键词相关性规则，并支持后续有效回复自动闭环 |
| 质检时间范围 | 完成 | 消息质检支持 `startAt` / `endAt`，避免每次扫描全部历史消息 |
| 发送回执未知保护 | 完成 | 网络超时、连接重置等结果不确定场景记录为 `unknown`，在人工核对回执前锁住同一幂等键，避免自动重发 |
| 批次熔断即时生效 | 完成 | 每个发送项执行前重新计算安全闸门；批次中途触发熔断后，后续项目立即转为拦截 |
| 账号级增量消息同步 | 完成 | 每个企微账号只调用一次增量消息流，按 `fromRoomId` 分流到目标群；完整拉取后保存账号级 `travelSyncKey` 游标，分页未完成时不推进游标 |
| SOP 发布/回滚确认 | 完成 | MCP/API 必须显式传 `confirmed=true`；Dashboard 先展示影响范围并由用户确认 |
| 可解释群健康分 | 完成 | 新增每日评分表，按 SOP、响应、风险、互动分项计算；缺少数据时排除对应权重并展示覆盖率、分项证据量和健康分布 |
| 审查回归测试 | 完成 | 新增未发布草稿隔离、版本审计一致性、无关/有效回复、回执未知锁定、健康分覆盖率和发布确认测试 |
| RBAC 权限框架与模拟验收 | 完成 | 新增总部管理员、区域经理、门店经理、执行员工、只读审计者角色；支持账号级 `userId` 绑定与门店范围；新增角色管理 MCP，当前总计 88 个 MCP 工具；覆盖首次初始化、跨门店拒绝、非总部发布 SOP 拒绝及审计者执行拒绝 |

## 进行中

| 工作项 | 状态 | 剩余内容 |
|---|---|---|
| Phase 0 账号隔离 | 进行中 | 新模块数据已隔离；旧 `outputs/groups/*` 和历史消息路径仍需迁移为账号目录 |
| 真实样本质量评测 | 进行中 | 评测脚本与内置回归集已完成；仍缺 1,000 条脱敏消息和业务人员阈值校准 |

## 受阻或需业务确认

| 工作项 | 状态 | 阻塞条件 |
|---|---|---|
| 真实自动群消息发送 | 受阻 | `/msg/sendText`、`/msg/sendGroupMsg` 需真实账号完成回执、频控、超时幂等 smoke |
| 20 群连续试点 | 受阻 | 需要确定 3 家门店、20 个授权客户群及负责人 |
| 公司级正式 SOP | 受阻 | 需要业务方提供或审核群类型、服务 SLA、禁用词、升级人工规则和首批话术 |
| 正式角色映射 | 受阻 | 权限框架与模拟测试已完成；需要提供真实总部、区域、门店、审计者的 `userId` 及门店范围后才能启用生产绑定 |
| 数据保留与合规 | 受阻 | 需要确认群消息保留期限、脱敏范围和内部授权 |
| 官方待办 live smoke | 受阻 | 同步逻辑与人工确认保护已完成；需要已初始化的企微官方 CLI 和测试成员完成真实创建/完成验证 |

## 后续开发顺序

1. 把 webhook 和历史同步改为“账号级一次增量拉取，按 roomId 分流入库”。
2. 为旧群列表、确认映射和消息缓存增加账号命名空间及迁移脚本。
3. 完成真实发送接口 smoke 后，仅对白名单和人工批准项开放发送。
4. 用 1,000 条脱敏消息扩充评测集，校准投诉与未回应识别阈值。
5. 用真实企微官方 CLI 完成整改待办创建和完成状态 live smoke。
6. 开展 20 群、14 天真实试点并在本文件记录指标。

## 验证记录

| 日期 | 验证 | 结果 |
|---|---|---|
| 2026-07-18 | `npm run group-ops:check` | 通过 |
| 2026-07-18 | `npm run group-ops:smoke` | 首次发现消息表占位符错误，修复后通过 |
| 2026-07-18 | Skill `quick_validate.py` | 通过；`Skill is valid!` |
| 2026-07-18 | `npm run check` | 通过 |
| 2026-07-18 | Dashboard 本地 HTTP smoke（4322） | `/api/group-ops/overview` 返回 `ok`，首页包含 `group-ops` 导航 |
| 2026-07-18 | `npm run package:smoke` | 通过；18 skills、83 MCP tools、0 forbidden files |
| 2026-07-18 | `npm run release:check` | 最终通过 11 组发布检查；同步修复 webhook 旧测试期望、Relay 测试隔离、画像 Excel 复用现有导出组件及输出目录 manifest 基线 |
| 2026-07-18 | Phase 2 `npm run group-ops:smoke` | 通过；覆盖 SOP v2/影响预览/回滚、门店批量计划、配置、反馈、整改任务、群洞察和优秀话术 |
| 2026-07-18 | `npm run group-ops:eval` | 通过；内置 4 个规则样本，precision=1、recall=1，仅作为回归测试，不代替真实评测集 |
| 2026-07-18 | Phase 2 Dashboard 隔离 API smoke | 通过；SOP 创建/预览/发布、计划、质检设置、整改任务、门店和群洞察全部返回 `ok` |
| 2026-07-18 | Phase 2 Skill `quick_validate.py` | 通过；`Skill is valid!` |

### 2026-07-18 · 当前登录账号 live smoke

| 验证 | 结果 |
|---|---|
| Fmode 设备登录 | 通过；设备在线，状态码 2 |
| 包月订阅 | 通过；1/1 席位已使用，订阅有效，自动续费开启 |
| 自建外部群读取 | 通过；读取 6 个外部群，接口无错误 |
| 群分类缓存 | 通过；4 个 `IMPORTED`、2 个 `SUGGESTED`，未自动确认真实客户群 |
| 单群详情分析 | 通过；候选群详情可读，保持 `SUGGESTED`，未误改为已确认 |
| 单页历史消息同步 | 接口通过；所选群本页新增 0 条，因此本次未验证真实消息质检样本 |
| 企微官方待办 live smoke | 未执行；当前官方 CLI 尚未安装、未授权 |

本次 live smoke 只执行读取、分析和本地缓存更新，没有发消息、建群、修改群资料或创建真实企微待办。

### 2026-07-18 · Phase 3 自动化验证

| 验证 | 结果 |
|---|---|
| `npm run group-ops:smoke` | 通过；策略、暂停、时间窗、灰度、频控、三次失败熔断和人工复位通过 |
| `npm run group-ops:auto-smoke` | 通过；dry-run 不调用真实网关，环境开关关闭时真实执行被强制阻断 |
| Phase 3 Dashboard 隔离 API smoke | 通过；激活后 `paused=1`、人工恢复后 `paused=0`、预演通过 1 项、dry-run 1 项、真实执行被环境开关阻断 |
| 当前真实发送开关 | `QIWEI_GROUP_OPS_LIVE_SEND` 未开启，未向当前登录账号的任何群发送测试消息 |
| `npm run release:check` | 通过 12 组发布检查；18 个 Skills、87 个 MCP 工具、148 个打包条目、0 个禁入文件 |
