qiaoqichao
|
e604d177cb
|
feat(v2): 完善配置中心与可替换轨迹质检并联动预审依据
|
2026-10-01 17:13:02 +08:00 |
|
 qiaoqichaoandClaude Code
|
2e7e19471c
|
feat(v2): 纠偏第二批——接通历史经验加工闭环
覆盖 AC-50/51/52(BR-48/49、E-28)。审计确认的 P1-3 缺口"历史提炼与卡片
不在实时 API 调用图上"由此关闭:提炼、候选治理、卡片进方案全部有真实调用方。
后端:
- contracts:新增 E-28 EXTRACTION_UNAVAILABLE(运行级,不进 HTTP 信封)与
KnowledgeExtraction 记录类型。契约层强制"失败不得带候选",
AC-50「模型不可用⇒不产生候选」是类型约束而不是文档约定。
- services/experience_extraction.py(新):真实提炼入口。模型不可用或调用失败
→ 记 E-28 且 candidate_id 为空;不产半成品候选。传输纪律同 assistant_model
(禁进程内代理、零重试),且 tools=[] 使"越权读材料"在结构上不可能。
自然语言修订同样必须真实调用模型,没有"把中文猜成条件"的回退路径。
- services/knowledge_cards.py:新增 current_draft/revise/list_cards 与
registry_conditions。修订只产草稿、保留 origin 与来源、升版本记 parent_version;
test_cases 纳入可改字段——它是 component_evaluation 对自定义 Skill 的发布门禁,
不开放则提炼出的候选永远卡在评测门外。
- services/project_assistant.py:enqueue 改用 review_plan.assemble(),
让 T06-b 的依赖预检(E-19 可定位文案)与维度解析不再被绕过。
- api/prescreen.py:case-timeline、knowledge-extractions、knowledge-candidates
(创建/修订/状态机)、review-plans(装配/状态机)。角色门禁与既有
/components 入口一致;id 与数据域由服务端生成;按 id 的路由一律在 run() 内
查归属,否则 KeyError 会变成 500 而不是 404。
- component_registry/review_plan:下沉 current_draft/version_key 与 list_plans。
前端:
- 新增 /experience-center 独立入口(BR-50)与 ExperienceCenter 组件;
AgentNav 增加「历史经验加工」。
- originBadge 此前零调用方、.origin-* 无任何 CSS——守卫只 grep 库文件字符串,
于是"测试通过但功能不存在"。本批补齐消费方与样式,并用左边框样式区分四种来源,
保证去色仍可区分(AC-42/BR-48)。
- 守卫语义按 AC-55 调整:由"禁止新建路由"改为"禁止重复页面"
(面板不得搬到独立路由、已合并页必须保持重定向),并新增
experience-center-ui 守卫(已登记 verify.py,共 12 项检查)。
测试:新增 36 项(提炼 15 / 候选治理 15 / 卡片到运行 6),全量 unittest 无回归;
两次同项目运行对照证明卡片确实改变了核查结果,且 basis_ids 指向 卡片id@版本。
未闭合(记录在 17 的剩余缺口):真实模型提炼尚未实测(需端点);
界面未经浏览器点击验证;例外边界未进入可求值语言;规则类候选不在本批。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-01 00:31:42 +08:00 |
|
 qiaoqichaoandClaude Code
|
1bc17bb9bc
|
feat(v2): T06-c 方案治理入口与 Tools 卡守卫,T06 收尾
T06 第三块,收尾。方案提案复用既有组件治理(registry.draft/release),
不新建发布路径;自批拒绝等既有保证有测试锁定。
- propose_plan():维度在提案时即去重与冲突拦截(T06-a 的解析前移),
保证草稿阶段就挡住"同 ID 不同定义"
- **不得出现业务 Tools 卡**(ADR-11):方案自带 tools/tool_cards/
allowed_tools/permissions 一律拒绝,否则业务侧可绕过工具白名单;
工具只能由后台治理
- validate_critical_checks():关键核查项必须真由本方案的 Skill/规则产生,
凭空声明的"关键项"会让 BR-06 的硬性阻断语义失去可追溯性
T06 三块完成,卡片验收对照:AC-28(装配与依赖拒绝)· AC-29(维度去重与刻度
冲突)· AC-44(0/2/6/9 维与异刻度的呈现判定)均有测试;"没有 Tools 卡" 有守卫。
测试:test_review_plan.py 增至 34 项。全量 349 项 OK(340 → 349);
verify.py 10/10 PASS。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-29 20:24:24 +08:00 |
|
 qiaoqichaoandClaude Code
|
8a9005036c
|
feat(v2): T06-b 方案装配与依赖预检(可定位的 E-19 文案)
T06 第二块。核对后确认 component_registry.freeze() 已实现大部分 AC-28:
按 release 指针解析依赖、原生方法文本装配时固化、循环依赖与输出冲突检查、
数据域一致性("演示与正式组件不能混用")、content_hash。因此本批**不重复实现冻结**,
只补真正的缺口。
新增 contracts:JudgmentBinding、ReviewPlan(含维度、关键核查项、专项绑定)。
新增 review_plan.check_dependencies() / assemble():
- **缺口**:未发布/已撤回的依赖原先抛裸 KeyError,被 translate() 映射成 404
"对象不存在",用户无法定位是哪一项。现改为逐个检查并**指明依赖名与原因**
("尚未发布或已撤回"/"版本状态为 X"/"发布指针指向的版本不存在")
- 只用 release 指针判定可用性——草稿与已撤回天然没有指针,这正是 BR-27
"草稿或已撤回组件不得进入新运行"的机械表达
- 装配时接入 T06-a 的维度解析与呈现判定,并做不丢失断言
测试:test_review_plan.py 增至 25 项(新增 7 项装配)。其中版本换版后
content_hash 必须变化,用于证明版本确实被冻结进结果而不是每次重解析。
全量 340 项 OK(333 → 340);verify.py 10/10 PASS。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-29 20:20:58 +08:00 |
|
 qiaoqichaoandClaude Code
|
019d5081df
|
feat(v2): T06-a 方案维度解析(去重、刻度冲突、呈现判定)
T06 是大卡,按纪律拆子卡。本批为第一块:维度契约与解析。
新增 contracts:ScaleLevel、DimensionSpec。刻度层级必须升序且取值唯一
(乱序会让展示语义倒置);同 ID 必须标签/量纲/刻度层级完全一致。
新增 services/review_plan.py:
- resolve_dimensions():按 dimension_id 合并;**同 ID 不同定义直接报冲突并拒绝**,
不让程序或模型临时挑一个(BR-28 / E-20);相同定义只留一份并合并组件引用,
避免重复计数
- presentation():AC-44 的呈现判定——0 维 empty / 2 维 list / 3–8 同刻度 radar /
9 维 grouped / 异刻度 faceted;硬阻断**单列**且永不进雷达面积
- assert_nothing_dropped():三组并集必须等于全部维度,"不默默丢失关键项" 有守卫
且守卫自身有测试证明会报错
刻度改版(同 scale_id 不同 version)视为不同定义——语义可能已变,不得共用雷达。
未完成:T06-b 方案装配与依赖冻结(AC-28)、T06-c 维度在结果中的落位属后续子卡。
测试:新增 test_review_plan.py 18 项(去重 8 + 呈现 10)。全量 333 项 OK(315 → 333);
verify.py 10/10 PASS。
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-09-29 20:16:39 +08:00 |
|