669e969c418972aac120b95c929050377b4ccdf5
T03 卡的要求是"复用上传/确认入口,增加导入清单、定位和冲突候选"。核对后: 导入清单与冲突候选已由 T02/S1 交付,但**"定位"只定义了契约、没有接上**—— parse() 仍只产出自由字符串 locator,SourceLocator 类型化投影是空的。 本次补上这条链路(契约与实现不一致是我的遗留)。 - assistant_materials.parse():每条 chunk 增加 source_locator(kind + 坐标), 按 T00/04 §5.3 的映射:pdf→page、xlsx 单元格/行与 csv/txt/docx 表格→sheet+cell_range、 docx 正文段→manual(note) - material() 补 document_id/document_version 后**按契约校验**;漏了定位或定位不合法 直接抛错,不落半成品进库 - **locator 自由字符串保留**:enqueue() 依赖它算证据 ID 的稳定哈希,改它会破坏 BR-13 实现中修掉一个自己引入的 bug:类型化定位的辅助函数初版命名为 table,与 docx 分支里 的表格计数器 table 同名,该分支内 helper 被整数遮蔽('int' object is not callable)。 已改名 sheet_loc。 AC-08 补测:跨项目候选引用被 supplement 拒("不属于项目"),同项目可用作对照, 未知 candidate_id 同样被拒。既有 test_project_assistant 只覆盖了跨项目文档下载。 测试:新增 test_sourcelocator.py 13 项,含真实 XLSX/DOCX fixture(zipfile 构造), 覆盖五种格式的定位派生与契约校验。全量 248 项 OK(235 → 248);verify.py 10/10 PASS。 Co-Authored-By: Claude Code <noreply@anthropic.com>
mini_openclaw
Languages
Python
78.8%
TypeScript
18.4%
JavaScript
1.7%
CSS
0.5%
Shell
0.3%
Other
0.3%