admin
|
8e4fce062a
|
fix(figures): PMC 外网超时 5s→15s——176 实测 EBI 2-8s 波动,5s 超时致已解析图片被整体吞掉
|
2026-09-12 01:41:37 +08:00 |
|
admin
|
04bf099faf
|
docs(deploy): DEPLOY_FLOW 增补 §5e figures 本地图片源/§5f BFF 重启陷阱/§5g r4 部署清单
|
2026-09-12 00:10:45 +08:00 |
|
 adminandClaude Fable 5
|
d54419f040
|
fix(r4-28v4): chat 候选腐烂根治——Qdrant 条目 paper_id 派生 DOI/PMCID 回填引用
根因(TL 实测 + 只读探针确认):
175 归一化库 Neo4j ASSERTS 关系 13040841 条全无 evidence 属性
(_ONE_HOP Cypher 也不返回 evidence);而 175 无 paper metadata registry,
Qdrant payload 无 pmid/pmcid/doi 键 -> chat 模式 public_citation 过滤
把有正文的 qdrant 条目(120 条)全滤掉,只留无 evidence 的 neo4j 图断言
(136 条)-> BGE 复刻 _document 模板输入 evidence 空 -> logit=-3.07,
sigmoid=0.044 与审计 bge 0.020-0.047 完全吻合 -> 0.25 final 门全拒
sources=[]。176 正常是因为配了 registry 回填 pmid。
数字链:dedup 244 -> public_citation kept 136(全图断言)-> pre_rerank 160
-> cluster 136 代表 -> rerank 全垃圾分。
修复:item_from_payload 引用字段回填优先级 payload 显式 > registry >
paper_id 派生(doi_from_paper_id/pmcid_from_paper_id + doi: 前缀形态)。
r4 v1/v2/v3 的阈值语义不变;search 免 rerank 路径不受影响。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-11 17:17:25 +08:00 |
|
 adminandClaude Fable 5
|
0252d52425
|
fix(r4-28v3): 检索模式关闭图证据检索(use_neo4j),arginine 150s->亚秒
r3(2026-09-10 #28)检索模式语义只关了 native_chain,漏关 use_neo4j
(graph 证据种子检索,graph_top_k=80):arginine 向量候选过 0.45 后照常
启动 13M 断言库图查询 150s+(TL 实测:关 neo4j 后 0.787s)。
强制块置于所有 ablation 解析之后,用户 ablation 不得重开图检索
(性能红线);use_graph_expansion 依赖 use_neo4j 一并显式关。
chat 模式不受影响。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-11 16:47:00 +08:00 |
|
admin
|
2895cd8497
|
Merge branch 'debug/backend1' into feature/bioflow-conversation-orchestration
|
2026-09-11 16:35:13 +08:00 |
|
 adminandClaude Fable 5
|
aec01ca0df
|
fix(r4-28v2-amend): 补 direct_flow_retriever 阈值参数链路+单测
上一提交中 direct_flow_retriever 的 qdrant_score_threshold 参数
(retrieve 签名/audit/调用点)未落盘,真实 search 路径会 TypeError。
本次补上三处 + 新增 qdrant_search 透传单测(不触发 IO 的对象伪造)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-11 16:34:37 +08:00 |
|
 adminandClaude Fable 5
|
1fe80b293e
|
fix(r4-28v2): 双域阈值+检索模式免 LLM 免 rerank
TL 复测校准(TL 实测 175:垃圾 vector 0.32-0.34/正常 0.63+;垃圾 final 0.19-0.20):
1. score_gate 双域双常量:MIN_VECTOR_SCORE=0.45(QA_MIN_VECTOR_SCORE,向量域,
Qdrant score_threshold 与 search 预筛);MIN_SOURCE_SCORE=0.25 保持(chat
模式 final_score 后置过滤)。
2. pipeline answer():retrieval_only 无条件关 use_draft/use_planner(不看
llm.available,search 模式绝不产生答案);use_bge_rerank 强制关(免 CPU
rerank,性能根治);候选按 vector_score 排序直接输出且 final_score=
vector_score(与 Qdrant 阈值同域)。
3. Qdrant score_threshold 仅在 retrieval_only 路径传入(direct_flow
retriever 参数化,0.45);chat 不传保召回;v16_retriever 还原(r4-28 的
0.25 全域阈值回退)。
4. 单测更新:search 无 LLM/无 rerank/0.45 滤 0.32 保 0.63/score 取 vector
域/chat 不传阈值;chat final 域 0.25 语义不变。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-11 16:33:15 +08:00 |
|
admin
|
8d04eb6845
|
chore(r4): 恢复 methodology_routes.py 执行位 755(backend2 合并引入的 mode 变更)
|
2026-09-11 14:23:29 +08:00 |
|
admin
|
c620461794
|
Merge branch 'debug/backend2' into feature/bioflow-conversation-orchestration
|
2026-09-11 14:21:23 +08:00 |
|
admin
|
025e2d516c
|
Merge branch 'debug/backend1' into feature/bioflow-conversation-orchestration
|
2026-09-11 14:21:22 +08:00 |
|
 adminandClaude Fable 5
|
f18286f022
|
fix(r4-47a/52): DOCX 红头标题样式同源解析 + 意图词典补总结/概括/归纳
#47a: 红头/标题字号颜色从 render_html 产物解析(新增 docgen/html_css.py:
内嵌 style 块 + 调用方传入的模板 css,组合选择器展开、px->pt),解析失败
回退历史常量(FF0000/22pt、h1/h2/h3 22/16/14pt,行为不变)。converter 与
导出路由把 css 传入 DOCX 转换,与 PDF/预览同源;非红头模板(如 report 灰
#333)不误渲染红头。r3 的 doc-body 包裹/表格/图片结构不回归。
#52: intent.py WRITE_VERB 补总结/概括/归纳,新增动词自指保护(唯一命中的
DOC_TYPE 等于命中动词本身时不算写文档意图,如「总结一下植物光合作用的过程」
仍 qa);cases_intent.md 同步规则与用例 31-34(共 34 条)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-11 14:19:04 +08:00 |
|
 adminandClaude Fable 5
|
28bee31d00
|
fix(r4-28): 检索相关性下限,无关问题空 sources
_select_graph_balanced 引入相关性下限 0.25(score_gate.py 具名常量,
env QA_MIN_SOURCE_SCORE 可覆盖):低于下限的候选不入选,全部低于下限
返回空;graph 配额语义不变,audit 增 min_source_score/below_min_source_score。
Qdrant 查询(direct_flow_retriever/v16_retriever 两处)加同源 score_threshold
双保险(collection distance=Cosine,0.25 与垃圾实测带 0.19-0.20 留余量、
远低于正常命中 >0.7)。pc_retriever 为禁用后端,零改动。
新增 test_score_gate.py:30 低->0、5 高+25 低->5、graph 配额、env 覆盖。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-11 14:18:56 +08:00 |
|
 adminandClaude Fable 5
|
00eb0bc1d0
|
fix(r4-27): normalize_source title 空值回填(实体名/元数据标题字段,正文片段绝不参与)
消息级 sources items 的 title 为空导致前端文献列表渲染出正文片段。
回填优先级:顶层标题类字段(publication_title/article_title/journal_title/name)
→ metadata 标题类字段(paper_title/source_entity/name/source)
→ 顶层 source(断言主体实体名);全部缺失保持 null(前端有 fallback)。
paper_id/score/snippet 等既有字段不受影响。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-11 14:18:43 +08:00 |
|
 adminandClaude Fable 5
|
b5dc12e8a5
|
fix(r4-52c): _pick_items 先按 doc_id 聚合再取块,重复文档不再占满名额
缺陷 #52c(验收 §6 第 3 条):_pick_items 原实现按 score 序逐条取 top_k 再
每 doc ≤3 去重,4 份重复上传的作者页块(得分几乎相同)占满 top-8,正文块
从未进入上下文,模型只能答「资料不足」。
修复(sdk/app/services/privateqa.py):
- _pick_items 改为先按 doc_id 聚合:doc 级得分 = 组内 max score;
按 doc 级得分降序取 top 文档(与 top_k 对齐);每选中文档取组内得分
最高的 ≤ PRIVATE_QA_PER_DOC_MAX(3) 块;块内按得分排序
- 组内近重复块(归一化 snippet 前 48 字符指纹相同——重复上传残留的
同一页面切块结果逐字相同)只取 1 条,防 200 条同内容作者页块把该 doc
的 3 个名额占满、正文块仍进不了上下文;正常相邻块(重叠 1 段)不受影响
- ask_private 候选池从 top_k 放宽到 min(top_k×4, 20):只取 8 条时重复
文档块把池占满、聚合阶段无块可选;最终 _pick_items 仍收敛到 top_k 条
- _is_self_deprecating/_build_context(12k 预算、[资料n] 引用编号)不动
测试:sdk/app/services/test_privateqa_pick.py(8 用例):4 doc × 200 作者页块
+ 正文块 → 多 doc 覆盖且含正文块;正常场景 top_k/每 doc 上限语义不变;
单 doc 上限;同分并列稳定;ask_private 候选池 top_k×4(≤20)与 e2e 全链。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-11 14:13:08 +08:00 |
|
 adminandClaude Fable 5
|
60f7360cec
|
fix(r4-52b): vault.add 按内容 SHA256 去重,重复上传覆盖旧 doc_id
缺陷 #52b(验收 §6 第 2 条 + 回归 G3):同一 PDF 重复上传 4 次 → 4 个 doc_id
× 200 chunk = 800 条,FAISS 检索 top_k 被同内容不同 doc_id 的块占满。
修复(vstore/vault.py):
- add() 先算内容哈希 SHA256(原始文件字节),查 index.json 的 content_sha
字段判重;同内容 → 移除旧 doc 的检索行/密文/chunk 行,再落一条新 doc
(新 doc_id,meta 以本次上传为准,created_at 刷新)
- 去重后该内容在库中恒仅 1 个 doc_id、chunk 总数不翻倍;同名不同内容
按内容哈希不误判(G3-2);不同内容互不覆盖(G3-1)
- content_sha 落 index.json(doc_meta 新字段);rebuild_index 对历史密文
缺 content_sha 时以密文内容补算(重建后去重依据不丢)
- 与现有删除机制一致:index.remove_item 过滤重建 faiss、chunks.remove_document
过滤重建 chunk faiss(IndexFlatIP 不支持逐行删,现有机制即重建)
测试:vstore/tests/test_vault_dedup.py(5 用例):同内容两次 → 1 个 doc_id/
chunk 不翻倍/旧密文清理;meta 以本次为准;不同内容 → 2 个 doc_id;
同名不同内容不误判;重启(新实例 load)后仍去重。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-11 14:12:57 +08:00 |
|
 adminandClaude Fable 5
|
3889a2a29b
|
fix(r4-38): mineru 启动期失败自动重试+中文可读错误+PYTHONUNBUFFERED
缺陷 #38(验收 §4):任务在最早阶段(pipeline 日志出现前)抛出无消息异常,
mineru API 侧 task.error 空串 → CLI 拼出空 message;API 异常日志打向 stdout
被块缓冲,CLI 失败后立即杀 API 进程,真因永久丢失。
修复(agent/methodology 与 agent/legacy-rag 两处同改):
- build_mineru_runtime 的 env 注入 PYTHONUNBUFFERED=1(子进程异常日志即写即落)
- returncode≠0 且 job.log 无 doc_analyze_streaming 行 = 启动期失败 → 自动重试
1 次(stdout 追加同一 job.log,日志留 [retry] 标记,重试块含重复启动命令行)
- 重试仍失败且仍无 pipeline 行 → status failed + 中文可读错误
「提取启动阶段失败(重试后),可能受主机 GPU/显示重配置干扰,请重试」,
附 job.log 原始错误尾部
- 已有 pipeline 行的中途失败不得触发重试,走原错误路径(含 CUDA OOM 中文错误)
测试:agent/{methodology,legacy-rag}/api/test_mineru_retry.py(两树 8 用例):
env 含 PYTHONUNBUFFERED;首败无 pipeline 行 → 重试;重试仍败 → 中文可读错误;
有 pipeline 行失败 → 不重试;json 直投跳过 mineru 段不重试;G6-2 边界。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-11 14:12:46 +08:00 |
|
admin
|
75877ecab7
|
fix(r4-27/32/47b/52a): 前端四项缺陷修复
#27 消息级来源 title 空值串行:SourceRow 标题链空值 fallback(非空 title
>paper_id>id>「(无标题)」,绝不渲染空文本或正文片段);bench store 新增
sourcesStale 失效标记,chat.js QA 流 onComplete 与检索模式完成终态置标记,
SourcesPane 监听自动 force 重拉(终态一次,跨会话后台完成不打扰当前视图)。
后端 normalize title 回填由 Dev-B1 负责。
#32 KG 搜索「水稻」无结果无反馈:KgPane 成功空结果新增 kgNoResult
「未找到相关实体」提示(与 kgDown 服务离线、kgEmpty 初始空态三态文案区分、
触发条件互斥),搜索按钮空结果后保持可用,arginine 命中路径不回归。
#47b 关闭文档→返回→再关闭看不到文档:docgen store 状态机加固——open/
adoptArtifact 自含复位 viewMode='doc';close() 作废在途 content/html 拉取序号
(迟到响应不再复活已清空的 html/css/templateKey/letterhead);fetchHtml 追加
contentSeq 归属守卫。反复关闭/资料库往返/会话切换无残留。
#52a「总结论文」路由 QA:WRITE_VERB 补「总结/概括/归纳」;「总结」自身在
DOC_TYPE 中会误拉无附件普通总结句,规则 3 细化——纯总结类动词句须命中
其他文档类型词(如「论文」)才进 docgen,带附件走规则 4 兜底。后端
intent.py 词典同步由 Dev-B1 负责,请 TL 校验双端一致。
单测:tests/r3debug/r4fixes.test.js 新增 31 例(含 SourceRow fallback、
sourcesStale 链路、KgPane 三态、docgen 状态机迟到响应作废、意图路由),
r3debug 全套 68/68 通过。
|
2026-09-11 13:57:00 +08:00 |
|
admin
|
7840527f82
|
fix(bioflow): 路径卡确认创建后事件断链——任务 201 创建但 UI 无反馈
根因:FlowPathCard.confirmCreate 创建成功后 emit(updated) 全链无人监听
(与 r3-07-01 跳过按钮同模式的事件断链,基线即存在)。后果:无进度卡、
无任务事件订阅、不落库(刷新即丢 jobId)。
修复:chat store 新增 confirmBioflowPath 一站式 action(创建→挂 job_created
进度块→connectJobEvents 带 onEvent 桥接推进消息块→落库);FlowPathCard
改调 action 并防重复创建;hydrateDetail 恢复未终态任务的订阅(刷新后续流转);
connectJobEvents 加 onEvent 回调。单测 5 项新增,全套 373 全绿。
|
2026-09-10 21:14:24 +08:00 |
|
admin
|
206f92e275
|
docs(debug): r3 缺陷记录文档(13 项+复测 4 项+部署 6 缺口,含根因/修复/时间/验证)
bugfix-r3-20260910
|
2026-09-10 20:38:11 +08:00 |
|
admin
|
39120b985f
|
docs(deploy): §5c 补 r3 实测关键 env(设备模式开关/LLM 阶段四键/8093 主上游提醒)
|
2026-09-10 20:10:22 +08:00 |
|
admin
|
f7188bed05
|
fix(deploy): 索引校验按标签+属性过滤(neo4j 自动命名,按名匹配永远为空)
|
2026-09-10 20:09:49 +08:00 |
|
admin
|
2fbbd3ee1f
|
fix(deploy): 补入 run_methodology_batch.py(LLM 方法学提取阶段,176 部署暴露的缺失)
|
2026-09-10 19:38:36 +08:00 |
|
admin
|
6cddda7afd
|
Merge branch 'debug/backend' into feature/bioflow-conversation-orchestration
|
2026-09-10 18:23:06 +08:00 |
|
admin
|
2150b28bf6
|
Merge branch 'debug/frontend' into feature/bioflow-conversation-orchestration
|
2026-09-10 18:23:06 +08:00 |
|
 adminandClaude Fable 5
|
b497aec007
|
test: r3 定点复测结论附录(4 项缺陷复测通过)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-10 18:13:49 +08:00 |
|
 Debug-2 BackendandClaude Fable 5
|
ad248cf6a8
|
fix(backend): r3-47-01 DOCX 包裹层递归遍历 + r3-42-01 内置模板 key 回退语义
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-10 18:03:45 +08:00 |
|
 adminandClaude Fable 5
|
53069d4940
|
fix(ui): 复测缺陷 r3-07-01/r3-52-02 + b3 测试债
- r3-07-01 「跳过」无效:补齐事件转发链 MessageList(新增
skip-reveal emit)→ ChatPanel(@skip-reveal 监听)→ store.skipReveal();
新增 skipReveal.test.js 三层断言(点击定格终态/组件转发/ChatPanel 监听)
- r3-52-02 终态文案残留:docgen 轮询 tick 的 done 分支把 generation 步
desc 还原 DOCGEN_STEPS 默认文案「按大纲逐节生成正文」;docgenPoll
done 用例改两阶段 mock(running 进度文案 → done 还原)复现原缺陷
- 测试债:b3 bench.store.test.js 删除已下线 sessionSourceItems 引用,
按 #27 修复后语义改断言(后端去重结果原样透出)
自测:r3debug 32 项 + 全套 373 项 + private_docs 23 项全绿;
playwright 实测(mock SSE/docgen 202):跳过按钮点击后全文定格、
skip-btn/cursor 消失;docgen done 后第 4 步 desc 还原默认文案;无 JS 错误。
未 push。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-10 18:01:01 +08:00 |
|
 Debug-2 BackendandClaude Fable 5
|
772c7cd688
|
fix(backend): r3 七项缺陷修复——图片预算/neo4j normalized/超时分流/mineru 加固/检索降级/DOCX 同源/docgen 异步任务化
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-10 16:46:48 +08:00 |
|
 adminandClaude Fable 5
|
671783eb1e
|
fix(ui): r3 前端 10 项缺陷修复(#7/#27/#28/#31/#39/#40/#42/#47b/#52/#55)
- #7a reveal 超时:长文按总时长 ≤8s 反推 interval(下限 12ms),短路径
30ms/字符不变(step=1);跳过按钮与 reduced-motion 行为不变
- #7b 标题编号:heading_open 注入 h1「一、」/h2「1.1」/h3「1.2.3」,
层级变化归零、自带编号跳过、md-hN class 恒挂、计数器逐次渲染重置;
DocPane md 回退预览与私有参考块用 renderMarkdownPlain 关闭注入
(防止编号被序列化写回正本)
- #27 会话聚合:删除前端二次聚合,会话域直接以后端 sources 为准;
SourcesPane/SourceRow 以 paper_id/id 为 key 与高亮依据,徽标显示
真实 paper_id(截断+悬浮),无 paper_id 退 index+1;
setHighlightSource 参数 index→key,chip 编号契约保持
- #31 节点详情:KgEntityDetail fetchExtra 序号守卫;KgPane :key 强制
重建;KgGraphView pointer 事件重构(pointerdown 不捕获、位移>4px
才捕获+标记 dragging、pointerup release、onClickNode dragging 拦截)
- #39 日志刷新:打开总是重拉+「刷新日志」按钮+有 running 时 5s 独立
轮询(onBeforeUnmount 清理)
- #40 轮询暂停:任何离开 extract 的切换 pausePolling;详情/日志展开态
提升到 store(detailOpenId/logOpen/runLog/logError),切 TAB 保留
- #42 模板选择:Composer docgen 模式模板下拉(自动推荐+内置+as_template
懒加载,失败降级),template_id 经 sendDocgen 传入
- #47b 会话切换 resetSession(selectSession 动态 import,只清不丢)
- #55 文档 TAB:docgen store viewMode + DocPane「资料库」/「关闭文档」/
「返回文档」按钮
- #28 检索文案:searchNoAnswer/searchTimeoutEmpty;200 降级体按
payload.degraded 分流,不再走 _errorMarker TIMEOUT 报错
- #52 异步轮询:api getTask/listTasks;sendDocgen 兼容 200/202,
202 后释放 busy 锁(生成期间可继续对话)、消息块记录 task_id、
2s 轮询 getTask、progress 驱动「生成中 x/y 节」、done 复用现有
artifact 挂块+落库+adoptArtifact+切 TAB、error 可重试;
会话恢复时 running 块含 task_id 续轮询(不误标「已中断」)
自测:29 个新增 r3debug 单测 + 23 个既有 private_docs 测试全绿;
npm run build 通过;playwright 冒烟(dev server 5199)无 JS 错误,
模板下拉/提取面板/日志刷新按钮渲染正常。
未 push;Debug-2 9090 未就绪,#52/#28 联调留待 9090 就绪后执行。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-10 16:17:11 +08:00 |
|
 adminandClaude Fable 5
|
21063af703
|
docs(deploy): §5c MinerU CPU 裸部署 + §5d embedding 裸部署固化(176 实测)
- MinerU: 175 minerupy312 conda env 整体 tar 搬运到 176 /srv/plantai/mineru-cpu(8.1G),
模型缓存 /srv/plantai/mineru-models(3.6G);四个陷阱: tar --numeric-owner(非 --numeric-ids)、
shebang 重写、modelscope 绝对路径软链断链、stdin-EOF 关闭监视器(< /dev/null)
- 冒烟: 22 页英文 PDF 67s 出 74KB markdown, 与 175 GPU 基线 md5 逐字节一致
- prod.env 五项 env 已加(176, 待 methodology 代码修复后随 install 包重发布生效)
- embedding: Ollama 裸服务离线布局/bge-m3 位置/vstore env/CPU 性能实测(短句 4.1s, 780 字 1.0s)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-10 15:35:30 +08:00 |
|
 adminandClaude Fable 5
|
c53fe9e09d
|
test: 176 手工测试 13 项缺陷验收用例(r3)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-10 14:44:44 +08:00 |
|
 adminandClaude Fable 5
|
f46319497d
|
docs(deploy): §6.7 功能自测五项(部署完成必须实跑,176 实测沉淀)
- 6.7.1 QA 完整 LLM 答案(complete 事件全量答案,非仅 progress 帧)
- 6.7.2 新文档入库闭环(上传→嵌入→检索→清理)
- 6.7.3 legacy-rag 真实图谱查询(冷缓存 >60s 需 120s 超时)
- 6.7.4 methodology 真实任务流(status 路径布局断言)
- 6.7.5 生信镜像冒烟+金标 E2E(smoke_golden 4 步全绿+24 ID diff 空)
- 自测结论记录要求:5/5 通过+两机一致性对比
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-09 09:52:11 +08:00 |
|
 adminandClaude Fable 5
|
a57c1994e8
|
feat(deploy): 176 部署完成与启动脚本可移植化
- start.sh×3: venv 解析改为安装包内 ../venv 优先(175 旧路径回退), 176 等目标机免改
- build_all.sh: start_all 模板补 vstore 拉起 + BFF 前 source sdk/.env + PYBIN 可移植解析 + env 目录 mkdir
- DEPLOY_FLOW.md: §5.1 重写(176 实战模板: venv/torch 安装顺序/.env 键/ollama 离线携带/下载源可达性/内网直连), §0 增 176 已部署行
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-09 01:01:30 +08:00 |
|
 adminandClaude Fable 5
|
e151f675f1
|
feat(qa-db): QA数据库裸进程标准(deploy/qa-db五脚本+守卫去版本锁定+打包/文档/Excel同步)
- deploy/qa-db/: qdrant/neo4j systemd 裸进程安装脚本+unit模板+整库替换(replace_db.sh)
* 数据双制品模型: <部署根>/qa-db 与 install 分开传输, 支持频繁整库替换
* 免编译(官方静态二进制/tarball)+本地 bin/ 离线分发+国内镜像回退
* 端口 27433/27434+19888/19885(127.0.0.1), 175 docker 容器(27333/19788)为其他项目共享不动
- backend_guard.py: 移除精确计数相等校验(数据库会整库替换/持续更新, 不得锁死版本)
保留身份校验(release/collection/kb_version/标签/关系类型), 计数仅随 health 返回
- qa/scripts/start.sh: reranker 模型路径回退(install/models/bge-reranker-base)
- build_all.sh: qa-db 脚本+reranker 模型入包; .gitignore: qa-db/bin 离线载体
- DEPLOY_FLOW.md: §0/§5.0/§5.0b/§6.0b/§7 QA 数据库裸进程标准
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-08 17:59:53 +08:00 |
|
 adminandClaude Fable 5
|
acf5b734fa
|
feat(deploy): nginx 80 端口代理章节+模板+BFF 改绑 127.0.0.1(仅新增修改,未真实部署)
- deploy/nginx/plantai.conf(新): 80 反代 127.0.0.1:8090 模板,SSE 长连接
(buffering off/read_timeout 3600s>看门狗 1200s)+大文件上传
(client_max_body_size 0/request_buffering off/send_timeout 600s)适配
- 绑定脚本: bff_restart.sh/sdk/run.sh/start-dev.sh 默认 0.0.0.0→127.0.0.1
(nginx 80 为唯一客户入口);build_all.sh start_all heredoc 同改+nginx
模板入包 install/nginx/
- DEPLOY_FLOW.md: §0 绑定策略更新+nginx 模板位置;新增 §5b 从零安装
nginx(apt/yum 探测→放模板→nginx -t→启用→防火墙→先 nginx 后改绑的
切换顺序→内网验证);§6 质检增 nginx 专项(进程/80 监听/经 80 首页+SSE
冒烟+上传冒烟);§7 注明现网仍是 0.0.0.0:8090 直连形态待按 §5b 迁移
纪律: 仅新增与修改,未在目标机/现网执行任何 nginx 安装或改绑操作。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-08 15:15:21 +08:00 |
|
 adminandClaude Fable 5
|
105b9c8427
|
docs: 编译→打包→部署→质检全流程手册(agent 自动执行版)
覆盖: 五树编译+import 冒烟 / KB 加密(SKIP_KB 门禁) / build_all 一键打包
+泄露门禁 / 发布包组装(QA prompts 补齐+镜像导出+传输) / 目标机部署
(venv+.env+KB 密钥+Ollama+start_all) / 部署后质检(端口绑定/健康/无明文
代码核验/数据库加密核验/私有问答冒烟/回归)。硬要求:目标机无白名单外
明文代码。已知限制:SKIP_KB=1 未定版、KB 解密密钥运行时消费方未实现
(报 TL 裁决)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-08 01:27:23 +08:00 |
|
 adminandClaude Fable 5
|
7b63765d69
|
chore(deploy): vstore 编译硬化纳入打包流水线——目标机不再出现向量库明文代码
- tooling/compile/compile_vstore.sh(新): 复制 compile_sdk.sh 改白名单
(api.py 入口明文+__init__.py,其余 12 模块 Cython .so+strip+elf 校验)
- build_all.sh: 编译段追加 vstore 编译(SDK_PYTHON);冒烟段追加 import 检查;
组装段改复制编译产物(此前复制明文源码)
- 实测: 编译 12 .so 成功;冒烟 health+search-chunks 正常;bash -n 过
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-08 01:25:44 +08:00 |
|
 adminandClaude Fable 5
|
dbe2037116
|
chore(deploy): 向量化本地模型(Ollama+bge-m3)纳入部署脚本
- deploy/ollama_restart.sh(新): Ollama 幂等拉起+嵌入模型校验,二进制多候选
探测(零硬编码),模型缺失只告警不阻断;start_all.sh 在四服务前先拉起
- vstore/vstore_restart.sh(新): 部署树与安装包共用版(路径从脚本位置推导,
零硬编码),替换部署树旧硬编码脚本(实测重启后 210 文档+210 chunks 完整)
- build_all.sh: 组装段纳入 vstore 明文源码+启动脚本+env 模板;start_all.sh
heredoc 增加 Ollama 拉起段——安装包自此包含向量化环节
实测: ollama_restart.sh 幂等(已运行跳过,bge-m3 就绪);vstore 新脚本重启
UP(210/210);bash -n 全过。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-08 00:46:31 +08:00 |
|
 adminandClaude Fable 5
|
5931ddca5e
|
test(priv): R3 轮次报告——BUG-PRIV-R2-01 关闭,缺陷清零;用例表 v1.3(LLM 收到问题与参考资料)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-08 00:19:38 +08:00 |
|
 adminandClaude Fable 5
|
92e2754583
|
fix(priv): R2 严重缺陷——ask_private 的 LLM 调用拼入用户问题(原实现只传检索上下文致真命中被自谦改判误杀)
user 消息改为「用户问题:{question}\n\n参考资料:\n{context}」;
SYSTEM_PROMPT 与 [资料n] 编号顺序不变。自测:真命中 hit:true(引
[资料1] 回答序号 38)/无关查询仍改判 hit:false/空检索不调 LLM/sdk
225 passed 无新增失败。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 23:40:55 +08:00 |
|
 adminandClaude Fable 5
|
b68ebe6445
|
test(priv): R2 轮次报告——R1 三缺陷关闭,发现严重缺陷 BUG-PRIV-R2-01(LLM 未收到 question 致真命中被自谦改判误杀)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 23:38:52 +08:00 |
|
 adminandClaude Fable 5
|
04c08e8339
|
fix(priv): R1 缺陷修复——信封包 ok 键 + 空 question 422 + 自谦答语确定性改判 hit:false
- private_docs.py: 命中/未命中两态响应包 ok:true(错误信封 ok:false 不变)
- schemas.py: PrivateQARequest.question 加 min_length=1
- privateqa.py: LLM 自谦答语(资料中未找到相关信息+等价变体)确定性改判
{hit:false,mode:empty},不调默认阈值(底噪 0.3-0.37 与真实命中 0.42-0.73
有重叠)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 23:07:19 +08:00 |
|
 adminandClaude Fable 5
|
19e928ba93
|
test(priv): R1 轮次报告——101+225+396 全绿,3 个一般级缺陷(信封缺 ok/空 question 未 422/底噪越线),38 errors 确证预存基线
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 23:03:19 +08:00 |
|
 adminandClaude Fable 5
|
6bf11821c1
|
test(priv): T1 骨架修正——L1-01 笔误 + 7 处执行期缺陷(vi.mock TDZ/恒真断言/vault 夹具路径隔离/mock 边界对齐 A1 真实实现)
自证: vstore pytest 27 passed; vitest 23 passed; 追溯矩阵 92=92 无孤儿。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 22:41:36 +08:00 |
|
 adminandClaude Fable 5
|
e783a26be6
|
feat(priv): A1 实现私有资料问答 P1-P3——vstore chunk 索引 + BFF 私有问答端点 + 前端并行块与管理界面
- P1 vstore: chunks.py 切块(600字/8段/重叠1/上限200,表格原位聚合,outline
不参与)+ChunkIndex 三文件原子写+无降级档;embed_batch_chunked 批量16x并发4;
vault add/delete/rebuild_chunks 钩子(chunk 失败不阻断 doc 级);search-chunks/
rebuild-chunks 端点+health chunk_count;rebuild CLI
- P2 BFF: privateqa.ask_private(同doc≤3去重/12k截断/40s超时/带引用短答);
POST /api/qa/private 三态;schemas PrivateDocBlock 入 union;client.search_chunks;
llm timeout 参数;main.py 注册
- P3 前端: _firePrivate 并行检索+竞态防护(pending/flush/防重入/跨轮归属);
AssistantMessage private_doc 块;i18n/private.js;PrivateLibraryPane 挂 DocPane
空态;removeLibrary(204 兜底)
自测: vstore pytest 26/27(1 失败为 T1 骨架笔误待修)+74 回归;前端 vitest
373/373;npm run build 0 error;sdk 222 passed(3 failed 为基线预存);红线 diff 空。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 22:22:22 +08:00 |
|
 adminandClaude Fable 5
|
9e5367b268
|
test(priv): T1 用例基线 92 条——100% 覆盖 FR-PRIV 调整内容 + 双向追溯矩阵 + 测试骨架
TL 复查达标放行:92 defined = 92 used、unmatched 0、unreferenced 0;
假设 1/9 已按实施方案 §1.2/§3.2 裁决修订(表格原位聚合/outline 不参与
切块/跨轮归属行为级判据)。骨架:test_chunks.py 416 行 + vitest 4 文件。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 21:42:22 +08:00 |
|
 adminandClaude Fable 5
|
dea46402e8
|
docs(priv): 阶段0 私有资料问答文档先行——PRD §17 FR-PRIV-001~008 + UI_SPEC §9 + 原始测试计划 + 团队上下文 + A1/T1 任务书
用户需求:客户上传 PDF 等资料进行向量化并追加进向量库,且问答可检索。
决策:全局检索融合 / BFF 直连 DeepSeek 生成私有回答 / 两路并行展示(命中才显示) /
「我的资料」管理界面挂文档 TAB 空态。改动仅限本分支,QA 金标树与红线零改动。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 21:20:35 +08:00 |
|
 adminandClaude Fable 5
|
759427b759
|
chore(deploy): 启动脚本绑定策略统一——8090 默认 0.0.0.0,其余服务默认 127.0.0.1
用户规则:提供客户 UI 的服务(BFF 8090)默认绑 0.0.0.0 面向内网客户
访问;其余内部服务(QA/methodology/legacy/vstore/bioflow)默认绑
127.0.0.1 不对外暴露。
- deploy/bff_restart.sh: BIND 默认 127.0.0.1 → 0.0.0.0(注释同步)
- sdk/run.sh: --host 127.0.0.1 → 0.0.0.0(注释同步)
- deploy/start-dev.sh: BFF 行 127.0.0.1 → 0.0.0.0
- bioflow_service/restart.sh: BIOFLOW_BIND_HOST 默认 0.0.0.0 → 127.0.0.1
- agent/methodology/scripts/start.sh: METHODOLOGY_API_HOST 默认
0.0.0.0 → 127.0.0.1(部署树副本同改)
实测:8090→0.0.0.0、8091/8092/8093/8094/8098/8099→127.0.0.1,
BFF 上游全 OK,8092/8098 已按新默认值重启,残留 methodology 旧
进程已清理。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 18:55:42 +08:00 |
|
 adminandClaude Fable 5
|
5457579d02
|
fix(bioflow): BFF Block union 补 7 种生信块类型,修复骨架消息持久化 422
前端 sendBioflow 的骨架消息(kind=bioflow,blocks 含 bioflow_path 等
生信块)POST 到 BFF 会话持久化时,Block union 无生信块类型 → 422
VALIDATION,会话历史不落库(前端有 catch 不阻断显示)。
- schemas.py 新增 BioflowPathBlock/BioflowProgressBlock/BioflowFormBlock/
BioflowFileBlock/BioflowArchiveBlock/BioflowQaBlock/BioflowReuseBlock
(判别字面量+全默认值+extra=allow 宽松接收——字段契约归前端 store
与 bioflow 服务 SSE,BFF 只做持久化校验)
- 部署:deploy-unified/sdk/app/schemas.py 已同步,8090 重启(0.0.0.0
绑定保持内网可访问)
- 验证:curl 骨架消息 422→201,7 种块写入/GET 详情/PATCH 检查点/读回
全通;浏览器端到端(真实生产 BFF)无 4xx、路径卡正常、刷新后会话
历史恢复保留生信消息与块
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 18:43:01 +08:00 |
|
 adminandClaude Fable 5
|
bd011650f6
|
fix(bioflow): 意图分流收窄 v1.1——仅明确分析指令进生信流,问答句一律 qa
用户反馈:不是所有对话都走生信编排,只有「用xxx进行分析」「帮我分析xxx」
类明确指令才是生信流程;「水稻SPL基因家族的最新研究进展有哪些?」
等问答句必须走原正常问答流程。
- intent.py/intent.js 同表双跑:任务动词+对象 / 前缀分析句式 / 分析链句式
三通道;新增疑问引导词+问答主题词两道拦截;「研究」移出任务动词
(「帮我研究一下水稻SPL家族」经前缀通道仍保 bioflow)
- cases_bioflow_intent.md 升 v1.1:40+15 用例,新增 #41-#55 问答句收窄
- test_intent.py 补 v1.1 用例,50 条全绿;PRD FR-BIO-001 同步收窄
- 部署:8098 已重启,ui/dist 重建同步 deploy-unified,浏览器端到端验证 PASS
(问答句走 /api/qa/chat/stream,分析指令走 /api/bioflow/chat/stream 出路径卡)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-09-07 18:13:52 +08:00 |
|