PMFlow/docs/superpowers/specs/2026-04-19-analysis-packet-...

151 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 合法
- 必须同时证明最终客户可见文本也通过禁词/禁模板/对象命中校验