# 开发阶段与里程碑

## 阶段总览

```
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 全文管道             ├─ SQLite → 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 bit**：`confirmed`（pub_type 明确标注 RCT）vs `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.conf` — `default-src 'self'; ...` | ✅ 完成 |
| 速率限制修复 | `rate_limiter.py` — JWT 提取 + IP 限速区分 | ✅ 完成 |
| Stripe Webhook 测试模式 | `webhooks.py` — `settings.TESTING` 绕过签名验证 | ✅ 完成 |
| 刷新令牌轮换 | `auth.py` — `revoke_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 用 PG，CI 用 PG，prod 用 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. 删除 SQLite 兼容垫片 | `study_design` 改用 JSON path；`pub_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 Ed；plans 四档启用 | 步骤 11 | ✅ |

#### 脚本状态

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

#### 注意事项

- SQLAlchemy 2.0 的 `Uuid` 和 `JSON` 泛型类型已原生兼容 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 API（`search_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_ui` 和 `path` 重复检查，可安全重复执行 | 已完成 |
| 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](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](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](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-辅助科研未来方向](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 模板化 |
