Files
DEMO-AGENT/docs/5.开发计划/4.飞书通知与问答接入.md

31 KiB
Raw Permalink Blame History

飞书通知与问答接入开发计划

文档信息

项目 内容
需求分析文档 docs/1.需求分析/4.飞书通知与问答接入.md
功能设计文档 docs/2.功能设计/4.飞书通知与问答接入.md
详细设计文档 docs/3.详细设计/4.飞书通知与问答接入.md
数据库设计文档 docs/4.数据库设计/4.飞书通知与问答接入.md
功能名称 飞书通知与问答接入
所属模块 审核智能体 review_agent
执行方式 单人开发 + Codex 自动化执行
计划日期 2026-06-07
计划版本 V1.0

Codex 自动执行说明

本文件用于 Codex 自动执行开发任务。执行时必须按阶段顺序推进,不得跳过测试、不得直接请求真实飞书接口作为自动化测试、不得把真实 App Secret 或 token 写入代码库。

执行规则:

规则 要求
执行顺序 必须从 FS-0 到 FS-8 顺序执行,前一阶段验证未通过不得进入下一阶段
TDD 每个服务、模型、命令和页面展示任务必须先写失败测试,再实现代码,再运行测试确认通过
外部 API 自动化测试必须 mock 飞书 token API 和消息 API真实飞书只通过 send_test_feishu_notification 手动命令验证
凭证安全 不得提交真实 FEISHU_APP_IDFEISHU_APP_SECRETtenant_access_token、用户 open_id/user_id
失败处理 如测试失败,先定位是否由本阶段改动引起;不得修改无关功能绕过测试
工作区安全 不得回滚用户已有变更;如遇到同文件用户改动,先阅读并兼容
提交节奏 每个阶段完成并通过阶段验证后再提交,提交信息参考“建议提交切分”
实现边界 首期只做指定个人账号私聊通知和问答预留不得扩展外部群聊、事件订阅、LLM 问答解析

自动执行入口建议:

请按 docs/5.开发计划/4.飞书通知与问答接入.md 从 FS-0 开始逐阶段执行。
每个阶段必须先写测试、运行失败、实现、运行通过,再进入下一阶段。
真实飞书 API 只能通过手动 management command 验证pytest 中必须 mock。

一、开发计划目标

本开发计划用于指导“飞书通知与问答接入”首期开发。首期目标是通过飞书官方智能体/应用机器人接口,把系统中三个工作流的结束结果发送到指定个人飞书账号,并为后续飞书内问答建立可测试的最小服务边界。

本期必须完成:

类别 内容
真实飞书通知 使用 App ID/App Secret 获取 tenant_access_token,调用飞书消息 API 发送私聊通知
指定个人账号 通过 .env 配置 FEISHU_DEFAULT_USER_OPEN_IDFEISHU_DEFAULT_USER_ID,首期优先发给该账号
三流程接入 自动汇总、法规核查、自动填表三个流程完成后均触发通知
数据库记录 新增统一通知记录表、飞书用户映射表、token 缓存表、问答日志表
页面展示 三个流程结果页或详情区域展示飞书通知状态
问答预留 建表、实现批次摘要查询、简单规则意图解析、本地模拟问答命令
测试策略 关键服务严格 TDD自动化测试 mock 飞书 API真实飞书发送通过 management command 手动验证

本期明确不做:

类别 内容
外部群聊接入 暂不向群聊发送通知,不做群内 @
飞书事件订阅 暂不接收飞书回调,不实现真实私聊问答事件入口
手动重发 页面和 Admin 暂不提供重发按钮
自动后台重试 通知失败只记录;成功才判重,失败允许后续再次发送
LLM 问答解析 问答预留只做简单规则解析,不接 LLM

二、已确认开发规则

规则项 内容
主接入方式 飞书官方智能体/应用机器人消息 API
凭证配置 .env 提供 FEISHU_APP_IDFEISHU_APP_SECRET
接收人配置 .env + Django Admin 都做;首期发送优先使用 .env 指定个人账号
接收人优先级 FEISHU_DEFAULT_USER_OPEN_ID > FEISHU_DEFAULT_USER_ID
token 缓存 数据库缓存 tenant_access_token 和过期时间
通知记录 新增统一 WorkflowNotificationRecord,三个流程都写入
判重策略 同一批次、同一流程、同一状态,只有成功记录才判重;失败后允许再次发送
系统链接 新增 PUBLIC_BASE_URL,默认 http://127.0.0.1:8000
页面展示 三个流程结果页或详情区域展示通知状态
真实 API 测试 自动化测试全部 mock新增 management command 手动发送真实测试消息
TDD 每个核心模块先写测试再实现
环境变量说明 写变量名和用途,不写真实值
阶段提交 模型、服务、工作流、页面、命令、测试分阶段提交
问答预留 FeishuQuestionLog,实现摘要查询、规则解析和本地模拟命令

三、总体验收标准

类别 完成标准
配置 .env 支持 FEISHU_APP_IDFEISHU_APP_SECRETFEISHU_DEFAULT_USER_OPEN_ID / FEISHU_DEFAULT_USER_IDPUBLIC_BASE_URL
token 系统可获取、缓存、过期刷新 tenant_access_tokentoken API 失败会记录失败通知
发送 手动命令可向指定个人账号发送真实测试消息
通知 三个流程完成后均创建通知记录,并在启用配置时调用飞书消息 API
判重 成功记录存在时,同一批次/流程/状态不重复发送;失败记录不阻止再次发送
失败隔离 飞书发送失败不影响业务工作流完成
页面 三个流程结果页或详情区域能看到通知通道、接收人、状态、时间、失败原因
问答预留 本地模拟命令可解析“最新/最近/批次号/工作流关键词”,返回批次摘要并记录日志
权限 普通用户只能查询自己的批次摘要;管理员可查全部
回归 文件汇总、法规核查、自动填表既有测试不回归

四、阶段总览

阶段 名称 目标 阶段验收
FS-0 准备与基线 确认文档和测试基线 python manage.py check 与关键现有测试通过
FS-1 数据模型与配置 新增通知、映射、token、问答日志模型和环境配置 migration、模型测试通过
FS-2 飞书 API 基础服务 token 获取缓存、接收人解析、消息构造、消息 API client 服务单测通过,全部 mock 外部 HTTP
FS-3 通知调度与记录 统一通知上下文、判重、成功/失败/disabled 落库 通知服务测试通过
FS-4 三流程接入 自动汇总、法规核查、自动填表完成后触发通知 三流程通知集成测试通过
FS-5 页面展示 批次详情或结果区域展示通知状态 页面/视图测试通过
FS-6 手动真实测试命令 management command 发送真实飞书测试消息 本地配置后可向个人账号发消息
FS-7 问答预留能力 批次摘要查询、规则意图解析、模拟问答命令、问答日志 问答预留测试通过
FS-8 文档与全量回归 更新环境变量说明,运行全量相关测试 回归通过,计划完成

五、FS-0 准备与基线

FS-0-001 确认开发文档和当前工作区

项目 内容
任务类型 准备 / Git
前置任务
涉及文件 文档文件,不改代码
目标 确认需求、功能、数据库、详细设计和开发计划均存在,并记录当前工作区状态
开发步骤 1. 检查 git status --short2. 确认四份设计文档与本开发计划存在3. 确认当前未提交变更均为文档或用户已有变更4. 不回滚任何用户变更
验收标准 工作区状态清楚,可进入开发
验证命令 git status --short
Codex 执行提示 请先确认飞书接入四份设计文档和开发计划存在,检查工作区状态,不要回滚用户已有变更。

FS-0-002 运行基线测试

项目 内容
任务类型 测试 / 回归
前置任务 FS-0-001
涉及文件 无固定文件
目标 确认开发前现有主流程可运行
开发步骤 1. 运行 Django check2. 运行通知相关旧测试3. 运行三个工作流关键测试4. 若失败,判断是否既有问题并记录
验收标准 基线通过,或既有失败已记录且不与本功能冲突
验证命令 python manage.py check; pytest tests/test_file_summary_workflow.py tests/test_regulatory_notification.py tests/test_application_form_fill_notification.py
Codex 执行提示 请运行 Django check 和现有通知/工作流关键测试,确认开发前基线。

六、FS-1 数据模型与配置

FS-1-001 新增飞书接入 ORM 模型测试

项目 内容
任务类型 测试 / 数据库
前置任务 FS-0
涉及文件 tests/test_feishu_models.py
目标 先写失败测试覆盖飞书用户映射、token 缓存、统一通知记录、问答日志
开发步骤 1. 新增 test_feishu_user_mapping_preferred_identifier2. 新增 test_feishu_access_token_cache_expiry3. 新增 test_workflow_notification_success_dedupe_only_success4. 新增 test_feishu_question_log_records_summary_without_full_answer
验收标准 新测试因模型不存在而失败
验证命令 pytest tests/test_feishu_models.py -q
Codex 执行提示 请先为飞书相关模型写失败测试,覆盖接收人标识优先级、数据库 token 缓存、成功判重和问答日志摘要。

FS-1-002 新增模型

项目 内容
任务类型 数据库 / 后端
前置任务 FS-1-001
涉及文件 review_agent/models.py
目标 新增 FeishuUserMappingFeishuAccessTokenCacheWorkflowNotificationRecordFeishuQuestionLog
开发步骤 1. FeishuUserMapping 关联系统用户,支持 open_id、user_id、mobile、is_active2. FeishuAccessTokenCache 保存 token、expires_at、app_id_hash、error_message3. WorkflowNotificationRecord 保存 workflow_type、batch_id、batch_no、status、channel、target、send_status、summary、error、sent_at4. FeishuQuestionLog 保存问题、意图、查询对象、回答摘要、权限结果和状态5. 添加索引和模型方法
验收标准 python manage.py check 通过
验证命令 python manage.py check
Codex 执行提示 请按数据库设计新增四个模型。注意 token 需要数据库缓存,通知判重只对 success 生效。

FS-1-003 生成迁移并通过模型测试

项目 内容
任务类型 数据库 / 测试
前置任务 FS-1-002
涉及文件 review_agent/migrations/tests/test_feishu_models.py
目标 生成 migration模型测试全部通过
开发步骤 1. 运行 makemigrations2. 检查 migration 只包含飞书相关表3. 运行 migrate4. 运行模型测试
验收标准 migration 可执行,模型测试通过
验证命令 python manage.py makemigrations review_agent; python manage.py migrate; pytest tests/test_feishu_models.py -q
Codex 执行提示 请生成飞书相关模型迁移并运行模型测试。

FS-1-004 注册 Admin 和配置项

项目 内容
任务类型 后台 / 配置
前置任务 FS-1-003
涉及文件 review_agent/admin.pyconfig/settings.py.env.example 或 README
目标 Admin 可维护用户映射settings 暴露飞书配置;文档只写变量名不写真实值
开发步骤 1. 注册 FeishuUserMappingWorkflowNotificationRecordFeishuAccessTokenCacheFeishuQuestionLog2. settings 读取 FEISHU_NOTIFY_ENABLEDFEISHU_APP_IDFEISHU_APP_SECRETFEISHU_DEFAULT_USER_OPEN_IDFEISHU_DEFAULT_USER_IDFEISHU_DEFAULT_TARGET_NAMEPUBLIC_BASE_URL3. 默认 PUBLIC_BASE_URL=http://127.0.0.1:80004. 在说明文件中加入变量名和用途
验收标准 Django check 通过Admin 列表可展示字段
验证命令 python manage.py check
Codex 执行提示 请注册飞书相关模型到 Admin并新增环境变量配置说明不要写入真实凭证。

FS-1 阶段验证

python manage.py check
pytest tests/test_feishu_models.py -q

七、FS-2 飞书 API 基础服务

FS-2-001 token 服务 TDD

项目 内容
任务类型 测试 / 服务
前置任务 FS-1
涉及文件 tests/test_feishu_api_services.py
目标 先写 token 获取、缓存、过期刷新、失败记录测试
开发步骤 1. mock 飞书 token HTTP 成功2. 测试首次获取后写数据库缓存3. 测试未过期时不再请求 HTTP4. 测试过期后重新请求5. 测试 token API 失败返回错误对象
验收标准 测试先失败
验证命令 pytest tests/test_feishu_api_services.py -k token -q
Codex 执行提示 请先写飞书 tenant_access_token 服务测试,外部 HTTP 必须 mock。

FS-2-002 实现 token 服务

项目 内容
任务类型 后端 / 服务
前置任务 FS-2-001
涉及文件 review_agent/notifications/feishu_token.py
目标 使用 App ID/App Secret 获取并数据库缓存 tenant_access_token
开发步骤 1. 定义 FeishuTokenResult2. 检查配置缺失3. 查询未过期数据库缓存4. 调用 token API5. 保存 token 和 expires_at6. token 失败时返回错误,不抛出到业务流程
验收标准 token 服务测试通过
验证命令 pytest tests/test_feishu_api_services.py -k token -q
Codex 执行提示 请实现 token 服务,缓存放数据库,不打印 App Secret 和 token。

FS-2-003 接收人解析和消息构造 TDD

项目 内容
任务类型 测试 / 服务
前置任务 FS-2-002
涉及文件 tests/test_feishu_api_services.py
目标 测试指定个人接收人优先级、配置缺失、富文本消息摘要
开发步骤 1. 测试 FEISHU_DEFAULT_USER_OPEN_ID 优先2. 测试无 open_id 时使用 FEISHU_DEFAULT_USER_ID3. 测试均缺失返回 recipient_missing4. 测试消息包含流程、批次、状态、摘要、链接和发起人
验收标准 测试先失败
验证命令 pytest tests/test_feishu_api_services.py -k 'recipient or message' -q
Codex 执行提示 请先写接收人解析和富文本消息构造测试。

FS-2-004 实现接收人解析和消息构造

项目 内容
任务类型 后端 / 服务
前置任务 FS-2-003
涉及文件 review_agent/notifications/recipient.pyreview_agent/notifications/message_builder.pyreview_agent/notifications/context.py
目标 生成统一通知上下文、指定个人接收人和飞书富文本 payload
开发步骤 1. 定义 NotificationContext2. 定义 ResolvedFeishuTarget3. 实现 resolve_configured_personal_recipient()4. 实现 build_feishu_post_message()5. 实现 build_message_summary()6. 链接使用 PUBLIC_BASE_URL
验收标准 接收人和消息构造测试通过
验证命令 pytest tests/test_feishu_api_services.py -k 'recipient or message' -q
Codex 执行提示 请实现通知上下文、接收人解析和飞书富文本消息构造。首期不需要群 @。

FS-2-005 消息 API client TDD 与实现

项目 内容
任务类型 后端 / 测试
前置任务 FS-2-004
涉及文件 tests/test_feishu_api_services.pyreview_agent/notifications/feishu_message_api.py
目标 mock 飞书消息 API完成成功、超时、错误码、token 失效重试一次
开发步骤 1. 写成功测试,断言请求携带 Authorization2. 写非 0 code 测试3. 写超时测试4. 写 token 失效后刷新 token 并同步重试一次测试5. 实现 send_personal_message()
验收标准 消息 API client 测试通过
验证命令 pytest tests/test_feishu_api_services.py -q
Codex 执行提示 请用 mock HTTP 实现飞书消息 API client。自动化测试不得请求真实飞书。

FS-2 阶段验证

pytest tests/test_feishu_api_services.py -q

八、FS-3 通知调度与记录

FS-3-001 通知记录服务 TDD

项目 内容
任务类型 测试 / 服务
前置任务 FS-2
涉及文件 tests/test_feishu_notification_dispatcher.py
目标 先写通知调度、成功判重、失败允许再次发送、disabled 记录测试
开发步骤 1. 测试通知关闭写 disabled2. 测试发送成功写 success3. 测试已有 success 时不再调用 API4. 测试已有 failed 时允许再次调用 API5. 测试 token 失败写 failed
验收标准 测试先失败
验证命令 pytest tests/test_feishu_notification_dispatcher.py -q
Codex 执行提示 请先写统一通知调度测试,重点覆盖成功判重和失败可重试。

FS-3-002 实现通知记录和 dispatcher

项目 内容
任务类型 后端 / 服务
前置任务 FS-3-001
涉及文件 review_agent/notifications/records.pyreview_agent/notifications/dispatcher.py
目标 实现统一通知调度入口
开发步骤 1. 实现 already_successfully_sent(dedupe_key)2. 实现 disabled、success、failed 记录创建3. 实现 dispatch_workflow_notification(context)4. 捕获服务异常并写 failed5. 不让异常冒泡阻断工作流
验收标准 dispatcher 测试通过
验证命令 pytest tests/test_feishu_notification_dispatcher.py -q
Codex 执行提示 请实现统一通知调度和记录落库。注意 success 才判重failed 不判重。

FS-3 阶段验证

pytest tests/test_feishu_notification_dispatcher.py -q

九、FS-4 三流程接入

FS-4-001 工作流 adapter TDD

项目 内容
任务类型 测试 / 集成
前置任务 FS-3
涉及文件 tests/test_feishu_workflow_adapters.py
目标 测试自动汇总、法规核查、自动填表三类批次能生成正确通知上下文
开发步骤 1. 构造 FileSummaryBatch 和 items断言文件摘要2. 构造 RegulatoryReviewBatch 和 issues断言风险摘要3. 构造 ApplicationFormFillBatch 和 exports断言导出/冲突摘要4. 断言 result_url 使用 PUBLIC_BASE_URL
验收标准 测试先失败
验证命令 pytest tests/test_feishu_workflow_adapters.py -q
Codex 执行提示 请先写三个工作流 adapter 的测试。

FS-4-002 实现工作流 adapters

项目 内容
任务类型 后端 / 服务
前置任务 FS-4-001
涉及文件 review_agent/notifications/workflow_adapters.py
目标 三个工作流批次转换为 NotificationContext
开发步骤 1. 实现 build_file_summary_context()2. 实现 build_regulatory_review_context()3. 实现 build_application_form_fill_context()4. 控制摘要长度5. 处理 partial_success 和 failed
验收标准 adapter 测试通过
验证命令 pytest tests/test_feishu_workflow_adapters.py -q
Codex 执行提示 请实现三个工作流通知上下文 adapter。

FS-4-003 接入三个工作流完成节点

项目 内容
任务类型 后端 / 工作流
前置任务 FS-4-002
涉及文件 review_agent/file_summary/workflow.pyreview_agent/regulatory_review/workflow.pyreview_agent/application_form_fill/workflow.py
目标 三个工作流完成后调用通知 dispatcher
开发步骤 1. 自动汇总成功/失败状态落定后触发通知2. 法规核查报告和风险落库后触发通知3. 自动填表 notify 节点改为统一通知服务4. 捕获通知异常并记录非阻断错误5. 保留现有 mock 测试兼容
验收标准 三流程通知集成测试通过
验证命令 pytest tests/test_file_summary_workflow.py tests/test_regulatory_notification.py tests/test_application_form_fill_notification.py
Codex 执行提示 请把统一通知服务接入三个工作流完成节点,通知失败不得影响业务状态。

FS-4 阶段验证

pytest tests/test_feishu_workflow_adapters.py tests/test_file_summary_workflow.py tests/test_regulatory_notification.py tests/test_application_form_fill_notification.py

十、FS-5 页面展示

FS-5-001 通知状态展示测试

项目 内容
任务类型 测试 / 前端
前置任务 FS-4
涉及文件 tests/test_file_summary_frontend.pytests/test_regulatory_frontend.pytests/test_application_form_fill_frontend.py
目标 测试三个流程页面或结果区域展示飞书通知状态
开发步骤 1. 准备 success 通知记录断言页面出现“飞书通知已发送”2. 准备 failed 记录断言出现失败原因3. 无记录时展示“暂无飞书通知记录”或不破坏页面
验收标准 测试先失败
验证命令 pytest tests/test_file_summary_frontend.py tests/test_regulatory_frontend.py tests/test_application_form_fill_frontend.py -k feishu
Codex 执行提示 请先写三个流程通知状态展示测试。

FS-5-002 实现通知状态 presenter 和页面展示

项目 内容
任务类型 后端 / 前端
前置任务 FS-5-001
涉及文件 review_agent/notifications/presenter.pyreview_agent/*/views.pytemplates/home.html 或相关模板
目标 页面展示通知状态、接收人、发送时间、失败原因
开发步骤 1. 实现 get_notification_records(workflow_type, batch_id)2. 在三个流程视图上下文中加入通知记录3. 模板展示最近一条通知状态4. 保持页面无记录时兼容
验收标准 页面展示测试通过
验证命令 pytest tests/test_file_summary_frontend.py tests/test_regulatory_frontend.py tests/test_application_form_fill_frontend.py -k feishu
Codex 执行提示 请实现通知状态 presenter并在三个流程结果页展示最近飞书通知状态。

FS-5 阶段验证

pytest tests/test_file_summary_frontend.py tests/test_regulatory_frontend.py tests/test_application_form_fill_frontend.py -k feishu

十一、FS-6 手动真实测试命令

FS-6-001 测试命令 TDD

项目 内容
任务类型 测试 / 命令
前置任务 FS-5
涉及文件 tests/test_feishu_management_commands.py
目标 测试 management command 构造测试通知并调用 dispatcher
开发步骤 1. mock dispatcher2. 执行 send_test_feishu_notification --username owner3. 断言构造测试上下文4. 测试缺少用户时报错
验收标准 测试先失败
验证命令 pytest tests/test_feishu_management_commands.py -q
Codex 执行提示 请先写真实飞书测试命令的自动化测试dispatcher 要 mock。

FS-6-002 实现发送测试消息命令

项目 内容
任务类型 运维 / 命令
前置任务 FS-6-001
涉及文件 review_agent/management/commands/send_test_feishu_notification.py
目标 本地可手动向指定个人飞书账号发送真实测试消息
开发步骤 1. 支持 --username2. 构造 workflow_type=manual_testNotificationContext3. 调用 dispatcher4. 输出 send_status、target、error_message5. 不打印 token 和 App Secret
验收标准 命令测试通过;本地配置真实凭证后可手动验证
验证命令 pytest tests/test_feishu_management_commands.py -q; python manage.py send_test_feishu_notification --username owner
Codex 执行提示 请实现发送测试飞书通知的 management command。自动测试 mock dispatcher真实发送只手动运行。

FS-6 阶段验证

pytest tests/test_feishu_management_commands.py -q

手动验证命令:

python manage.py send_test_feishu_notification --username owner

十二、FS-7 问答预留能力

FS-7-001 批次摘要查询服务 TDD

项目 内容
任务类型 测试 / 服务
前置任务 FS-6
涉及文件 tests/test_feishu_question_reserved.py
目标 测试按批次号、latest、工作流类型查询三个流程摘要
开发步骤 1. 普通用户查询自己的最新法规核查批次2. 普通用户不能查询他人批次3. 管理员可查全部4. 按批次号精确查询5. 返回状态、摘要、链接
验收标准 测试先失败
验证命令 pytest tests/test_feishu_question_reserved.py -k query -q
Codex 执行提示 请先写飞书问答预留的批次摘要查询测试。

FS-7-002 实现批次摘要查询服务

项目 内容
任务类型 后端 / 服务
前置任务 FS-7-001
涉及文件 review_agent/feishu_questions/query.pyreview_agent/feishu_questions/permissions.py
目标 支持三个工作流的摘要查询和权限过滤
开发步骤 1. 实现管理员/普通用户权限过滤2. 实现 batch_no 查询3. 实现 latest 查询4. 实现 workflow_type 关键词映射5. 返回统一摘要 dict
验收标准 查询服务测试通过
验证命令 pytest tests/test_feishu_question_reserved.py -k query -q
Codex 执行提示 请实现问答预留查询服务,普通用户只能查自己的批次,管理员可查全部。

FS-7-003 简单意图解析和日志 TDD

项目 内容
任务类型 测试 / 服务
前置任务 FS-7-002
涉及文件 tests/test_feishu_question_reserved.py
目标 测试规则解析“最新/最近/批次号/工作流关键词”,并记录问答日志
开发步骤 1. 识别 RR-AFF-FS- 批次号2. 识别“最新/最近”3. 识别“法规核查/自动填表/自动汇总”4. 记录 FeishuQuestionLog,不保存完整回答正文
验收标准 测试先失败
验证命令 pytest tests/test_feishu_question_reserved.py -k 'intent or log' -q
Codex 执行提示 请先写简单规则意图解析和问答日志测试,不接 LLM。

FS-7-004 实现意图解析、问答服务和模拟命令

项目 内容
任务类型 后端 / 命令
前置任务 FS-7-003
涉及文件 review_agent/feishu_questions/intent.pyreview_agent/feishu_questions/service.pyreview_agent/management/commands/feishu_question_simulate.py
目标 本地模拟飞书问答输入,返回批次摘要并记录日志
开发步骤 1. 实现 parse_question_intent(text)2. 实现 answer_question(user, text)3. 写入 FeishuQuestionLog4. 实现命令 python manage.py feishu_question_simulate --username owner "查最新法规核查"5. 输出回答摘要
验收标准 问答预留测试和命令测试通过
验证命令 pytest tests/test_feishu_question_reserved.py -q; python manage.py feishu_question_simulate --username owner "查最新法规核查"
Codex 执行提示 请实现飞书问答预留的规则解析、服务和本地模拟命令。

FS-7 阶段验证

pytest tests/test_feishu_question_reserved.py -q
python manage.py feishu_question_simulate --username owner "查最新法规核查"

十三、FS-8 文档与全量回归

FS-8-001 更新配置说明

项目 内容
任务类型 文档 / 配置
前置任务 FS-7
涉及文件 README.md.env.example 或项目配置说明文档
目标 说明飞书相关环境变量和手动测试命令
开发步骤 1. 写明变量名和用途2. 标注不要提交真实 App Secret3. 写明 send_test_feishu_notification 用法4. 写明自动化测试不请求真实飞书
验收标准 配置说明清楚,无真实密钥
验证命令 手动检查文档
Codex 执行提示 请补充飞书配置说明,只写变量名和用途,不写真实值。

FS-8-002 全量相关测试

项目 内容
任务类型 测试 / 回归
前置任务 FS-8-001
涉及文件 无固定文件
目标 运行飞书新增测试和三个工作流关键回归
开发步骤 1. 运行 Django check2. 运行飞书新增测试3. 运行三个工作流关键测试4. 修复与本功能相关失败5. 记录无法处理的既有失败
验收标准 新增测试通过,关键回归通过
验证命令 python manage.py check; pytest tests/test_feishu_*.py tests/test_file_summary_workflow.py tests/test_regulatory_notification.py tests/test_application_form_fill_notification.py
Codex 执行提示 请运行飞书新增测试和三个工作流关键回归,确保首期飞书接入不破坏既有功能。

FS-8 阶段验证

python manage.py check
pytest tests/test_feishu_*.py tests/test_file_summary_workflow.py tests/test_regulatory_notification.py tests/test_application_form_fill_notification.py

十四、建议提交切分

提交 建议提交信息 包含内容
1 feat: add feishu notification data models 模型、迁移、Admin、配置项
2 feat: add feishu api notification services token、接收人、消息构造、消息 API client
3 feat: add workflow notification dispatcher dispatcher、记录判重、三流程 adapter
4 feat: wire feishu notifications into workflows 三个工作流接入
5 feat: show feishu notification status 页面展示
6 feat: add feishu notification test command 真实发送测试命令
7 feat: add feishu question preview services 问答预留查询、解析、日志、模拟命令
8 docs: document feishu configuration 配置说明和回归修正

十五、风险与处理策略

风险 影响 策略
飞书应用权限不足 消息 API 返回无权限 手动测试命令先验证;错误码入库展示
open_id/user_id 不正确 个人账号收不到消息 接收人配置缺失或错误时记录 failed命令输出错误
token 缓存过期处理不当 偶发发送失败 token 失效时刷新并允许消息 API 同步重试一次
三流程状态差异 通知触发点不一致 用 adapter 隔离各流程摘要生成
页面展示影响既有模板 前端回归失败 使用小型通知状态区块,无记录时不改变主流程展示
问答预留过度设计 影响首期交付 只做规则解析和摘要查询,不接事件订阅、不接 LLM