Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1c12f98335
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
感谢贡献。这次先不合入,主要是方案取舍上的考虑。 目前将 Office 转为 PDF,是受 Web 端预览能力限制采用的权宜方案。继续围绕它增加预生成任务、状态管理和轮询,会带来较多维护成本,但没有从根本上解决各类 Office 文件的统一预览问题,收益与复杂度不太匹配。 因此暂时不继续扩展这条转换链路,这个 PR 先关闭。感谢理解。 |
变更说明
知识库 Office 文件首次预览才开始转换,已有 PDF 缓存也会等待较久;工作区尚未识别 Excel 预览,文件详情在后台生成完成后不会自动刷新。本 PR 支持
.xlsx/.xls,在原件注册后提前生成共享 PDF,缓存命中直接返回完整正文,并让现有预览入口自动显示完成结果。feature、bug-fix。工程主张与 Owner
knowledge_preview_service在原件提交后提交独立预览 Task。预览提交异常记录告警,已成功注册的原件仍返回,解析与入库继续。/workspace/knowledge/file在授权后读取缓存,缺失时补交去重任务。已读取到内存的二进制使用完整 Response 和 Content-Length,避免 BytesIO 逐行迭代产生大量正文块。knowledge_preview与解析、索引状态独立;完整链路链接现有预览机制页。验证情况
XLSX 与真实 XLS 在首次点击前生成对应 PDF,原件不变
缓存完整返回,读取时不再同步转换
test_binary_preview_response.py断言完整正文;真实 HTTP 重复读取核对 PDF 字节、Content-Length 和缓存对象。去重、权限、执行权及原件检查守住发布边界
页面自动展示完成结果,关闭和离页终止等待
后端在匹配锁文件的离线运行镜像中只读挂载源码执行,HTTP fixture 使用独立 PostgreSQL 数据库、专用 Redis、MinIO 和真实 worker;前端与文档使用锁文件对应的依赖。实际命令与结果:
python -m pytest test/unit -m "not slow" -q -o addopts= --disable-warnings:2547 passed,7 subtests passed。python -m pytest test/integration/api/test_knowledge_preview_http.py --confcutdir=test/integration/api -m "not slow" -q -o addopts= -s:1 passed。node --test --test-concurrency=1 "test/**/*.test.js" "test/**/*.spec.js":413 passed,其中详情轮询 9 项。node node_modules/eslint/bin/eslint.js . --max-warnings=0、node node_modules/vite/bin/vite.js build:Passed。python scripts/verify_engineering_contracts.py、python -m unittest scripts.test_verify_engineering_contracts:Passed,后者 63 tests。node node_modules/vitepress/bin/vitepress.js build:Passed。git diff HEAD --check、git diff --cached --check:Passed。简化 / 删除验收
不涉及。
独立语义 Review
全新上下文 Reviewer 读取最初 31 个文件的完整需求、仓库规范、diff、相关源码、真实 HTTP 产物回读、负向测试和最终页面截图,并独立复跑详情轮询 unit。审查发现的详情轮询、预览提交结果隔离及 KeepAlive 遮罩问题均已修复。随后补充的架构 Owner 文档由另一位全新上下文 Reviewer 对照 registry、预览 service、既有测试及机制页独立审查。最终无未解决阻断项。Review 不替代上述验证。
未验证范围与风险
事故反馈
未达到高影响事故门槛:本次问题为预览等待和生成状态展示,未发现用户原件丢失或越权。已落地能恢复原缺陷的负向测试和 HTTP 失败恢复验收。
界面变更
以下截图来自原始 Vue 组件与合成文件,不包含用户业务数据。
生成完成后自动展示 PDF:
生成中离开缓存页面,弹窗与遮罩关闭:
关联事项
无。
补充说明
支持
.xlsx、.xls,.xlsm保持不支持;复用现有 LibreOffice、30 MB 限制、转换超时、Task 队列和共享缓存。无新增依赖、配置或 Schema 迁移;API 与 worker 需使用一致的后端版本。存量文件继续在缓存缺失的首次读取时补交任务。