docs(v2): 第二批交付记录与交接(历史经验加工)
按 16 §4 的五项口径(页面入口 / 操作步骤 / 实际结果 / 证据位置 / 剩余缺口) 填第二批,状态记**部分完成**: - 后端闭环已接通并经真实执行链测试(提炼→候选治理→卡片进方案→运行可追溯); - 本模块独立入口 /experience-center 已建,通过生产构建与新增源码守卫; - 未闭合三项写清楚而不是含糊带过:真实模型提炼未实测(F17,需端点)、 例外边界未进入可求值条件语言(F18)、卡片适用条件不参与运行内逐项判定(F19); - 界面证据明确标注为"源码守卫 + 生产构建 + 代码走查",不是端到端点击证明。 验证:`test-evidence/20261001-003148-2e7e194/`(verify.py 12/12 PASS,全量 567 项)。 15 §7 交接同步更新:新增 F17/F18/F19,F13 标记为已由第一批关闭,F6 更新为 Q3–Q5。 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -130,7 +130,76 @@ XINGBANG_LOCAL_MODEL_KEY=<你的 DeepSeek API Key>
|
||||
|
||||
## 第二批:完成历史经验加工流程
|
||||
|
||||
状态:**未开始**。
|
||||
状态:**部分完成**。后端闭环(真实提炼入口 → 候选治理 → 卡片进方案并影响运行)已接通,
|
||||
并经真实执行链测试;本模块页面入口已建并通过生产构建与源码守卫。
|
||||
**未闭合**:① 真实模型提炼调用尚未实测(需要模型端点,见"剩余缺口");
|
||||
② 界面点击未由自动化驱动(本机无浏览器自动化,沿用第一批 F11 口径)。
|
||||
|
||||
覆盖:AC-50/51/52、BR-48/49、E-28;页面入口部分覆盖 BR-50(三个入口中的第一个)。
|
||||
|
||||
### 页面入口
|
||||
|
||||
| 入口 | 位置 |
|
||||
|---|---|
|
||||
| 历史经验加工 | 顶部导航「历史经验加工」→ `/experience-center?project=<项目>` |
|
||||
| 流程四段 | ① 来源:历史过程时间线 → ② 提炼:用真实模型生成候选 → ③ 候选:修订/评测/发布 → ④ 方案:让卡片影响核查 |
|
||||
|
||||
### 操作步骤(实现并按此验收)
|
||||
|
||||
1. 「从项目材料重建时间线」→ `POST /prescreen/projects/{id}/case-timeline`(确定性,不调用模型)。
|
||||
2. 勾选来源事件、填写提炼要求 →「请求提炼」→ `POST .../knowledge-extractions`。
|
||||
3. 候选卡上「自然语言修改适用范围」或「补充独立测试样本」→ `PATCH .../knowledge-candidates/{card_id}`。
|
||||
4. 「隔离评测」→ 由**另一位**有发布资格的人「审核发布」→ `POST .../knowledge-candidates/{card_id}/transitions`。
|
||||
5. 已发布卡「选入新方案」→「评测方案」→「发布方案」→ `POST .../review-plans` 与 `/review-plans/{id}/transitions`。
|
||||
6. 在项目工作台用该方案发起预审;运行结果冻结并记录卡片版本。
|
||||
|
||||
### 实际结果
|
||||
|
||||
- **提炼(模型未配置)**:记录 `status=failed`,`candidate_id=null`,degradations 带
|
||||
`EXTRACTION_UNAVAILABLE`,文案"本次未能完成经验提炼,请稍后重试或改为人工创建";
|
||||
**提炼跑完后库里一张候选草稿都没有**(`test_experience_extraction` 的反例断言)。
|
||||
这与第一批"模型不可用如实标未完成"同口径。
|
||||
- **提炼(模型可用)**:以假传输层走真实 `agent_manager.invoke_scoped` 路径,
|
||||
产出 `origin=history_derived` 且带来源事件 id 的 Skill 候选;记录保存
|
||||
`prompt_version=history-extraction.v1` 与模型名,可核对"确实发起了调用"。
|
||||
**真实模型调用未实测**(见剩余缺口)。
|
||||
- **候选治理**:自然语言修订真的发起一次模型调用(测试断言调用次数为 1);
|
||||
模型不可用时**拒绝且卡片一字未改**(比对修订前后 revision 与 conditions);
|
||||
修订后仍为 `history_derived` 且保留来源、状态仍为 draft;已发布后修订升版本并记 `parent_version`。
|
||||
- **卡片影响核查**:同项目两次运行对照——基座方案 `corporate.pre-review` 不含该卡片,
|
||||
运行里没有该核查项;含卡片的新方案运行里出现 1 条 `history.repayment.dependency`,
|
||||
其 `basis_ids=[skill.history.repayment@1.0.0]`,`component_versions` 含 `(卡片id, 1.0.0)`。
|
||||
- **依赖门禁**:草稿卡片进方案时,发布被 409 拒绝;引用不存在组件时评测 `passed=false` 且发布被拒。
|
||||
|
||||
### 证据位置
|
||||
|
||||
| 内容 | 位置 |
|
||||
|---|---|
|
||||
| 提炼入口(15 项) | `backend/test_experience_extraction.py` |
|
||||
| 候选治理与自然语言修订(15 项) | `backend/test_knowledge_governance.py` |
|
||||
| 卡片 → 方案 → 运行(6 项) | `backend/test_card_to_run.py` |
|
||||
| 界面源码守卫(新增) | `scripts/test_experience_center_ui.cjs`(已登记进 `scripts/verify.py`) |
|
||||
| 全量验证 | `test-evidence/20261001-003148-2e7e194/`(`scripts/verify.py` **12/12 PASS**,含 `backend-unit` 全量 567 项、`frontend-build`、新增 `experience-center-ui` 守卫) |
|
||||
|
||||
### 剩余缺口
|
||||
|
||||
- **真实模型提炼未实测(P0)**:AC-50 的"若模型已配置则实际调用"需要一次真实调用证据。
|
||||
本轮机器上没有设置 `XINGBANG_LOCAL_MODEL_*`,因此只交付了"不可用路径"与"假传输成功路径"。
|
||||
实测方法:带 `XINGBANG_DEMO_ROLE_LOGIN=1` 与三个模型变量启动后端,再走上面步骤 2;
|
||||
在此之前不得宣称"真实提炼已跑通"。
|
||||
- **界面点击未由自动化驱动**:本机无 playwright/puppeteer/chromium-cli。界面证据是
|
||||
"源码守卫 + 生产构建(`/experience-center` 6.08 kB)+ 代码走查",**不是**端到端点击证明;
|
||||
本批的"页面入口/操作步骤"是按实现与接口核对写出的,不是浏览器截图。
|
||||
- **例外边界未进入可求值条件语言**:注册表条件只支持数值阈值算子,`present/absent` 被既有断言
|
||||
锁定拒绝,因此模型给出的例外保存为文本 `exception_note`,供专家修订,不作为可执行条件。
|
||||
- **卡片适用条件不参与运行内逐项判定**:`conditions` 目前只用于域/范围/有效期过滤
|
||||
(`knowledge_cards.effective()`);运行内条件求值需独立设计,不在本批冒充完成。
|
||||
- **治理状态只实现 draft/published**:`in_review`/`rejected`/`withdrawn` 在注册表没有落地表达,
|
||||
候选状态机因此只提供 `evaluate` 与 `publish`,不造一个假状态掩盖。
|
||||
- **规则类(Rule)候选不在本批**:数值阈值与正式依据门禁(`_check_hard_basis`)需要单独设计,
|
||||
本批只产出 Skill 类候选(可验证的缺件核查动作)。
|
||||
- **顺带发现、未修**:`01-requirements.md` 的 E-18 写作 `HARD_RULE_BASIS_REQUIRED`,
|
||||
但代码走的是 `ValueError` → 422 `INVALID_REQUEST`,错误码未对齐(既有问题,非本批引入)。
|
||||
|
||||
## 第三批:按已确认原型完成新版界面
|
||||
|
||||
|
||||
Reference in New Issue
Block a user