Files
PlantAI-rag-new/docs/docgen_team_context.md
jerryandClaude Fable 5 8467dec3a8 fix(bff): 断流崩溃根治——SSE 取消链模块明文化 + 团队文档归档
客户端中途断开流时 Cython 协程 __Pyx_Coroutine_SendEx 断言 abort 整个 BFF。
证据链:3.2.8 崩 db.c / 3.3.0 仍崩(升级无效) / db 明文后迁移 sse_relay.c,
证明取消链上任意 Cython 协程均可触发。最终把 db.py/qa.py/sse_relay.py
加入编译白名单(明文),隔离实例断流探针 10/10 存活,生产同构建实测通过。
代价:3 模块失去编译硬化(无凭据内容),编译模块 30->27。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-03 21:13:56 +08:00

42 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
===== 服务器关键环境事实(doc_writer 实施团队共享上下文,2026-09-03 实测) =====
【路径】
- 服务器仓库: /home/xzq/5090/teamWorkspace/zh/PlantAI-rag-new (git main,当前干净,HEAD aab24d2)
- 部署根: /home/xzq/5090/teamWorkspace/zh/plantai-rag-new-deploy-unified/(sdk/ + ui/,另有 legacy-rag/ qa/ methodology/)
- venv: /home/xzq/5090/teamWorkspace/zh/plantai-rag-new-venv/bin/python(py3.12.13)
- UI 源码: /home/xzq/5090/teamWorkspace/zh/PlantAI-rag-new/ui/(vite dev 5180,vite.config proxy 8090;生产 dist 由 TL 构建同步)
【端口】8090 BFF / 8091 QA(金标,零改动)/ 8092-8093 legacy RAG / 8094 vstore(新) / 8099 mock / 5180 vite dev
【版本】venv 已装:python-docx 1.1.2、pymupdf 1.28.2、faiss-cpu 1.14.3、cryptography 50.0.1、markdown-it-py 4.2.0、PyYAML、httpx、numpy;无 pandoc/libreoffice
【LLM/嵌入】ollama 在跑:bge-m3:567m(1024 维,0.37s/条,QA 现役同款);qwen3:8b-q4_K_M 本机可用(保密档 LLM)
【字体】/usr/share/fonts/opentype/noto/NotoSansCJK-*.ttc、NotoSerifCJK-*.ttc、truetype/wps-office/(PDF 必须用真实字体文件,禁用 PyMuPDF 内置 CJK)
===== 关键代码事实 =====
- BFF 是 Cython 编译部署:db.py/services/ 编译为 .so;main.py/config.py/schemas.py 是明文白名单(pydantic 模型只能放 schemas.py;服务层只用 dataclass/dict)
- 测试命名先例:sdk/app/services/test_*.py、sdk/app/routers/test_*.py(新增照此)
- PipelineCard.vue:pc-head 含 pc-title + 状态 badge;块结构 {type:pipeline, status, steps:[{name,state,desc,phase}]};PHASE_COLOR_VAR 键:planning/retrieval/evidence/generation/done(在 ui/src/i18n/labels.js:24-30)
- BenchPanel.vue:tabs 数组 + bench.activeTab===key 的 v-if pane 链(retrieval/sources/extract/kg);bench.js setActiveTab(key) 任意 key 可用
- 前端已有 markdown-it 14.1.0 + dompurify 3.2.3(渲染/消毒现成);上传先例:extraction multipart;http.js 600s 兜底
- 左栏展开/收起按钮样式:ui/src/styles/base.css:697-711 .side-handle-btn(26×26 圆角、hairline 描边、surface-1 底、跨左栏边缘半嵌、垂直居中)
- BFF 重启:bash /home/xzq/5090/teamWorkspace/zh/PlantAI-rag-new/deploy/bff_restart.sh(setsid 脱离 SSH,日志 /tmp/plantai-bff.log)
- vstore 将新增 deploy/vstore_restart.sh(仿 bff_restart.sh:uvicorn vstore.api:app --port 8094)
- 备份目录先例:/home/xzq/backups/<name>-<TS>/
===== 团队纪律(所有 agent 必须遵守) =====
1. 所有改码只在服务器仓库 /home/xzq/5090/teamWorkspace/zh/PlantAI-rag-new(经 ssh xzq@8.163.92.8 执行)
2. 开发 agent 只动自己模块的文件;不越界改其他模块
3. 零改动:QA 树(8091)、ui/src/stores/modes.js、ui/src/i18n/labels.js、ui/src/stores/bench.js(store)、ui/src/api/qa.js、ui/src/sse/parser.js;capabilities.py 零改动
4. 不 push git、不做 commit/tag(由 TL 统一决定)
5. 不改服务器运行中的生产进程;不自行部署(部署/重启由 TL 执行)
6. 不自行跑 ssh、不连生产端口探测(连 curl 127.0.0.1:8090/8091 也不行——别动运行中的服务)
7. 单元测试只跑不依赖生产服务/网络的(可用 mock/fixture/tmpdir);pytest 入口由 TL 统一执行
8. 每个 agent 有独立工作文件目录(见各任务书),互不写入
9. 明文安全:不落未加密的模版/附件内容到仓库或日志;测试样例可用占位文本
10. 产出报告写在本任务书指定的报告文件
===== 需要改代码前必读的仓库文件 =====
- sdk/app/config.py、sdk/app/schemas.py、sdk/app/db.py、sdk/app/main.py(P2 必读全文)
- sdk/app/routers/qa.py(错误信封格式与 multipart 先例)、sdk/app/routers/extraction.py 或类似(上传先例)
- ui/src/stores/chat.js、ui/src/components/chat/Composer.vue、PipelineCard.vue、AssistantMessage.vue、ui/src/components/bench/BenchPanel.vue、ui/src/components/layout/AppShell.vue、ui/src/styles/base.css(P3 必读全文)
- tooling/compile/compile_sdk.sh(编译清单机制——P2 若增删编译白名单文件需 TL 确认)