# Analysis Packet Family 黄金 12 条案例(V2) ## 目的 这份文档是给 `analysis_packet family` 单独准备的高标准黄金案例,不再复用旧那批偏空、偏合同向的样例。 这 12 条案例只做一件事: - 验证 `analysis_project_snapshot_loader -> analysis_packet_builder -> Web/Feishu presenter` 这条链,是否真的围绕项目对象在分析,而不是“字段合法 + 模板句子通了”。 对应自动化真源: - [backend/tests/test_analysis_packet_golden_v2.py](/Users/yuuuu/Documents/AIProjectManger/.worktrees/codex/unified-project-ai-handoff/backend/tests/test_analysis_packet_golden_v2.py) ## 高标准判定 每条案例都必须同时满足: 1. 输入里有明确项目对象或上下文锚点,不接受只有 `这个适合吗` 这种空问句。 2. `analysis_packet` 必须命中正确 `packet_type`,并且 `focus_objects` 只围绕最相关的 1-2 个对象。 3. 若 snapshot 已给显式 object ref,builder 必须优先吃 ref,不能再靠模糊 task 名称或 partial match 乱选。 4. 最终客户可见文本要像“围绕本项目对象做判断”,不能退回: - `当前项目:/外部判断:/下一步:` - `先说我的判断` - `status_summary` - `外部推荐` - `证据质量` 5. 若文本里出现了当前 packet 没选中的对象,判失败。 ## 黄金 12 条 ### 01. 项目适配判断:库存上报项目里的 Responses API - 输入:`OpenAI Responses API 放到采购经理每日实时库存上报服务里,适合放在哪一层?` - 预期 packet:`project_fit_analysis` - 预期对象: - better fit:`每日固定时段生成并推送结构化摘要卡片` - not fit:`WMS库存快照自动拉取与清洗` - 预期结论:明确区分“解释层”与“确定性主链” ### 02. 项目适配判断:generic task title 也要按 ref 选对 - 输入:`这类能力放到库存异常播报助手里,应该落在哪步?` - 预期 packet:`project_fit_analysis` - 预期对象: - better fit:`任务B` - not fit:`任务A` - 预期重点:不能因为 task title 太泛就乱选,必须尊重显式 `fit_candidate_task_ref / fit_rejected_task_ref` ### 03. 项目适配判断:已 direct match 的 fit 结论 - 输入:`这条外部变化已经打到我们库存项目上了吗?` - 预期 packet:`project_fit_analysis` - 预期对象顺序: - dependent:`WMS库存快照自动拉取与清洗` - anchor:`外部信号源 - WMS实时库存接口` - 预期结论:先落业务 task,再补 formal anchor ### 04. 外部 blocked:卡在哪条线索上 - 输入:`这个外部变化现在能直接挂到项目结论吗?` - 预期 packet:`external_impact_analysis` - 预期对象: - blocked:`外部信号源 - WMS实时库存接口` - dependent:`每日固定时段生成并推送结构化摘要卡片` - 预期结论:明确说卡在 signal 线索上,下一步是“补齐到可校验”,不能说“修正证据质量 / 继续外部推荐” ### 05. 外部 direct match:先看受影响业务 task - 输入:`这个变化是不是已经直接打到当前项目对象上了?` - 预期 packet:`external_impact_analysis` - 预期对象顺序: - dependent:`WMS库存快照自动拉取与清洗` - anchor:`外部信号源 - WMS实时库存接口` - 预期结论:不是 anchor-first ### 06. 外部 indirect only:先试解释层,不动主链 - 输入:`这个外部能力现在和我们项目是什么关系?` - 预期 packet:`external_impact_analysis` - 预期对象: - better fit:`每日固定时段生成并推送结构化摘要卡片` - not fit:`WMS库存快照自动拉取与清洗` - 预期结论:仍是背景相关,不能直接挂主链 ### 07. 内部 explain:模型路由现状 - 输入:`现在活动引擎是什么?` - 预期 packet:`internal_explain_analysis` - 预期对象:`模型路由配置` - 预期结论:说“这轮问的是当前状态,所以直接答现状”,不能把 `status_summary` 这类 contract 字样直接暴露给用户 ### 08. 内部 explain:现状 + 仍有一层未确认 - 输入:`当前活动引擎是什么,已经切到最新灰度了吗?` - 预期 packet:`internal_explain_analysis` - 预期对象:`模型路由配置` - 预期结论:先说现状,再单独指出“还有一层没完全确认” ### 09. follow-up explain:路由澄清 - 输入:`你是想问外部公开事实,还是系统内部配置/项目对象?` - 预期 packet:`followup_explain_analysis` - 预期重点: - `anchor_kind=reply_thread` - `clarification_state=query_route_clarify` - 最终文本要保留“需要先确认查询来源”这个结论 ### 10. Feishu 文本呈现:fit indirect only - 输入:与 Case 01 同构,但验的是最终 `qa_direct` 文本 - 预期输出: - 命中 `每日固定时段生成并推送结构化摘要卡片` - 命中 `WMS库存快照自动拉取与清洗` - 不出现 `当前项目:/外部判断:/下一步:` ### 11. Feishu 文本呈现:verifier blocked - 输入:与 Case 04 同构,但验的是最终 `qa_direct` 文本 - 预期输出: - 命中 `补齐到可校验` - 命中被影响 task - 不出现 `外部推荐 / 证据质量` ### 12. Feishu 文本呈现:internal status - 输入:与 Case 07 同构,但验的是最终 `qa_direct` 文本 - 预期输出: - 命中 `模型路由配置` - 不出现 `status_summary / contract / 泛化建议` ## 验证方式 最小自动化入口: ```bash cd /Users/yuuuu/Documents/AIProjectManger/.worktrees/codex/unified-project-ai-handoff PYTHONPATH=backend /Users/yuuuu/Documents/AIProjectManger/backend/venv/bin/python -m pytest \ backend/tests/test_analysis_project_snapshot_loader.py \ backend/tests/test_analysis_packet_contract.py \ backend/tests/test_feishu_card_action_contract.py \ backend/tests/test_analysis_packet_golden_v2.py -q ``` 通过标准: - 12 条新黄金案例全部通过 - 不能只证明 packet/schema 合法 - 必须同时证明最终客户可见文本也通过禁词/禁模板/对象命中校验