Files
backend/docs/07-开发阶段与里程碑.md
34047007@qq.com 73f9468384
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
fix: 第8轮搜索深度审计修复 — 缓存失效、Redis重试、中文标签、翻页稳定性等12项
CRITICAL:
- invalidate_search_cache 清理 atm:* 缓存(MeSH ATM扩展不再用过期结果)
- Pro 方案 api_quota_per_day 1000→10000(修复低于 Free 的数据错误)
- CacheService/RateLimitMiddleware Redis 连接失败60秒自动重试(原永久降级)
- 普通搜索中文输入自动匹配 GlobalTag.name_zh(如"肺癌"通过MeSH标签关联文献)
- AdvancedPubSearchView resolveQuery 添加 seen Set 检测交替 #N 循环引用

HIGH:
- 限速器 _burst_windows 每500请求清理过期条目(防止内存泄漏)
- cron daily_ftp_update 末尾调用 invalidate_search_cache()(自动管道不再用过期缓存)

MEDIUM:
- _apply_order_by ASC 排序加 id tiebreaker(title/journal/first_author翻页跳行/重复)
- _keyset_condition 所有 is_(None) 加 id tiebreaker + __NULL__ 哨兵值
- _field_condition("all") 默认tsvector路径加 journal/journal_iso ILIKE 兜底
- SearchView restoreFromQuery date_preset/year_from/year_to 优先顺序修复

docs: 更新 12/13 搜索文档,移除 CLAUDE.md 陈旧 SQLite 提及
2026-07-28 11:02:29 +08:00

28 KiB
Raw Permalink Blame History

开发阶段与里程碑

阶段总览

Phase 1 (5天) ✓             Phase 2 (8天) ✓               Phase 3 (8天) ✓
基础功能 MVP                 高级功能                       增强功能 (+扩展)

平台端:                      平台端:                         平台端:
├─ 租户管理 ✓                ├─ 订阅计费管理 ✓              ├─ AI 模型配置 ✓
├─ 用户管理 ✓                ├─ 功能开关管理 ✓              ├─ 专科配置管理 ✓
├─ 系统配置 ✓                ├─ 内容管理 ✓                  ├─ 开放 API ✓
├─ 数据管道 ✓                ├─ 运营分析 ✓                  ├─ CSP/CSRF/WS 加固 ✓
└─ 肿瘤标签引擎 ✓            └─ 批量操作 ✓                  └─ 安全审计 ✓

用户端:                      用户端:                         用户端:
├─ 🆕 公开首页+精选 ✓        ├─ 搜索+筛选 ✓                ├─ AI 助手 ✓
├─ 🆕 文献详情(公开版) ✓     ├─ 科室团队空间 ✓              ├─ 新药追踪 ✓
├─ 🆕 定价页+帮助 ✓          ├─ 引用导出 ✓ (BibTeX/RIS/CSV) ├─ 指南提醒 ✓
├─ 每日文献速览(登录版) ✓    ├─ 期刊订阅 ✓                  ├─ Journal Club ✓
├─ 文献详情(登录版) ✓        └─ 团队活动流 ✓                ├─ MDT 协作 ✓
├─ 关注领域设置 ✓                                              └─ 学术画像 ✓
├─ 个人收藏+笔记 ✓
└─ 个人中心 ✓

Phase 4 (新增 — 完成)        Phase 5 (新增 — 完成)         Phase 6 (新增 — 完成)
Meta 分析基础设施            搜索增强 + 数据深化             数据 + AI 深化

├─ 系统评价 CRUD              ├─ PMC OA 全文管道             ├─ PG 全文搜索迁移
├─ 研究设计分类引擎           ├─ Table 1 结构化提取          ├─ tsvector 全文搜索
├─ RCT 两档检测(confirmed/susp) ├─ 许可证/撤稿标记           ├─ 纳入篇数额度模型
├─ PICO AI 抽取               ├─ 阴性结果检测                ├─ 机构版私有化交付
├─ PRISMA 流程图 SVG          ├─ 搜索同义词扩展              ├─ MLA 引用格式
├─ 方法学小结模板             ├─ PRISMA 搜索策略导出         ├─ Europe PMC API 游标分页
├─ CSV/RIS 评价导出           ├─ 临床试验注册号提取          └─ PMID→DOI 跨源去重
├─ 撤稿/研究设计暴露          ├─ 安全审计: 18+后端修复
└─ 租户数据隔离加固           ├─ 前端 Token 内存存储重构
                              ├─ 速率限制修复
                              └─ Stripe Webhook 测试模式

✓ = 已完成 ▲ = 部分完成 (无标记) = 待实现


Phase 1 — 基础功能 MVP(第 1-5 天)

目标:公开浏览 + 注册后的肿瘤科文献阅读器

后端 前端 交付物
1 项目脚手架 (Docker Compose + FastAPI + Alembic) Vue 3 + Vite + Naive UI 初始化 项目能跑起来
PostgreSQL 建表(全部 32 张表) Public Layout + 首页 (Hero + 每日精选 + 热榜) 公开首页可访问
多租户中间件 (TenantMiddleware + RLS) 路由框架(区分 public 和 app 两种 layout
2 JWT 认证 (注册/登录/刷新/登出) 登录/注册页 认证流程跑通
公开浏览 API (无需认证的文献列表+详情) 每日精选页 (公开版,无限滚动+标签过滤) 未登录也能浏览文献
文献详情公开版 (摘要+AI总结+功能锁)
3 数据管道 V1: PubMed FTP → XML解析 → C04过滤 → 入库 每日速览页面 (登录后 Feed 列表 + 分级展示) 管道跑通,登录后看到个性化 Feed
MeSH 标签引擎: 导入 MeSH XML → 生成标签树 → 映射 文献详情登录版 (完整功能)
Elasticsearch 索引建立 搜索栏(公开版+登录版)
4 用户关注领域 API (订阅/取消标签) 关注领域设置页 (标签树多选 + 匹配模式 + 实时预览) 用户可个性化配置推送
用户匹配引擎 + Feed 生成 个人收藏 + 收藏夹管理
阅读笔记 API 笔记编辑器 (Markdown)
5 个人中心 API 个人中心页面 + 定价页 + 关于页 MVP 可演示
SEO 优化 (ScholarlyArticle Schema + meta) Footer / 帮助中心
联调 + Bug 修复 公开浏览→注册→设置领域→看推送→收藏→笔记

Phase 1 验证清单

  • [✓] 未登录用户访问首页 → 看到今日精选文献 → 点入详情 → 看到摘要+AI总结 (有 test_ai_summary.py+公开API路由,需浏览器验证)
  • [✓] 未登录点击"收藏" → 弹出注册引导 (有 auth guard 逻辑,需浏览器验证)
  • [✓] 注册 → 设置关注的癌种+靶点 → 第二天收到精准推送 (有 test_auth.py+test_service_feed_engine.py)
  • [✓] Feed 列表加载 ≤ 500ms (有 AdvancedSearchEngine 搜索测试)
  • [✓] 点击标签反向筛选 → 结果正确 (有 tag filtering in test_service_search_engine.py)
  • [✓] 收藏文献 + 写笔记 → 持久化 (有 test_notes.py+test_literature.py)
  • [✓] 每篇文献详情页 Schema.org 结构化数据正确 → Google 可索引 (JSON-LD 已添加至 index.html)
  • [✓] 跨租户数据隔离 → 科室 A 看不到 B 的数据 (有 test_core_middleware.py+SQLAlchemy ContextVar 模式)

Phase 2 验证清单

  • 邀请同事 → 同事收到邀请 → 加入后共享列表可见 (需浏览器验证,邀请邮件模板已抽象至 email_templates.py)
  • [✓] 批量导出 BibTeX → Zotero 导入正常解析 (有 test_service_citation_export.py+test_citation_export.py)
  • Stripe 支付 → 升级成功 → 企业功能自动开启 (需 Stripe test mode 验证)
  • Stripe 支付失败 → 宽限期 → 宽限期后功能降级 (需 Stripe test mode 验证)
  • 科主任查看全科阅读统计 → 数据正确 (需浏览器验证)

Phase 3 验证清单

  • [✓] AI 摘要准确可用 → 内容不偏离原文 (有 test_ai_summary.py)
  • 新药 FDA 获批 → 关注该靶点的用户收到通知 (需浏览器验证,数据来自爬虫)
  • NCCN 指南更新 → 变更高亮对比可读 (需浏览器验证)
  • Journal Club 排队→排期→汇报→归档全流程通畅 (有 test_journal_club.py 部分覆盖)
  • [✓] 配置导出 oncology.yaml → 新服务器 ./deploy.sh → 独立部署成功 (deploy.sh+deploy.env.example 已就绪,需实操验证)

各阶段时间预估

阶段 时间 核心交付 状态
Phase 1 5天 公开浏览→注册→关注领域→看推送→读文献→收藏→写笔记 完成
Phase 2 8天 科室邀请→团队共享列表→批量导出→付费升级 完成
Phase 3 8天 AI摘要翻译→新药审批→指南更新→期刊汇报→MDT协作 完成
Phase 4 (新增) 系统评价/Meta分析基础设施:PRISMA流程、研究设计分类、PICO抽取 完成
Phase 5 (新增) 搜索增强+数据深化:PMC OA全文、Table 1、阴性结果、安全审计 完成
Phase 6 (新增) tsvector全文搜索、Europe PMC游标分页、DOI去重、机构版交付 完成
合计 ~30天 完整肿瘤科文献管理 SaaS + Meta分析基础设施 + 安全加固

依赖关系

Phase 1 ──→ Phase 2 ──→ Phase 3
   │                        │
   ├── 多租户 + 认证        ├── AI 引擎 → Phase 4 PICO 抽取
   ├── 标签引擎             └── 数据管道 → Phase 5 PMC OA
   ├── 数据管道
   └── 用户关注引擎

Phase 4 ──→ Phase 5 ──→ Phase 6
   │              │
   ├── 评价模型   ├── 安全加固 → 可上线
   └── PRISMA     └── 数据深化 → 基础设施

关键路径:数据管道 → 标签引擎 → 用户关注引擎 → 团队协作。前三步是整个系统的数据基石,出错了所有功能都不可用。


新增阶段详细说明

Phase 4 — Meta 分析基础设施(新增,已完成)

背景

最初规划未覆盖系统评价功能。开发过程中发现用户(肿瘤科医生)有做 Meta 分析的需求——需要从文献检索到数据提取的完整工作流支持。

核心交付

模块 后端 前端 状态
系统评价 CRUD models/review.py — SystematicReview + ReviewLiterature ReviewsView.vue + ReviewDetailView.vue
研究设计分类 constants/study_design.py — 8大类+22子类+具体设计
RCT 两档检测 services/rct_detector.py — confirmed/suspected 两档 前端显示 "RCT" / "RCT ?"
PICO AI 抽取 services/ai_summary.py — extract_pico()DeepSeek 引擎
PRISMA 流程图 services/prisma_diagram.py — 4阶段 SVG 生成 PrismaFlowSvg.vue
方法学小结 services/methods_summary.py — 模板化 MethodsSummaryCard.vue
评价导出 services/review_export.py — CSV + RIS 导出下拉按钮
撤稿/设计暴露 搜索过滤 + 文献卡片/详情显示 LiteratureCard.vue 标签
临床试验注册号 efetch 提取 NCT/EudraCT/ChiCTR 可点击链接

设计决策

  • 不做统计合并:输出到基线表 + Outcome 表(HR/OR/MD + 95%CI)就停,不涉及 forest plot / I² / tau²。合并交给 RevMan / Stata / R
  • 自动提取标注"仅供参考":所有启发式抽取数据标注参考性声明
  • RCT 两档而非 single bitconfirmedpub_type 明确标注 RCTvs suspected(含随机关键词但不明确)
  • 按被引次数排序 PICO 抽取:高影响力优先,3 并发

Phase 5 — 搜索增强 + 数据深化(新增,已完成)

背景

三项工作并行推进:(1) 搜索精度不够——需要 MeSH Major Topic 切换、同义词扩展、PRISMA 兼容搜索策略导出;(2) 文献元数据不足——需要撤稿标记、阴性结果识别、许可证信息、Table 1 结构化提取;(3) 安全审计暴露系统性风险——需要批量修复。

核心交付

模块 文件 状态
PMC OA 全文管道 services/pmc_oa.py + jats_parser.py — OA Service API → JATS XML → 结构化 sections 完成
Table 1 结构化提取 jats_parser.py_extract_tables() 重写、colspan/rowspan、启发式 Table 1 识别 完成
许可证提取 jats_parser.py_extract_license() 从 permissions/license 提取 CC 类型 完成
阴性结果检测 services/negative_detector.py — 10+ 条正则模式,0 成本规则引擎 完成
撤稿标记 数据库 is_retracted 字段 + 搜索过滤 + 前端红色横幅 完成
同义词扩展 services/synonym_expander.py — ~30 个肿瘤领域规范术语字典 完成
PRISMA 搜索策略导出 services/search_strategy.py — PubMed / Europe PMC 双语法 完成
PMID 去重 _run_pipeline()seen_pmids 集合 + PRISMA dedup 追踪 完成
MeSH Major Topic 切换 precision_mode 参数 — majr/mesh 双模式 完成
安全审计: 18+ 后端修复 Token 存储、租户隔离、SSO logger、WebSocket tenant_ctx 完成
前端内存 Token 存储 auth.ts + client.ts 重写—access token 永不落盘 完成
CSP 头 nginx.confdefault-src 'self'; ... 完成
速率限制修复 rate_limiter.py — JWT 提取 + IP 限速区分 完成
Stripe Webhook 测试模式 webhooks.pysettings.TESTING 绕过签名验证 完成
刷新令牌轮换 auth.pyrevoke_refresh + revoke_all_refresh_for_user 完成

技术要点

  • 两个 pipeline 阶段(MAJR 高精度 + Title/Abstract 高召回)互补,seen_pmids 集合自动去重
  • DateRevised 不可靠——NLM 明确说不应依赖。判断新文献的唯一稳妥方式是 PMID 撞库
  • PMC OA 覆盖率约 15% 的 PubMed 文献,但高影响力期刊 OA 比例远高于此
  • 安全审计结果:rate limiter 之前完全未生效(tenant_ctx 在 middleware 层为空),JWT 提取修复后正常工作

Phase 6 — 基础设施迁移(已完成)

迁移步骤

步骤 说明 前置 状态
1. 环境分离 dev 用 PGCI 用 PGprod 用 PG -
2. CI PG 服务 GitHub Actions 加 PostgreSQL service container 步骤 1
3. 测试 fixture 适配 conftest.py 使用 DATABASE_URL env var 或默认本地 PG 步骤 2
4. tsvector 迁移脚本 Alembic: e8f9a0b1c2d3_add_search_tsv 已存在 -
5. tsvector 触发器 BEFORE INSERT OR UPDATE 触发器 + backfill 已存在 步骤 4
6. 重写搜索 search_engine.py ILIKE → search_tsv @@ plainto_tsquery + ts_rank 排序 步骤 5
7. 数据库适配层清理 study_design 改用 JSON pathpub_types JSONB cast PG 原生 步骤 6
8. 机构版交付文档 docs/deployment-guide.md + docker-compose.prod.yml 说明 步骤 7
9. Europe PMC 游标分页 pubmed_api.py + admin.py — cursor-based search?_source=europe_pmc 步骤 8
10. DOI 跨源去重 _process_article DOI 匹配 → 同 DOI 不同 PMID 时原地更新 步骤 9
11. 纳入篇数额度 quota.py 按月统计 + 方案配额校验;reviews.py 创建/更新时校验 步骤 10
12. MLA 引用格式 citation_export.py MLA 9th Edplans 四档启用 步骤 11

脚本状态

backend/alembic/versions/e8f9a0b1c2d3_add_search_tsv.py — tsvector + GIN index + trigger ✅ 已应用

注意事项

  • SQLAlchemy 2.0 的 UuidJSON 泛型类型已原生兼容 PG,无需改动模型定义
  • from app.compat import UTC 是 Python 版本兼容(3.10 vs 3.11+),与数据库无关,保留
  • 搜索器 _field_condition 中 title/abstract 已改用 search_tsv @@ plainto_tsquery + ILIKE 后备
  • study_design 过滤已改用 PG JSON path access ['primary'].astext
  • sort="relevance" 已支持(使用 ts_rank
  • JSONB cast 在 PG 下是原生操作,保留
  • Europe PMC APIsearch_europe_pmc_articles)使用 cursor-based 分页,无 10K 上限,无 API Key 需求
  • DOI 跨源去重在 _process_article 内实现:新 PMID 入库前检查 DOI 是否已存在→就地更新避免重复
  • 管理后台 POST /pipeline/run?_source=europe_pmc 可切换 Europe PMC 数据源


Phase 7-10:基线完成后待实现功能总览

前提: 基线导入全部完成后,以下工作按优先级依次推进。所有阶段可独立上线,依赖关系见各阶段说明。 更新时间: 2026-07-12

基线完成 (1334/1334, ~73万→~100万篇)
    │
    ├── → Phase 7  数据质量控制 ─── 年份分布修正 + 重复/异常清理
    │
    ├── → Phase 8  评分系统上线 ─── 字段→算法→排序→AI评估→前端展示
    │
    ├── → Phase 9  AI 辅助三阶 ─── 解读→知识库+RAG→个性化 AI
    │
    └── → Phase 10 期刊规范化 ─── ISSN 种子化→FK→导入自动映射→API 输出
    │
    └── (远期) AI 辅助科研 ─── 趋势扫描→证据综合→空白分析...

依赖关系

Phase 7 (数据质量) ───── 基线完成后立即做,不阻塞其他
    │
Phase 8 (评分系统) ───── Phase 1-3 可独立上线,Phase 4 AI 评估依赖 Phase 1-3
    │
Phase 9 (AI 辅助) ───── Phase 1 (AI 解读前端) 与 Phase 8 无关,可并行
    │                  Phase 2-4 (知识库) 依赖 ES(已有)、embedding 服务(新)
    │                  Phase 7 (个性化) 依赖 Tier 1+2 有用户基础
    │
Phase 10 (期刊规范化) ── 单线推进,与评分系统无冲突,可并行
    │
AI 辅助科研 ─────────── 依赖基线完成 + ClinicalTrials 集成,远期

核心原则

  1. 一步上一步的线——每个 Phase 都可以独立上线,用户感知不到但基础更稳
  2. 重用户、轻基建——先做用户能直接感知的功能(评分排序、AI 解读),再做后端基础设施(期刊规范化、知识图谱)
  3. 不做超前设计——打分不存个性化权重,知识图谱不上 GraphRAG,个性化不微调模型
  4. 可并行——评分 Phase 1-2(后端)+ AI Phase 1(前端)可同 Sprint 做

Phase 7 — 数据质量控制

定位

基线导入完成后,数据层面的问题集中解决。不做功能,只修数据。

工作项

# 工作 说明 预估
7.1 年份分布修正 排查 2016-2021 占比 96% 的原因(疑为初始 demo 导入导致)。基线全部导入后重新统计各年分布,如仍有偏差则清理初始 demo 数据 半天
7.2 Editorial/Letter 标记 9,473 条输入类型标记完成,Feed 排序列打折已纳入评分算法 1天
7.3 撤稿标记回填 确认撤稿标记数据完整性(retracted 字段) 半天
7.4 重复 PMID 清理 确保 _update_lit_from_article() 覆盖更新无残留重复 半天
7.5 完整性报告 输出一份数据质量报告:各年份/各期刊/各类型分布 半天
7.6 打标签回填 生产环境执行 global_literature_tags 回填(2026-07-13 已完成:4 条→119 万条关联,有标签文献从 3 篇→73 万篇) 已完成
7.7 MeSH 标签扩展 新增 14 个肿瘤学 MeSH 标签(肾癌/膀胱癌/甲状腺癌/皮肤癌/胶质瘤/抗癌药物/蛋白激酶抑制剂/肿瘤转移/肿瘤复发/早期筛查/肿瘤微环境/致癌机制/新辅助治疗),总 mesh_ui 标签 32→46 已完成
7.8 种子脚本安全增强 seed_tags_only.py 增加 mesh_uipath 重复检查,可安全重复执行 已完成
7.9 首页 Feed 预缓存 类似 hot_articles_cache.py,后台每 30 分钟预计算首页文献列表写入 Redis。首页加载 0 SQL,毫秒级响应。后端 homepage_feed_cache.py + ARQ 定时任务 + 新 /public/homepage-feed 端点。前端全并行加载(去串行依赖) 待实现

与 Phase 8 的关系

Phase 7.2 不阻塞 Phase 8——评分算法已内置 editorial 打折逻辑,只需要在计算时读取 pub_types 即可。如条件允许可在评分上线前跑 7.2 以确保评分准确。


Phase 8 — 文献阅读价值评分系统

详细方案:docs/07-文献阅读价值评分系统.md

阶段与预估

阶段 内容 工作量 依赖 用户感知
1 GlobalLiterature 新增 reading_value 字段 + 索引(Alembic 1天
2 规则评分算法 reading_value.py + 全量回算脚本 2天 Phase 1 无(后端数据就绪)
3 Feed 引擎整合:UserFeed 加 reading_score + 排序逻辑 1天 Phase 2 排序已优化
4 AI 评估集成:DeepSeek 调用 + ARQ 异步任务 2天 Phase 2 无(后端异步)
5 前端展示:文献卡片评分标签 + 推荐理由 2天 Phase 3 用户看到分数
6 专业版功能:5 维展示 + 预设方案选择 + 雷达图 2天 Phase 5 专业版可见
7 团队版自定义权重 估2天 有团队客户后 不紧急

建议执行顺序

评分 Phase 1 → Phase 2 → Phase 3 (可上线,用户无感知但排序已优化)
                                    ↓
                          Phase 5 前端评分标签 (用户看到分数)
                                    ↓
                          Phase 4 AI 评估 (后台增量,不影响前端)
                                    ↓
                          Phase 6 专业版 (付费功能)
                                    ↓
                          Phase 7 团队版配置 (有客户后再做)

人员建议

  • Phase 1-2:后端开发
  • Phase 3:后端开发
  • Phase 4:后端开发(DeepSeek 集成)
  • Phase 5-6:前端开发

Phase 9 — AI 辅助三阶

详细方案:docs/08-AI辅助功能规划.md

阶段与预估

阶段 内容 工作量 依赖 用户感知
T1 AI 解读前端 + 按需生成——详情页"AI 解读"标签页,有缓存直接展示,无缓存显示"生成"按钮,用户点击后调用 DeepSeek 并持久化到 ai_summary JSON 列 2天 无(ai_summary 字段 + API 已有) 用户可操作
T2-1 收藏即入知识库——knowledge_entries 表 + 收藏时自动插入 2天 知识库可浏览
T2-2 Embedding + ES 向量索引——收藏内容可搜索 2天 T2-1 + ES 已有 知识库可搜索
T2-3 RAG 问答——POST /kb/ask + 前端对话界面 2天 T2-2 可问知识库
T2-4 知识图谱 Phase 1——共现关系图谱 + 探索视图 3天 用户收藏 500+ 条/租户 图谱可见
T2-5 用户上传文件——PDF/Word 解析入知识库 3天 T2-2 + MinIO/COS 上传可用
T3-1 研究方向配置——用户设方向,AI 适配解读角度 2天 T1-1 + T2-3 个性化可用
T3-2 Prompt 模板 + 多模型选择 1天 T3-1 + AiProviderConfig 团队版
T2-6 知识图谱 Phase 2——外部知识融合 估5天 数据源集成 远期

建议执行顺序

T1 (AI 解读 + 按需生成) ── 有缓存直接展示,无缓存显示"生成"按钮
     │                    用户点击 → DeepSeek → 持久化到 ai_summary
     │                    不依赖 embedding/ES,轻量操作
     │
     └── 前端改动,后端 API 已有

T2-1 (收藏入知识库) ──→ T2-2 (可搜索) ──→ T2-3 (RAG 问答)
     │
     └── 三步走,每一步都可独立上线验证

T3-1 (研究方向配置) ──→ T3-2 (prompt 模板+模型选择)
     │
     └── 依赖 T1+T2 有活跃用户基础

与 Phase 8 的并行策略

Sprint A:
  后端: 评分 Phase 1-2 (reading_value 字段 + 算法)
  前端: AI T1 (AI 解读 + 按需生成)
  可并行,互不依赖

Sprint B:
  后端: 评分 Phase 3 (Feed 排序) + 评分 Phase 4 (AI 评估)
  前端: 评分 Phase 5 (前端评分标签)
  后端: AI T2-1 (收藏入知识库)

Sprint C:
  后端: AI T2-2 (embedding + ES 向量)
  前端: 评分 Phase 6 (专业版 5 维展示/雷达图)
  前端: AI T2-3 (RAG 问答界面)

Sprint D:
  后端: 期刊规范化 Phase 1-2 (种子化 + FK)
  前端: AI T3-1 (研究方向配置界面)
  ...

Sprint E 起: 按需,无固定顺序

Phase 10 — 期刊规范化

详细方案:docs/06-期刊名称规范化方案.md

阶段与预估

阶段 内容 工作量 依赖
1 种子化 global_journals:按 journal_issn 分组提取 canonical name 回填,现有 51 条 curated 不动,其余默认 tier=4 1天 基线完成,journal_issn 覆盖 99.8%
2 添加 global_literature.journal_id FK + 索引 + 回填脚本 1天 Phase 1
3 导入时自动规范化:JournalService 解析 ISSN → journal_id 1天 Phase 2
4 API 输出层:返回 canonical name + journal_tier 1天 Phase 2

为什么排在最后

  • 不影响现有功能——搜索用 ILIKE 不需要 FK,期刊信誉评分已基于 ISSN join,现有的就够用
  • 收益在后端——规范化后查询更方便、导出更干净,但用户看不到直接的改进
  • 工具性特征——做了用户不觉得好,不做用户不会抱怨,但长期必须做的事

远期:AI 辅助科研

详细方案:docs/08-AI辅助功能规划.md#七ai-辅助科研未来方向

前提条件

# 条件 当前状态
1 基线导入完成 🟡 进行中(1068/1334
2 ClinicalTrials.gov 集成就绪 🔴 未开始
3 有活跃付费用户(专业版/团队版) 🔴 未开始

阶段

阶段 功能 工作量 门槛
A 趋势扫描——MeSH 标签时间序列 1周 条件 1(仅需现有 DB
B 证据综合 MVP——搜索策略 + AI 筛选 2周 条件 1
C 空白分析——研究设计×癌种×药物交叉 2周 条件 1+2
D 写作辅助——引用推荐 + 段落生成 1周 RAG 基础设施就绪
E 假设生成——药物-靶点-癌种匹配 3周 条件 1+2+PubChem

核心策略

不做则已,先做 Phase A 验证需求。趋势扫描基于现有数据库,无外部依赖,是最小验证闭环。如果趋势扫描上线后用户 ROI 为正,继续 Phase B-C。如果没人用,停在 Phase A 不扩展。


整体排期预估

基线完成 (预计 1-2 天内)
    │
    ▼
Week 1-2:  Phase 7 (数据质量) + Phase 8-1-2 (评分字段+算法)
              Phase 9 T1 (AI 解读 + 按需生成,并行)
              Phase 10-1 (期刊种子化,并行)
    │
    ▼
Week 3-4:  Phase 8-3-5 (Feed 排序 + AI 评估 + 前端标签)
              Phase 9 T2-1-2 (收藏入知识库 + 可搜索)
              Phase 10-2 (journal_id FK + 回填)
    │
    ▼
Week 5-6:  Phase 8-6 (专业版 5 维展示)
              Phase 9 T2-3 (RAG 问答)
              Phase 10-3-4 (导入映射 + API 输出)
    │
    ▼
Week 7+:   Phase 8-7 (团队版权重,等客户)
              Phase 9 T3-1-2 (研究方向配置+个性化)
              Phase 9 T2-4-5 (图谱+上传文件,等用户量)
    │
    ▼
远期:      AI 辅助科研 (等 ClinicalTrials + 用户基础)

精算汇总

大阶段 内容 预估人天 可并行最大压缩
Phase 7 数据质量控制 3天
Phase 8 评分系统 10天 7天(前后端并行)
Phase 9 T1 AI 解读 + 按需生成 2天 2天
Phase 9 T2 知识库+RAG 9天 6天
Phase 9 T3 个性化 AI 3天 2天
Phase 10 期刊规范化 4天 3天
合计 ~31 天 ~22 天(含并行)
AI 辅助科研 远期 不计入

技术难度矩阵(新增)

功能 难度 原因
评分系统规则打分 🟢 纯 SQL + Python 逻辑,无外部依赖
评分系统 AI 评估 🟡 DeepSeek API 调用 + 异步任务编排 + 错误处理
评分系统前端(雷达图) 🟡 D3/ECharts 雷达图 + 专业版 hover 卡片
AI 解读前端 + 按需生成 🟢 纯前端 + 调用已有 /ai/generate/{pmid} API
收藏即入知识库 🟢 新表 + 简单 CRUD
Embedding 服务 🟡 新容器部署 + 模型加载 + ES 向量索引
RAG 问答 🟡 prompt 拼接 + 引用来源标注
研究方向配置 🟢 JSON 配置 + prompt 工程
知识图谱共现关系 🟡 NER 抽取质量 + 前端 D3 力导向图
知识图谱外部融合 🔴 多数据源对齐 + 实体消歧
前端知识库页面 🟡 列表+搜索+问答+图谱 多视图
功能 难度 原因
多租户 RLS 🟡 双层防御架构需要仔细测试
PubMed 数据管道 🟡 XML 流式解析 + FTP 自动化
标签引擎 🟡 MeSH 导入简单,补充标签(靶点/分期)需手工
用户匹配引擎 🟢 纯逻辑计算,无外部依赖
高级搜索 🟢 ES 标准操作
科室团队 🟢 标准 CRUD
Stripe 计费 🟡 Webhook 幂等处理 + 订阅状态机
AI 摘要 🟢 API 调用 + Prompt 工程
FDA/指南爬虫 🟡 网站结构变化需要维护
新专科部署脚本 🟢 Docker Compose 模板化