potaser
7ced30fa96
feat(review): P5 科研汇报助手 + 14 风格 + 真图嵌入
2026-10-15 18:51:59 +08:00
potaser
2797145104
feat(review): P4 two-phase zip compile + XDV→PDF diagnostics + EPS fallback
...
- inspect/upload zip then compile project (main-file detection, zip safety,
single-slot queue, failed-envelope carries compile_id + log_url)
- keep failed project/ scene 24h (failed_project_ttl_s; KEEP_FAILED_PROJECTS=1
forever), success deletes immediately; two-tier compile_jobs sweep
- add tectonic --print and persist full engine chatter to output.log so
XDV→PDF (xdvipdfmx) errors are visible (MDPI: logo EPS inclusion failure)
- EPS fallback: swap X.eps refs for *-eps-converted-to.pdf when present and
materialize X.pdf for extension-less graphicx lookup; friendly error when
no converted PDF exists
- frontend: ReformatPanel zip upload/inspect/run flow; one-off
scripts/debug_compile.py (gitignored)
- tests: backend 169 passed (22 zip_safety + 34 compile_zip + P3a regression),
frontend edu vitest 43 passed
2026-10-13 18:42:04 +08:00
potaser
e036301e1a
feat(review): show format rules summary per target journal
...
- New summary row: shows the journal's rules (even if no diff applies)
- Fixes user confusion when switching journals yields same diff
- When all rules are null: 'no explicit format requirements'
- Vitest: add case for summary rendering
2026-10-13 11:22:52 +08:00
potaser
da84dff9bb
fix(review): persist uploaded .tex file in reformat panel
...
- File now stored in edu.js store (reformatFile)
- Switching target journal no longer requires re-upload
- Explicit reset button clears file
- Vitest: 4 cases
2026-10-13 11:20:33 +08:00
potaser
3a72d3a861
feat(review): P3b enable compile PDF in reformat panel
...
- ReformatPanel: compile tab state machine (idle/loading/success/error)
- Blob URL for PDF preview; backend path hidden
- First-compile 1-3min hint banner (dismissible)
- QUEUE_FULL 429 with fixed message
- Store: compileStatus/compileResult/compileError + actions
- prewarm_tectonic.sh: minimal .tex compilation to pre-cache TeX bundles
- Vitest: 6 new cases (guide / button / loading / success / error / queue-full)
2026-10-13 10:24:55 +08:00
potaser
c4dc344a31
feat(edu): presubmit UI + rebuttal assistant + tracker removal
...
- PresubmitPanel: rationale / conflict chips / file persistence
- RebuttalPanel: Phase 1 UI (3-column, 5-type form, stance pre-check)
- ReformatPanel / ReportPanel: hide internal fields (job id / version)
- EduSideNav: SVG icon, remove tracker menu item
- EduWorkspace: unmount tracker
- edu.js: rebuttal state + presubmitFile + SECTIONS (drop tracker)
2026-10-12 16:38:28 +08:00
potaser
d99d5ef74a
fix(review): replace presubmit recommendation quota with explainable rule engine
...
- Remove '3-8 major' quota that made accept/minor_revision unreachable
- Add recommend_engine.py: rule-based R0-R5 + tier-parameterized judgment
- Journal tier (1/2/3) from journals.json review_tier field
- LLM no longer outputs recommendation; engine is single source of truth
- Rationale exposed in API and rendered in PresubmitPanel
- Weak draft still major_revision (R1); strong draft now minor_revision (R5)
2026-10-12 09:55:07 +08:00
admin
19fa12eb39
merge main: 解决 .gitignore 冲突(合并部署文档忽略规则)
2026-10-11 13:47:47 +08:00
potaser
649e66f41d
feat(review): tectonic PDF compile API (P3a) + rename journals panel
...
- POST/GET /api/review/compile[/{id}[/pdf|/log]]: isolated workdir,
--untrusted, 60s timeout with process-group kill, single-slot queue
(429 QUEUE_FULL), 7-day retention sweep
- tools/install_tectonic.sh: pinned tectonic 0.17.0 (sha256) + README
- Rename menu/panel title to 学术期刊情报
- Compile UI stays a placeholder per product decision (P3 deferred)
2026-10-11 12:19:18 +08:00
potaser
42aeb8fa4c
feat(review): paper auto-reformat P1 (.tex rule engine + diff panel)
...
- Rule engine: font/margin/line-spacing/bib-style transformers,
tighten-only + structural guard + idempotency
- POST/GET /api/review/reformat with 200-envelope errors and job store
- ReformatPanel: journal dropdown (featured + directory search),
source/diff tabs; compile tab is a dev placeholder for now
- journals.json format_rules_default kept as generic fallback
2026-10-11 12:19:17 +08:00
admin
51532a30bc
fix(ui): 工作台「提取任务」tab 与离线提示改为「上传文献」
2026-10-10 18:27:06 +08:00
potaser
5a71e29cf7
feat(edu): complete 7-panel academic assistant + journals v4 dataset
...
Backend:
- review_service: presubmit / recommend / journals / journals/directory /
format-check / conferences endpoints
- journals.json 5 精选种子 + journal_directory 1056 条全量(v4 数据)
- v4 数据集:2025 JIF(2026 JCR 发布)+ 2025 中科院分区 + 1053 条官网 URL
- format_check 行距 bug 修复(基线 y + 物理过滤 + docx EMU)
BFF:
- review_proxy 反代(修复 httpx build_request await bug)
- REVIEW_ENABLED 开关(默认关闭,零痕部署)
Frontend:
- 教育科研工作台(7 面板 + 菜单 + 状态管理)
- TopBar 教育科研入口(v-show 覆盖层语义,RAG 会话不丢)
- 期刊情报:Tab 切换 / 搜索 / 筛选 / 分页 / 官网列 / 展开凭证
- 智能推荐 / AI预审稿 / 专业报告 / 投稿台账 / 排版规范 / 会议日历
2026-10-10 16:05:08 +08:00
admin
d37e0d9c3a
fix(paper): 确认大纲后即时 seed 进度卡并逐节刷新
...
- 后端写稿循环不再落空 paper_progress 块(重载后出现空卡),改落开始撰写文本
- 前端 confirmPaper 时用大纲节标题本地 seed 进度卡,2s 轮询 patch 逐节状态
- 当前节按 current_section_id 标 writing(…动画)
2026-10-08 17:10:50 +08:00
admin
c923419d2d
fix(paper): 大纲阶段修改意见路由回 sendPaper + 用原始 brief 重新生成大纲
2026-10-08 16:23:28 +08:00
admin
43a7c6c132
feat(paper): UI 优化(卡片文字颜色/去模式按钮) + 模板下拉加论文选项并接线渲染
2026-10-08 15:17:44 +08:00
admin
91f6a1c242
feat: 新增论文撰写功能 paper-writer(独立 MCP 服务 + BFF 大脑 + 前端三卡)
...
- paper_writer_service(8097):FastAPI + MCP streamable-http 单端点,9 工具
(propose_paper_outline/write_paper_section/get_paper_progress/search_refs/
revise_paper_section/revise_paper/get_paper/complete_paper/cancel_paper),
SQLite 三表(papers/paper_sections/citations,WAL),GB/T 7714 引用协议
- BFF:services/paper/{mcp_client,agent}.py(裸 JSON-RPC 客户端 + 规则状态机)、
routers/paper.py、schemas.py 4 个 Paper*Block + ArtifactBlock 加 paper_id/citation_count、
config.py 开关、main.py 条件注册、docgen.py 抽 insert_artifact 公共 helper
- 前端:intent.js paperIntent 纯函数、Composer docgen 分支 sub-route、sendPaper/轮询、
PaperBriefCard/PaperOutlineCard/PaperProgressCard、DocPane cite-chip
- deploy/paper_restart.sh + toggle_paper.sh;compile_sdk.sh 白名单追加 paper 文件
- tests/paper 26 条(工具逻辑 + MCP 协议 + BFF 状态机 + 块 schema + 前端 intent 单测)
2026-09-30 22:29:22 +08:00
admin
0282cfeeeb
feat(bioflow): 阶段进度条+滚动日志+点击定位全链;图片注入三修;QA启动就绪等待
...
- 生信进度:后端新增 stage_progress 事件帧+进度解析白名单(rnaseq_qc/sample_qc),
kernel 日志流式落盘(20行/1s flush+fsync),logs 分页端点(offset/limit/eof),
事件 seq 跨重启扫描续增(2026-09-17 断流修复);前端 FlowProgressCard 确定性/
不确定两态进度条+点击定位到生信任务 TAB,BioJobsPane DAG 行展开滚动日志区
(3s 轮询),log_tail 4000 截断,重跑 stage_started 清零进度
- 图片注入:figures 三源重构(标准DOI图库主路径/遗留体系兜底/PMC兜底),
[[FIG:]] 宽松归一化识别 PMC/PMID/DOI 三种形态,引文兜底扩展至
[PMCID:]/[DOI:] 且标记未满配额继续注入,注入预算 90s/10篇(175 实测校准),
PMC graphic 无 content-type 宽松正则,空结果不缓存(176 冷连接三连败修复)
- QA 启动自愈:start.sh 启动前等 Qdrant readyz(30min)+Neo4j TCP(10min);
backend_guard 标签校验改子集判定
- 样本配对:同 inode 去重优先真实文件,R1/R2 归一配对一对一认领
- gitignore 新增 *.bak-*/*.before-*/bioflow_service/bioflow.db
测试:bioflow_service pytest 358/358,前端 bioflow vitest 205/205
2026-09-24 16:48:52 +08:00
admin and Claude Fable 5
d0e6c76ec1
feat(ui): 无生信启动时隐藏扩展按钮
...
- 扩展按钮与生信跳转按钮互补显隐:生信可用时显示扩展、
不可用时隐藏扩展并显示生信跳转(PlantAI-dev 9017 入口)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-17 07:37:32 +08:00
admin and Claude Fable 5
16bde32020
feat(ui): 右上角生信跳转按钮+四按钮文字标签
...
- TopBar 新增「生信」按钮(仅生信模块不可用时显示):点击开新窗访问
PlantAI-dev(当前主机名:9017,公网/内网自适应)
- 扩展/生信/设置/主题四按钮配文字标签(图标+文字并排,宽度自适应)
- 新增 deploy/toggle_bioflow_176.sh <off|on>:一键开关 176 生信模块
(改 BIOFLOW_ENABLED + 重启 BFF;off 时 /api/bioflow/health 404,
前端生信 TAB 自动隐藏)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-16 20:44:23 +08:00
admin and Claude Fable 5
750e218541
fix(bioflow): 卡片防误操作+暂停立即生效+确认幂等
...
- 可调整参数卡「继续」成功后按钮隐藏,显示「参数已确认」
- 确认分析路径卡「确认创建任务」成功后按钮隐藏,显示「任务已创建」
- 后端 confirm_stage 幂等:已确认且 running/queued 的重复确认放行(不再 409)
- 暂停立即生效:docker run 加 --name,docker kill 终止执行容器,
running 阶段置 paused、任务即时暂停(kill 的 exit 137 不误判 failed)
- 340 后端用例 + 121 r3debug + 373 主套件全绿;已部署 176
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-16 18:01:24 +08:00
admin and Claude Fable 5
becf76ecd9
feat(bioflow): 分析路径规划中提示——planning 帧+前端思考中状态
...
- 后端 chat 流在规划开始前发 planning 帧(seq=-2,与 plan_ready 同机制)
- 前端收到 planning 帧立即创建 bioflow_path 块(status=running,
脉动圆点+「正在分析需求并规划分析路径…」),plan_ready 填入候选并关闭
- bioflow store 增加 planning/planningText 状态
- 339 后端用例 + 121 r3debug + 373 主套件全绿;已部署 176
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-16 16:15:17 +08:00
admin and Claude Fable 5
957f3cb062
feat(ui): 导航按钮迁移右上角+删除会话栏底部工具栏
...
- 会话/扩展/知识图谱/设置 4 按钮自侧栏迁移至 TopBar 右侧(与主题按钮并列)
- 按需求收敛为扩展/设置两按钮,与主题按钮右上角同行水平对齐
(.theme-toggle-anim 改 inline-flex + svg 脱离基线,消除图标下沉)
- SessionRail 全档位删除(桌面底部工具栏/折叠态图标轨/窄屏抽屉)
- 清理死接线:openKg 函数与 toggle-side/goto-kg 事件
- 同步删除 r3debug 的 SessionRail 测试用例
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-15 22:49:41 +08:00
admin and Claude Fable 5
d12071a4d7
feat(extension): 上传支持 zip/tar/目录三形态+结构自适应分类
...
- 前端零打包:归档文件(zip/tar/tar.gz/tgz)原样上传服务端解压;
目录拖入/选择器走 webkitRelativePath 多文件直传(filename=相对路径),
隐藏文件/__pycache__ 过滤 + 公共根剥离(参考 PlantAI-dev 主路径)
- 后端 _read_archive 魔数分派(zip/tar.gz/tar)+保留嵌套路径;
code_files 多文件字段;结构自适应分类(目录前缀→命令解析→扩展名,
未知归代码,纯数据 422 可读,纯脚本合法);store 嵌套落盘
- 存量 bug 修复:FormData 字段名 file→code_zip;golden File→JSON+test_file;
http size hint 兼容 code_zip 与多文件求和
- 测试:后端 334/334(新增 10 个变体用例),前端 122/373 全绿
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-15 10:34:52 +08:00
admin and Claude Fable 5
03e6ff508a
feat(extension-frontend): 扩展分析前端引导卡 + 事件分派(Dev-C)
...
按 EXTENSION_CONTRACT.md §4 事件帧契约实现用户自定义扩展分析前端:
- chat.js: applyExtensionFrame extension_* 全事件集分派 + patchExtension*
块更新器(与 patchBioflow* 同幂等模式)+ sendExtension 引导流
+ uploadExtensionFile/trialRunExtension/confirmExtensionRun 动作
+ retry 扩展消息路由;现有 bioflow 路径零改动
- api/bioflow.js: 契约 §6 扩展端点封装(CRUD/build/trial-run/repair/
publish/run/runs/events SSE)
- 8 个扩展卡组件(Upload/Build/Trial/Validate/Publish/Candidates/
Confirm/Run)+ AssistantMessage 渲染挂接 + extension_published 确认块
- extensions store(侧栏数据面)+ ExtensionsPane + SessionRail 扩展入口
- intent.js A 层创建意图词典(§5 与后端同表双跑)+ Composer 分流
- i18n/bioflow.js 扩展卡文案 + 8 base 镜像表
- 单测 33 例:事件→块映射幂等/sendExtension 流/store 动作/8 卡 mount 冒烟/
创建意图词典;vitest 全绿 122/122 + build 通过
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-14 13:43:20 +08:00
admin and Claude Fable 5
8d115f8f1c
fix(ui): SourceRow 徽标宽度级联修正(特异性提升)
...
上一提交的 .ft-ico width:auto 与 base.css 的 .ft-item .ft-ico
width:16px 特异性同为(0,2,0),bundle 中后者后发胜出,徽标仍被
裁成 16px。改 .source-row .ft-ico 提升特异性,生产实测徽标宽度
16px→86px,完整显示 paper_id 截断文本,与标题 8px gap 零重叠。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-12 18:38:07 +08:00
admin and Claude Fable 5
18e69046f1
fix(ui): 文献来源 SourceRow 徽标与标题重叠
...
r4 #27 把徽标从序号换成 paper_id(12 字符+…),但 ft-ico 仍是
文件树时代的固定 16px——13 个 mono 字符溢出与 ft-name 重叠。
改自适应宽度(width:auto 覆盖 base.css 全局规则,min 16px/
max 96px + ellipsis 截断),badgeTitle 属性保留完整值。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-12 18:32:51 +08:00
admin and Claude Fable 5
4b5b501463
fix(statusbar): loadSession 恢复时重建生信派生 pipeline 块
...
刷新/切会话后消息块来自持久化——派生块是瞬态镜像不落库,
恢复的消息没有它,阶段推进期间 4 点不亮。loadSession 的生信
任务事件订阅循环里补 syncBioflowDotBlock(m) 从持久化进度块
stages 重建,后续阶段事件经 patchBioflowEvent 链持续刷新。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-12 18:25:44 +08:00
admin and Claude Fable 5
36fc2a7250
fix(statusbar): 生信任务活跃期回退消息列表点亮 4 点
...
生产实测暴露缺口:生信对话的 chat/stream 在 plan_ready 后即关闭
(_finishCtx 清 streamCtx→currentMessage 为 null),而任务阶段恰在
流关闭后才真正运行——StatusBar 只读 currentMessage,阶段运行期
间 4 点仍不亮。这正是用户报的 bug 主场景。
- chat.js 新增 agentDotMessage getter:优先流式中 currentMessage;
流已收口时回退到消息列表里持有活跃生信任务(progress.jobId 且
jobStatus ∈ created/running/paused)的最后一条助手消息——其派生
pipeline 块正被任务事件订阅(connectJobEvents onEvent →
patchBioflowEvent → syncBioflowDotBlock)持续刷新。
- StatusBar.vue 数据源换 agentDotMessage;TopBar.vue runningPhaseOf
同换 + aggregate 在生信任务活跃期(busy=false 但有 running 相位)
点亮聚合点。
- 单测补生产实测场景:流已收口任务活跃→回退点亮;阶段推进随动;
任务终态正确收口空态。
验证:r3debug 89/89(新增回退用例)、主套件 373/373、dist 重建。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-12 18:22:03 +08:00
admin and Claude Fable 5
f74b27daa1
fix(statusbar): 生信对话 4 个 agent 点不随相位点亮
...
根因:StatusBar/TopBar 只读 chat.currentMessage 的 pipeline 块 steps,生信对话
(sendBioflow)从不创建 pipeline 块——相位推进只写在 bioflow_progress.stages,
4 个点永远空态。
修复:
- chat.js 生信消息派生 pipeline 块(derived:true):bioflowDotStepsFromStages
按「每 4 阶段一轮」把 stages 镜像为 4 相位 steps(running→running、
failed→error 单调保持、done/skipped→done);newBioflowSkeletonMessage 自带
派生块,patchBioflowEvent/patchBioflowSnapshot 每次推进后同步,error 分支
收口当前 running 相位;AssistantMessage 与 _persistableBlocks 跳过派生块
(不渲染、不落库,后端 Block union 不受影响)。
- 连带修复:web_search_started 相位 retrieval→evidence(sse_relay.py 语义
属证据补全环节,原映射会在联网检索时造成「证据→检索」倒流跳变);
labels.js 兜底表补两条与 BFF 对齐。
验证:r3debug 88/88(新增 bioflowDots 14 + statusBarDots 6,含真实时序
mount→流到达→相位推进→终态)、主套件 373/373、sse_relay 29/29、dist 构建。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-12 16:32:21 +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 and Claude 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
admin and Claude 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
admin and Claude 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
admin and Claude 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
admin and Claude Fable 5
485e844160
feat(bioflow): P2-P5 前端编排闭环——五卡片+两面板+意图分流+探活显隐(373 用例全绿,红线零改动)+P3 docgen 增量合入(bioflow_report 模板+fig:// 渲染,预览与 PDF 导出同源)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-06 06:43:25 +08:00
jerry and Claude Fable 5
4749f77544
fix(docgen): 两批手工测试修复——上传/预览/检索 + 护栏/导出/命名/编辑还原/二次预览
...
第一批:上传去限制+进度展示、模板HTML预览+按需导出、检索TAB实时更新
第二批:edit护栏移除、导出按钮纯化+file_name落库、编辑失焦还原、
二次预览白底根治(防竞态+渲染兜底)
模板体系:7套公文模板(templates/)+templating渲染器、websearch联网
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-05 15:49:54 +08:00
jerry and Claude Fable 5
5db3ead73e
feat(docgen): doc_writer 能力全链——vstore 独立服务 + BFF docgen 路由 + 前端文档工作台
...
- vstore 独立安装包(8094):解析/嵌入/加密 vault/faiss 检索,存储路径支持本地 file 与 http(s):// URL,启动握手校验,集群化预留(embed 独立模块)
- BFF docgen 路由:上传入库/generate/编辑/导出/下载/主库管理,意图护栏(与前端同词典),vstore 失败兜底,quota 507 与 TTL 惰性清理
- 前端:自然触发意图路由、拖拽上传 chips、能力徽标、右侧文档 TAB(WYSIWYG 编辑/prompt 修改/PDF+DOCX 导出下载)、右栏拖宽+手柄仿左栏
- 批量导入工具 docgen_import.py(并发 8、导入即加密+删源明文)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-03 21:13:37 +08:00
jerry and Claude Fable 5
aab24d2f85
feat(capabilities): 面板开关唯一入口——env 总闸改熔断语义(默认放行)
...
- QA pipeline/answer_composer/agentic_controller: env 检查从 =1 改 ==0
(默认放行;运维显式设 0 才禁用)
- SDK qa.py: capabilities(web_search/superpowers) 注入上游,面板开关直达 QA
- answer_composer: superpowers 改会话开关门控(capabilities.superpowers)
- UI: 去掉 gated_by 提示(开关即生效,不再误导)
- env: QA_V1_ENABLE_WEB_SEARCH/SUPERPOWERS 默认 1(熔断位)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-02 23:29:51 +08:00
jerry and Claude Fable 5
fbb6b43646
feat(ui): 设置改中央模态框(主窗口高斯模糊背景)
...
- SettingsPanel: Drawer 形态改为 Teleport 中央模态(420px 圆角卡片,
backdrop-filter blur(10px) 遮罩, 弹入/淡出过渡, Esc/点击遮罩关闭, 焦点圈定)
- AppShell: 去掉设置 Drawer 包裹, 组件自持模态层
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-02 22:48:05 +08:00
jerry and Claude Fable 5
5cb15b0fac
fix(ui): 设置面板打开时拉取清单 + Superpowers 进开关行
...
- SettingsPanel: onMounted 改 watch(open)——抽屉打开才 load(此前抽屉未开时
load 早已跑完,清单为空,四开关行也不渲染,「暂无插件」误导)
- visibleCaps 扩为四项(memory/web_search/humanize/superpowers)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-02 22:31:51 +08:00
jerry and Claude Fable 5
60a81083c7
fix(ui): 设置抽屉移出 drawersMode 模板——桌面档点齿轮无反应的根因
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-02 22:27:48 +08:00
jerry and Claude Fable 5
fac6b38998
fix(ui): 展开态横排图标居中
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-02 22:24:31 +08:00
jerry and Claude Fable 5
c8d09d0016
fix(ui): 展开态图标轨横向排布居底(折叠态保持纵向居中)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-02 22:21:51 +08:00
jerry and Claude Fable 5
c402407a1c
fix(ui): 左栏图标轨展开/折叠同元素沉底 + 折叠箭头移右边线垂直居中
...
- SessionRail: 图标轨恒显(展开态靠左 14px 边距,折叠态居中),margin-top:auto 沉底
——展开/折叠切换时图标 Y 位置一致
- SessionPanel: 移除 S4 文字「设置」按钮(图标轨已覆盖展开态入口)
- base.css: side-handle-btn 从左下角移到左栏右边线垂直居中(展开 left:260px,
折叠 left:64px,过渡动画),图标方向由 AppShell 状态切换(收起→右/展开→左)
- inner flex:1 明确高度链,图标轨在内容滚动时始终可见
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-02 21:58:55 +08:00
jerry and Claude Fable 5
cd7e98e7c7
feat(capabilities): S4 SDK+UI 能力端点+Humanizer+设置面板(含 S3 发布修复)
...
- sdk/services/capabilities.py: MANIFEST+DEFAULTS+sanitize+QA 注册表合并
- sdk/services/humanizer.py: 9 类中文 AI 痕迹规则(块级保护引用/表格/代码/图片)
- sdk/routers/capabilities.py: GET /api/capabilities + POST install 透传
- sdk/schemas.py+sessions.py: SessionMeta.capabilities + PATCH meta 白名单 merge
- sdk/routers/qa.py: humanize 会话开关注入 SSE;chat.js: body 加 session_id
- sse_relay.py: humanize_enabled 参数链(修 _pump_events 可见性编译错误)
- api.py(QA): /capabilities/registry loopback(BFF 合并)
- ui: settings store+SettingsPanel+AppShell 接线+SessionPanel 展开态设置入口+labels
- 测试: humanizer 8 用例+capabilities_svc 6 用例;SDK 146 全绿;UI vitest 172 全绿
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-02 16:50:54 +08:00
jerry and Claude Fable 5
f30e2a9102
feat(chat): 连续两张图片即并排,取消同比例限制
...
- 实测发现同论文连续图(g001/g002)比例差异达 4.5%/62.5%,比例门禁把真实连续对全部拆散
- 布局改为纯 DOM 结构:连续相邻即配对包 figure-row,奇数最后一张落单
- 移除图片尺寸读取与 load 等待,布局时机简化为 mounted/updated
- 测试更新:任意连续两张并排、3 张=1对+1单、空 p 兼容、隐藏失败图跳过
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-01 18:27:55 +08:00
jerry and Claude Fable 5
bf136304d7
feat(chat): 图片 50% 宽布局 + 连续同比例双图并排
...
- 新增 figureLayout.js:sameAspect(容差2%)/pairFigures(贪心配对)/layoutTextRoot(幂等)
- AssistantMessage:图片 load 后读 naturalWidth/Height 重排,单图 half 类,双图包 figure-row
- 相邻判定兼容 HTML 解析器把 figure 提出 p 后留下的空 p
- CSS 修 :deep()(原 scoped 规则从未命中 v-html),单图 50%、row 内各 calc(50% - 7px) + 14px 间距
- 新测试 16 例,全量前端 174 例全绿
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-09-01 17:47:37 +08:00
jerry and Claude Fable 5
0875bb036c
P0/M1: 四部分重构——frontend→ui、backend→sdk 改名 + 引用修复 + 骨架
...
- git mv 保留历史:ui/(Vue3+Vite)、sdk/(BFF 中间层)
- 路径语义修正:db_path/figures_cache 改相对 sdk/(BFF cwd),
历史库 sdk/backend/data 迁移至 sdk/data/(会话/图片缓存无损)
- 引用修复 ~15 处:config.py、deploy/*.sh、vitest/playwright 配置、
单测导入路径、docs、README、gitignore、.env.example
- 骨架:agent/{qa,methodology,legacy-rag,vendor}、knowledge/manifest.yaml、
tooling/{compile,kb,crypto,assemble,audit,tools,scripts} + README
- 门禁验证:sdk pytest 125 通过、ui vitest 158 通过、
生产 BFF 脚本重启四上游全绿 + 静态托管 + 会话库无损
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-31 12:56:47 +08:00