feat(knowledge): 展示文档处理进度并自动衔接导入索引

This commit is contained in:
2026-09-15 12:34:52 +08:00
parent b0bf7a49eb
commit fee2f4c2f3
10 changed files with 616 additions and 125 deletions

View File

@@ -0,0 +1,56 @@
# Task: 优化知识文档处理进度和可用性展示
## Identity
- Task ID: 20260915-knowledge-status-ml-3065956f
- Mode: Feature
- Branch: codex/20260915-knowledge-status-ml-3065956f-knowledge-status
- Worktree: D:\Datas\OthersProjects\.codex-worktrees\makelore\20260915-knowledge-status-ml-3065956f
- Base commit: b0bf7a49eb5d8e7e8ee141ddb4b992fddf2e410c
- Owner: codex
- Status: Ready for Integration
## Scope
- MakeLore 知识文档自动处理、阶段状态、持续刷新、失败恢复、分页和知识库切换,相关 DOM/Electron 测试与 README。
## Intent And Constraints
- Concurrent / Planning Gates Passed;官方登记匹配本任务、分支、工作区和基线。已读取必需项目记忆与相关个人云智能体/平台 embedding 决策并评估 peer 作用域;旧模板保持未知,无影响本任务的具体语义冲突。
- 保持 Electron Main 传输边界、Yuxi 所有权和持久 Task;embedding 由平台承担,不计算用户用量或预算。不包含主分支合并、部署、生产迁移或工作区清理。
- 用户已授权独立审查及通过后提交,并补充授权替换无响应的原 Reviewer。原审查者已停止,knowledge_status_review_replacement 已完成最终两仓全新只读审查,Standards PASS / Spec PASS;未创建实现子智能体。
- 上传 API 仍负责登记文件,客户端使用既有稳定操作 ID 自动衔接 process;以持久状态和实际分块为准,不新增状态表或估算百分比。
## Outcome
- 上传、对话附件导入、替换后自动处理,显示等待处理、正在解析、建立索引、可用于回答。
- 空索引明确显示没有可用内容,提供扫描 PDF 提取文字说明;任务失败展示原因和重试,新内容可用前保留旧文档。
- 每 5 秒在前次读取完成后刷新已加载页面,刷新失败保留旧结果并说明,知识库切换隔离请求;卡片显示大小、可检索段数和替换关系。
- Main 上传/导入 allowlist 保留可用性、替换关系与处理 Task。处理请求超时后保持原意图,看到新持久 Task 后清除本地不确定提示;新 Task 失败后的重试使用新操作 ID,避免反复命中旧失败。
## Verification
- pnpm exec vitest run tests/unit/cloud-agents-main.test.ts tests/unit/cloud-knowledge-status.test.tsx tests/unit/cloud-knowledge-catalog.test.tsx:49 passed;覆盖真实 Main 上传/导入投影、各阶段、初始读取/空内容、稳定意图重试、异步确认后清除本地不确定状态/失败后新操作、任务失败、断网恢复、分页、库切换、导入和替换。
- pnpm typecheck、scoped ESLint、pnpm run build:vite 通过(Renderer/Main/Preload/utility)。
- pnpm exec playwright test tests/e2e/cloud-agents.spec.ts --workers=1:真实 Electron 1 passed (23.2s),Host API fixture。最终 build:vite 后验证状态推进、空内容、卡片无横向溢出与后续原有编辑/试用/缩放/发布流程通过;新增知识库的草稿先保存并重新试用,相应 revision oracle 显式递增。
- pnpm test -- --run:2081 passed / 1 failed / 2 skipped,237 files passed / 1 failed。唯一失败 tests/unit/pi-managed-worker-opener.test.ts:292 期待 makelore-runtime-v6.mjs;git show 基线确认同一断言,基线 electron/coding-runtime/pi/extensions/makelore-runtime.ts 已为版本 7,两域均无本任务改动。
- 全量第一阶段失败未进入压力测试,单独 pnpm exec vitest run tests/unit/coding-chat-pressure.test.tsx --maxWorkers=1:1 passed。
- Not run:真实登录/上传、生产 OSS/Milvus、安装包和部署。
- 独立审查发现并已修正:cleanup 重试的 pending/running Task 不得覆盖 indexed+available+真实分块事实;重试期间仍计为可用并保留段数,另示后续处理进度。修订的 DOM case 覆盖 failed→pending→running→success,全程可用计数/段数保持;Reviewer 已确认原阻断解除。
- 复验调用 pnpm build 时 Vite 编译完成后进入本任务不需要的 NSIS 打包,已停止该构建进程;未发布、未验证安装包,生成物不提交。
- 独立审查 Standards PASS / Spec PASS,无未解决阻断。审查者已逐文件审阅最终固定基线 diff,并确认本轮发现与修复、测试和未验证边界;最终 task-aware drift 与 diff --check 通过。审查记录任务:20260915-knowledge-status-ml-review-4e6a1d83。
## Follow-ups
- 配套 Yuxi 与 MakeLore 变更需一起合入/部署,再用实际文档验收;本任务尚未获合并或部署授权。
- Pi runtime 的 v6 旧测试断言交该域单独处理,本任务未修改。
- 用户已补充确认注销缺失登记 20260816-explore-account-lifecycle-4f8a,官方 release-missing --force 已返回 RELEASED_MISSING;此前批准的 44 条亦已完成。仅注销登记,未删除目录、分支或提交。
## Promotion Candidates
- Target: .project-docs/current-state.md 与个人云智能体知识资源相关当前说明。
- Proposal: 文档上传/导入/替换自动处理,文件列表读取最新持久 Task 与实际分块;有内容的已索引文件才可用于回答,失败有恢复入口。
- Evidence: 本任务实现、HTTP/PostgreSQL/worker 和 Main/DOM/Electron 回归;独立审查 Standards PASS / Spec PASS。
- Future impact: 操作说明需区分上传与可用;embedding 平台承担规则保持。
- Semantic conflicts: 先前手动索引说明按本次用户明确要求更新,无费用/权限/凭据边界变化。
- Human confirmation: 功能优化和审查后提交已授权;canonical promotion 在后续 integration 任务执行。