APPROVAL_FLOW_UPDATE.md 4.5 KB

审批流程更新说明

更新时间: 2026-04-18 版本: v2.0

变更概述

将审批消息发送从"单一审批群"改为"个人 + 项目群"双通道模式。

修改内容

1. 消息发送目标调整

配置项 之前 现在 说明
个人私聊 ❌ 不发送 ✅ 发送 ou_498988d823b61ab89c9afe4310f85bb4
项目群聊 ⚠️ 仅通知(简化消息) ✅ 完整审批消息 oc_7940ec97cde40b245cff9cb606ff1ac7
审批群聊 ✅ 发送 ❌ 停用 oc_88e0a1970a7de02eb5ac225a8b0cedea

2. 审批回复监听

之前

  • 只监听审批群(oc_88e0a1970a7de02eb5ac225a8b0cedea)
  • 只接受特定用户(ou_498988d823b61ab89c9afe4310f85bb4)的回复

现在

  • 监听个人私聊(ou_498988d823b61ab89c9afe4310f85bb4)
  • 监听项目群聊(oc_7940ec97cde40b245cff9cb606ff1ac7)
  • 接受任何用户的回复(不限制个人ID)

3. 代码修改位置

文件: tools/im_approval.py

修改行数:

  • 第457-470行:消息发送逻辑
  • 第476-525行:在线表格/文件发送逻辑
  • 第576-584行:审批回复监听(阻塞模式)
  • 第714-722行:审批回复监听(check_approval_status)

4. 配置文件

.env 配置:

# 个人 Open ID(接收审批消息)
FEISHU_OPERATOR_OPEN_ID=ou_498988d823b61ab89c9afe4310f85bb4

# 项目群聊 ID(接收审批消息)
FEISHU_AD_PROJECT_CHAT_ID=oc_7940ec97cde40b245cff9cb606ff1ac7

# 旧审批群聊 ID(已停用,保留兼容)
FEISHU_OPERATOR_CHAT_ID=oc_88e0a1970a7de02eb5ac225a8b0cedea

端到端测试

测试脚本

cd examples/auto_put_ad_mini
python3 test_approval_flow_e2e.py

测试结果

✅ 个人消息发送成功(message_id: om_x100b5117fbbc44a0c4abd3016f812f0)
✅ 项目群消息发送成功(message_id: om_x100b5117fbb534b0c3705152a30b4f1)

验证步骤

  1. ✅ 检查个人飞书消息,确认收到完整审批消息
  2. ✅ 检查项目群聊,确认收到相同的审批消息
  3. ✅ 在任一位置回复"通过"或"拒绝",系统能正确识别

使用指南

审批流程

  1. 系统发起审批:调用 send_approval_request 工具
  2. 消息发送
    • 个人私聊收到文本消息 + Excel表格
    • 项目群聊收到文本消息 + Excel表格
  3. 运营回复
    • 在个人私聊中回复"通过"/"拒绝"
    • 或在项目群中回复"通过"/"拒绝"
    • 系统识别任一处的回复
  4. 系统执行:根据回复执行相应操作

回复示例

简单审批

  • ✅ "通过" → 批准所有操作
  • ❌ "拒绝" → 拒绝所有操作

部分审批

  • "只批准降价的" → 过滤后执行
  • "广告12345不要暂停" → 修改决策后重新审批

权限说明

个人私聊

  • 仅指定个人(ou_498988d823b61ab89c9afe4310f85bb4)能看到
  • 任何人回复都能识别(如果转发给他人)

项目群聊

  • 群内所有成员都能看到消息
  • 任何群成员都可以回复审批

注意事项

  1. 机器人权限

    • 确保机器人已加入项目群聊
    • 确保机器人有发送消息和文件权限
    • 确保机器人有读取消息权限
  2. 个人私聊

    • 用户需要先与机器人建立会话
    • 可以通过在任意群聊@机器人来激活
  3. 回复识别

    • 系统会监听审批消息发送后的所有回复
    • 只识别用户类型的消息(忽略机器人消息)
    • 回复内容通过 _parse_approval_reply 解析

回滚方案

如果需要回滚到旧版(仅审批群):

  1. 修改 im_approval.py 第457-470行:

    # 恢复为只发送到审批群
    result = _feishu.send_message(to=FEISHU_OPERATOR_CHAT_ID, text=message)
    
    1. 修改监听逻辑(第576-584行):

      # 恢复为只监听审批群
      result = _feishu.get_message_list(
      chat_id=FEISHU_OPERATOR_CHAT_ID,
      start_time=sent_time_sec,
      page_size=10,
      )
      
  2. 恢复个人ID限制(第593行):

    # 恢复为只接受特定用户
    if sender_type != "user" or sender_id != FEISHU_OPERATOR_OPEN_ID:
    continue
    

    相关文件

    • tools/im_approval.py - 核心审批逻辑
    • config.py - 配置定义
    • .env - 环境变量配置
    • test_approval_flow_e2e.py - 端到端测试脚本

    更新日志

    v2.0 (2026-04-18)

    • ✅ 支持个人 + 项目群双通道发送
    • ✅ 移除审批群聊发送
    • ✅ 允许任何群成员回复审批
    • ✅ 添加端到端测试脚本

    v1.0 (之前)

    • 单一审批群聊模式
    • 仅指定用户可回复