用户需求:客户上传 PDF 等资料进行向量化并追加进向量库,且问答可检索。 决策:全局检索融合 / BFF 直连 DeepSeek 生成私有回答 / 两路并行展示(命中才显示) / 「我的资料」管理界面挂文档 TAB 空态。改动仅限本分支,QA 金标树与红线零改动。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
4.0 KiB
私有资料问答(FR-PRIV)· 团队共享上下文
docs/private_docs_team_context.md —— A1(编码)与 T1(测试)开工前必读。仿 docgen_team_context.md 纪律。
1. 目标与范围(只做这些)
客户上传 PDF/DOCX/TXT → 向量化 → 追加向量库 → 问答可检索(PRD §17 FR-PRIV-001~008)。四决策已拍板:全局检索融合;私有答案 BFF 直连 DeepSeek;两路并行展示(命中才显示);「我的资料」管理界面挂文档 TAB 空态。
2. 服务器事实(不可想当然)
- 仓库
/home/xzq/5090/teamWorkspace/zh/PlantAI-rag-new(分支 feature/bioflow-conversation-orchestration,当前 HEAD 759427b);部署树/home/xzq/5090/teamWorkspace/zh/plantai-rag-new-deploy-unified。 - 端口:BFF 8090(0.0.0.0)、vstore 8094(127.0.0.1 单 worker 明文 Python)、QA 8091(金标树红线)。venv = /home/xzq/5090/teamWorkspace/zh/plantai-rag-new-venv/bin/python(py3.12)。
- vstore 数据根:deploy-unified/docgen/(vault 210 个 .enc + index/index.json);embed 走 Ollama(127.0.0.1:11434,bge-m3:567m 1024 维,实测单条 3.44s、input 数组 4 条 0.32s)。
- 上传链路已存在(勿重造):BFF POST /api/docgen/library → vstore /api/vstore/ingest → doc_library 表;前端 uploadLibrary/listLibrary 已有。
- 生产 .env 已配:VSTORE_BASE_URL、DOCGEN_LLM_*(deepseek-chat)。
3. 改动文件清单(只动这些;多动一个即违规)
vstore 侧(明文,不编译):vstore/chunks.py(新)、vstore/embed.py、vstore/vault.py、vstore/api.py、vstore/settings.py、vstore/scripts/rebuild_chunks.py(新)、vstore/tests/test_chunks.py(新,T1)。
BFF 侧:sdk/app/services/privateqa.py(新)、sdk/app/routers/private_docs.py(新)、sdk/app/schemas.py、sdk/app/main.py、sdk/app/services/docgen/client.py、sdk/app/services/docgen/llm.py。
前端:ui/src/api/private.js(新)、ui/src/stores/chat.js、ui/src/components/chat/AssistantMessage.vue、ui/src/i18n/private.js(新)、ui/src/components/bench/PrivateLibraryPane.vue(新)、ui/src/components/bench/DocPane.vue、ui/src/api/docgen.js、ui/tests/private_docs/*(新,T1)。
文档(TL 独占):PRD.md、UI_SPEC.md、PRIVATE_DOCS_TEST_PLAN.md、team/ 下任务书与轮次报告。
4. 红线(零改动,diff 必须为空)
- QA 金标树 8091(agent/qa 与部署树 qa 全部文件)。
- 前端:stores/modes.js、labels.js、bench.js、api/qa.js、sse/parser.js、PipelineCard.vue。
- vstore:retrieval.py、parsing.py、backend.py、crypto.py(chunk 能力全部新写,不改造既有模块)。
- sdk:routers/qa.py、services/sse_relay.py、tooling/compile/compile_sdk.sh 白名单(不动)。
- docgen 既有行为:doc 级 title 检索、模板匹配、生成链路——行为零变化。
5. 技术纪律
- vstore 侧纯明文部署,禁止擅自引入新依赖(只用 faiss/numpy/pymupdf/python-docx/Ollama HTTP 既有件)。
- BFF 新模块禁止 yield/SSE(Cython 协程取消断言会崩 BFF);新模块可编译 .so,不进白名单。
- 服务层只用 dataclass/dict/stdlib;pydantic 只进 schemas.py。
- 零硬编码:路径/URL 全部环境变量或设置推导(VSTORE_CHUNK_PATH 等)。
- 嵌入纪律:批量数组(batch 16 × workers 4);失败重试一次仍失败降级零向量;chunk 失败不阻断 doc 级入库。
- 同步阻塞:api.py 端点内同步段一律
asyncio.to_thread。
6. 纪律(同 docgen_team_context 十条)
- 只动 §3 清单文件;2. 不 commit、不 push、不部署(TL 统一执行);3. 测试 agent 不修改任何产品代码;4. 不自连生产服务做破坏性操作(vstore 重启/重建由 TL 执行);5. 凭据不落文件不打印;6. 改动必须能说明对应哪个 FR-PRIV;7. 每轮测试产出轮次报告;8. 自测通过才交付;9. 有疑问先问 TL 不要自行裁决;10. 完成任务后回报 TL。