OncoLit: a multi-tenant oncology literature search, feed, and collaboration platform. Built with FastAPI + Vue 3 + PostgreSQL. Includes PubMed pipeline, drug approvals, AI summaries, and systematic review tools.
387 lines
26 KiB
Markdown
387 lines
26 KiB
Markdown
# 产品功能规划
|
||
|
||
> 最后更新:2026-07-12 · 详见 [开发阶段与里程碑](07-开发阶段与里程碑.md) | [AI 辅助功能规划](08-AI辅助功能规划.md)
|
||
|
||
## 产品定位
|
||
|
||
> *"早上查房前 5 分钟,看完全世界今天最重要的肿瘤学进展。"*
|
||
|
||
肿瘤科文献管理 SaaS 平台。覆盖 PubMed 每日全量肿瘤学文献,自动打标、精准推送,为三甲医院肿瘤科/MDT 团队提供从文献发现到团队协作的一站式解决方案。
|
||
|
||
---
|
||
|
||
## 开发里程碑 v0.5(当前)
|
||
|
||
### 状态图例
|
||
|
||
| 标记 | 含义 |
|
||
|------|------|
|
||
| ✅ | **已实现**(生产可用) |
|
||
| 🟡 | **骨架完成**(可运行但缺深度功能) |
|
||
| 🔴 | **未实现**(无 UI / 无后端) |
|
||
| 🚧 | **建设中**(正在开发) |
|
||
|
||
### 当前验证指标(2026-07-08)
|
||
|
||
- **前端类型检查**: `vue-tsc --noEmit` ✅ 零错误
|
||
- **生产构建**: `vite build` ✅ 成功
|
||
- **自动化测试**: `pytest` ✅ 867 passed / 2 pre-existing failures(payment FK — 已知预存问题)
|
||
- **代码质量**: 零 unused import / 零 TS error
|
||
|
||
### 实施阶段记录
|
||
|
||
| 阶段 | 范围 | 关键交付 | 时间 |
|
||
|------|------|----------|------|
|
||
| Phase 1-7 | 产品基础建设 | 多租户、认证、PubMed 管道、MeSH 标签、Feed 引擎、搜索、收藏、笔记、AI 摘要、导出 | 此前 |
|
||
| Phase 8 | Journal Club + MDT 协作 | 文献队列、AI 汇报提纲、MDT 病例卡/证据/决策、文献包推荐 | 此前 |
|
||
| Phase 9 | 用户核心体验增强 | 已读/未读样式、GuidelineCompare LCS diff 高亮、MLA 导出 + 一键复制引用 + 方案感知过滤 | 此前 |
|
||
| Phase 10 ✅ | 搜索体验 + 收藏管理 + AI 配置 | 中文 MeSH 自动匹配、搜索排序下拉、个人文件夹 CRUD + LibraryView 侧栏、AiProviderConfig 模型/API/UI、ai_summary DB 配置加载 | 2026-07-08 |
|
||
| Phase 11 ✅ | 4 层用户体系 | L2 微信扫码登录 + L4 Free/Pro/Team 3 档(Enterprise 并入 Team)+ L3 邮箱/手机验证码验证 | 2026-07-08 |
|
||
| Phase 12 ✅ | 文献数据质量工程 | SMTP 邮件、OA 全文回填、Dashboard 数据质量面板、MeSH 标签覆盖提升(47%→48%)、PICO 抽取(497/500)、管道定时任务落地、生产部署文档完善 | 2026-07-10 |
|
||
| Phase 13 🔲 | ES 搜索迁移 | Elasticsearch 客户端 + search_service.py + 管道自动同步 + API 切换(es_enabled fallback),文献 200-300 万时启动 | 待定 |
|
||
|
||
---
|
||
|
||
## 系统架构总览
|
||
|
||
```
|
||
┌───────────────────────────────────────────────────────────┐
|
||
│ 平台端 (Super Admin) │
|
||
│ 租户管理 · 用户管理 · 订阅计费 · 数据管道 · 标签引擎配置 │
|
||
├───────────────────────────────────────────────────────────┤
|
||
│ 用户端 (Doctor) │
|
||
│ 每日速览 · 文献检索 · 个人收藏 · 笔记 · 导出 · 科室团队 │
|
||
├───────────────────────────────────────────────────────────┤
|
||
│ 科室配置层 (config/specialties/) │
|
||
│ 肿瘤科: MeSH过滤规则 · 标签树 · 期刊列表 · UI主题 │
|
||
├───────────────────────────────────────────────────────────┤
|
||
│ 数据管道层 (Pipeline) │
|
||
│ PubMed FTP → XML解析 → 配置驱动过滤 → MeSH映射 → 标签引擎 │
|
||
├───────────────────────────────────────────────────────────┤
|
||
│ 基础设施层 (Infra) │
|
||
│ 多租户RLS · JWT认证 · RBAC · Stripe计费 · ES搜索 · S3/OSS │
|
||
└───────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 一、平台端功能规划
|
||
|
||
### Phase 1 — 基础功能
|
||
|
||
| 状态 | 模块 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|------|----------|
|
||
| ✅ | **租户管理** | 租户注册 | 医院/科室自主注册,填写机构名称、科室名称 | `admin.py:create_tenant` |
|
||
| ✅ | | 租户审核 | 平台管理员审核注册申请 | `TenantsView.vue` |
|
||
| ✅ | | 租户信息 | 名称、logo、科室名称、成员数 | `admin.py:GET /tenants` |
|
||
| ✅ | | 租户状态 | 启用/停用/冻结 | `TenantsView.vue` 操作列 |
|
||
| ✅ | **用户管理** | 用户注册 | 邮箱+密码注册,或邀请链接注册 | `auth.py` |
|
||
| ✅ | | 用户登录 | JWT 认证,支持邮箱/密码 + 微信扫码登录 | `auth.py` + `wechat_auth.py` |
|
||
| ✅ | | 微信登录 | 标准 OAuth 回调流程,dev mode mock,合成邮箱 `wc_*@wechat.user` | `wechat_oauth.py` + `WeChatLoginCallback.vue` |
|
||
| ✅ | | 角色分配 | owner/admin/editor/viewer | `teams.py` |
|
||
| ✅ | | 个人信息 | 头像、姓名、职称、亚专业方向、手机号 | `SettingsView.vue` |
|
||
| ✅ | | 密码管理 | 修改密码、忘记密码重置 | `auth.py:reset_password` |
|
||
| ✅ | | 登录日志 | 登录时间、IP、设备 | `admin.py:GET /auth/logs` |
|
||
| 🟡 | **系统配置** | 基础参数 | 系统名称、默认语言、时区 | `ConfigView.vue` 可编辑 JWT,其余只读 |
|
||
| 🔴 | | 邮件配置 | SMTP 服务器、发件人、模板 | 未实现(测试用空 SMTP_HOST) |
|
||
| 🔴 | | 文件存储 | S3/MinIO/本地存储切换 | 未实现(无文件上传功能) |
|
||
| 🔴 | | 系统公告 | 维护通知、版本更新公告 | 未实现 |
|
||
| ✅ | **数据管道** | 采集状态 | 查看基线导入进度、每日增量状态 | `PipelineView.vue` 运行历史表格 |
|
||
| ✅ | | 采集日志 | 每日拉取量、解析成功/失败数、耗时 | `PipelineRun` 模型记录 |
|
||
| ✅ | | 手动触发 | 手动触发全量/精搜/宽搜/引用刷新 | `PipelineView.vue` 操作卡片 + `/admin/pipeline/run` |
|
||
| 🔴 | | 异常告警 | 采集失败/延迟自动通知管理员 | 未实现(ARQ 日志无告警) |
|
||
| ✅ | | 数据统计 | 总文献量、日均新增、标签分布 | `AnalyticsView.vue` + `/admin/tags/distribution` |
|
||
| ✅ | **热搜缓存** | 首页热搜侧栏 | 近 1 年高被引文献 TOP30,每 30 分钟定时缓存刷新,支持分页 + "换一批" | `hot_articles_cache.py` + `public.py` + `worker.py` |
|
||
| ✅ | **标签引擎** | MeSH 标签树 | 从 MeSH C04 导入完整的肿瘤标签层级 | `tag_loader.py` + `seed_data.py` |
|
||
| 🟡 | | 标签管理 | 可视化编辑标签树 | `TagsView.vue` 列表,无树状编辑 UI |
|
||
| ✅ | | 标签别名 | 英文名 ↔ 中文名映射 | `GlobalTag` 模型内建 |
|
||
| ✅ | | 标签映射规则 | MeSH descriptor → 标签节点 | `pubmed_api.py` 双向映射 |
|
||
| ✅ | | 标签统计 | 每个标签下的文献数量 | `TagsView.vue` 统计列 |
|
||
|
||
### Phase 2 — 高级功能
|
||
|
||
| 状态 | 模块 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|------|----------|
|
||
| 🟡 | **订阅计费** | 方案管理 | 定义 Free/Pro/Team 三档(Enterprise 已移除,功能并入 Team) | `/subscriptions/plans`, `test_payment*` FK 问题待修 |
|
||
| 🔴 | | Stripe 产品同步 | 后台配置 Stripe Product/Price ID | 未实现(无 Stripe 集成) |
|
||
| 🟡 | | 订阅记录 | 查看每个租户的订阅状态 | `TenantsView.vue` 显示 |
|
||
| 🔴 | | 升级/降级 | 手动处理升级降级、退款审批 | 未实现 |
|
||
| 🔴 | | 发票管理 | 查看/下载发票 | 未实现 |
|
||
| 🔴 | | 优惠券 | 创建折扣码 | 未实现 |
|
||
| 🔴 | | 试用管理 | 配置试用期天数、到期提醒 | 未实现 |
|
||
| 🟡 | **功能开关** | 按方案差异化 | Free 无团队功能、Team 有协作 | `core/plans.py` 功能矩阵 |
|
||
| 🔴 | | 按租户覆盖 | 为特定租户单独开关功能 | 未实现 |
|
||
| 🔴 | | 灰度发布 | 新功能先对 10% 租户开放 | 未实现 |
|
||
| 🔴 | **内容管理** | 系统公告 | 富文本编辑、定时发布 | 未实现 |
|
||
| 🔴 | | 推送通知模板 | 每日文献推送模板 | 未实现 |
|
||
| 🟡 | | 帮助文档 | 使用指南、FAQ | `HelpView.vue` + `AboutView.vue` |
|
||
| ✅ | | 用户反馈 | 反馈列表、状态跟踪 | `FeedbackView.vue` 处理/删除 |
|
||
| ✅ | **运营分析** | 平台总览 | 总租户数、DAU/MAU、总文献量 | `AnalyticsView.vue` 统计卡片 |
|
||
| ✅ | | 租户分析 | 活跃度、阅读量、协作频次 | 后端 API 存在,前端折线图待补 |
|
||
| ✅ | | 标签分析 | 热门标签、关注领域分布 | `AnalyticsView.vue` 饼图 + 分布 |
|
||
| ✅ | | 管道运行趋势 | 新增文献量 + 生成推送量柱状图 | `AnalyticsView.vue` 管道量趋势图 |
|
||
| ✅ | | 日活跃用户趋势 | 近30天 DAU 折线图 | `GET /admin/stats/dau` + `AnalyticsView.vue` DAU 折线图 |
|
||
| 🟡 | | 营收分析 | MRR/ARR、付费转化率 | 未实现(Stripe 未集成,无数据) |
|
||
|
||
### Phase 3 — 增强功能
|
||
|
||
| 状态 | 模块 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|------|----------|
|
||
| ✅ | **AI 配置** | LLM 配置 | 支持 DB 配置 + 管理 UI,无 DB 配置时回退到环境变量 | `AiProviderConfig` 模型 + `ConfigView.vue` + `ai_summary.py` DB 加载 |
|
||
| 🔴 | | AI 摘要模板 | Prompt 模板管理 | 未实现 |
|
||
| 🔴 | | AI 翻译 | 中英文互译开关 | 未实现 |
|
||
| 🔴 | | 用量监控 | 各租户 Token 消耗 | 未实现 |
|
||
| 🔴 | | 成本控制 | 每日调用上限、成本告警 | 未实现 |
|
||
| ✅ | **专科配置** | 配置编辑器 | 可视化编辑 MeSH 过滤、标签树、期刊白名单 | `oncology.yaml` 配置驱动 |
|
||
| 🔴 | | 配置版本管理 | 修改历史版本、支持回滚 | 未实现(YAML 文件层无版本) |
|
||
| 🔴 | | 配置导入/导出 | 导出为 YAML/JSON,新部署时导入 | 未实现 |
|
||
| 🔴 | | 配置校验 | 修改后预览匹配效果 | 未实现 |
|
||
| 🟡 | | 新专科部署脚本 | 选模板 → 生成配置 → Docker启动 | Docker Compose 脚本可用,专科切换需手动 |
|
||
| ✅ | **开放 API** | API Key 管理 | 生成/吊销 API Key | `ApiManagementView.vue` |
|
||
| ✅ | | API 文档 | OpenAPI/Swagger | FastAPI 自动生成 |
|
||
| ✅ | | 调用限额 | 按方案设置日调用量 | `core/plans.py` 方案矩阵 |
|
||
| 🟡 | | 调用日志 | 调用记录、错误率监控 | 后端记录,前端详情待补 |
|
||
| 🟡 | | Webhook | 文献入库回调、新文献通知 | `webhooks.py` 端点,UI 待补 |
|
||
|
||
---
|
||
|
||
## 二、用户端功能规划
|
||
|
||
### Phase 0 — 公开页面(未登录也可访问,引导转化)
|
||
|
||
> 参考 deerlit.com / arxivdaily.com 模式:先让用户看到价值,再引导注册
|
||
|
||
**U0.1 首页 (Landing Page)**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | Hero 区域 | 产品价值主张 + 统计数据(收录638万篇/127本期刊/日均62篇) | `HomeView.vue` + `/public/stats` |
|
||
| ✅ | 双 CTA | "免费注册"(主按钮)+ "浏览今日精选"(次按钮,不强制注册) | `HomeView.vue` |
|
||
| ✅ | 今日精选卡片 | 8 篇文献卡片瀑布流,展示标题+期刊+标签+AI一句话总结 | `HomeView.vue` |
|
||
| ✅ | 本周热榜 | 全平台阅读量最高的 10 篇文献,带阅读计数 | `HomeView.vue` + `/public/hot-articles` |
|
||
| 🟡 | 按癌种浏览 | 横向标签云:肺癌/乳腺癌/结直肠癌/胃癌... → 跳转对应筛选 | 有癌种标签,无跳转筛选页 |
|
||
| 🔴 | 用户证言 | 引用真实用户评价,增加信任 | 未实现(示例如: testimonial 数据源) |
|
||
| ✅ | 底部数据横幅 | 累计收录/期刊覆盖/日均更新的实时数据 | `HomeView.vue` 统计横幅 |
|
||
| ✅ | Footer | 关于我们 / 定价 / 帮助中心 / 联系方式 | `HomeView.vue` Footer |
|
||
|
||
**U0.2 每日精选页(公开全文浏览)**
|
||
|
||
| 状态 | 功能 | 说明 |
|
||
|------|------|------|
|
||
| ✅ | 文献列表 | 全部今日精选文献,分页列表,无需登录 |
|
||
| 🟡 | 快捷标签过滤 | 顶部横向标签:按癌种/标签过滤 | `HomeView.vue` 已实现标签筛选 |
|
||
| ✅ | 文献卡片 | 公开版卡片:标题+作者+期刊+日期+标签+AI一句总结 |
|
||
| 🟡 | 摘要展开 | 点击"查看摘要"原地展开 | 跳转详情页而非原地展开 |
|
||
| ✅ | PubMed 链接 | 提供原文 DOI/PubMed 跳转 |
|
||
| 🔴 | 转化 CTA 条 | 每滚动一屏插入轻量 CTA | 未实现 |
|
||
| ✅ | **功能限制** | 未登录限制 PDF/收藏/导出/AI |
|
||
|
||
**U0.3 文献详情页(公开版)**
|
||
|
||
| 状态 | 页面 | 说明 |
|
||
|------|------|------|
|
||
| ✅ | 公开版 | 标题、作者、期刊、日期、中英文摘要、AI 一句话、全部标签、PubMed/DOI 跳转 | `PublicLayout` + `LiteratureDetailView.vue` |
|
||
| ✅ | 登录版 | PDF 全文、收藏、导出、AI 详细解读、笔记、分享到科室 | `AppLayout` + `LiteratureDetailView.vue` |
|
||
|
||
**U0.4 定价页**
|
||
|
||
| 状态 | 功能 | 说明 |
|
||
|------|------|------|
|
||
| ✅ | Free/Pro/Team 对比 | 功能矩阵表格(Enterprise 已移除,功能并入 Team) | `PricingView.vue` |
|
||
| ✅ | 常见 FAQ | 可以随时降级吗?团队版最少几人? | `PricingView.vue` |
|
||
| 🔴 | Enterprise 联系销售 | 联系表单/邮件触发 | 未实现 |
|
||
|
||
**U0.5 关于页 + 帮助中心**
|
||
|
||
| 状态 | 页面 | 说明 |
|
||
|------|------|------|
|
||
| ✅ | 关于页 | 产品介绍、团队背景 | `AboutView.vue` |
|
||
| ✅ | 帮助中心 | FAQ、数据来源说明、联系方式 | `HelpView.vue` |
|
||
|
||
**U0.6 SEO 优化**
|
||
|
||
| 状态 | 策略 | 实现 |
|
||
|------|------|------|
|
||
| ✅ | 每篇文献独立 URL | `/literature/:pmid` |
|
||
| ✅ | Schema.org 结构化数据 | WebApplication(全局)+ ScholarlyArticle(文献详情页 JSON-LD) |
|
||
| ✅ | meta description | 路由级 + 文献详情页动态 description |
|
||
| ✅ | Open Graph 标签 | og:title + og:description 注入文献详情页 |
|
||
| 🔴 | 癌种标签页 | `/topic/lung-cancer` 聚合页(未实现) |
|
||
| 🔴 | 期刊标签页 | `/journal/NEJM` 聚合页(未实现) |
|
||
|
||
### Phase 1 — 基础功能(登录后)
|
||
|
||
**U1.1 每日文献速览(核心产品功能)**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | 必读推送 | 根据关注领域+期刊偏好,每日 7:00 推送 5-20 篇必读标题 | `feed_engine.py` + ARQ `daily_pubmed_pipeline` |
|
||
| ✅ | 速览列表 | 按优先级组织、分页、标签徽章 | `FeedView.vue` |
|
||
| ✅ | 分级展示 | 🔴必读 / 🟡推荐 / ⚪相关 | `FeedView.vue` NCollapse 分组 |
|
||
| ✅ | 已读/未读 | 进入详情自动标记 + 卡片透明/左边框区分 + FeedView 后端透传 | `LiteratureCard.vue` + `mark_feed_read` API |
|
||
| ✅ | 快速操作 | 保存、批量保存、标记不感兴趣、批量忽略 | `FeedView.vue` 本批次增强 |
|
||
| 🟡 | 批量多选 | 复选框 + 全选 + 批量收藏/忽略 | ✅ 本批次新增 |
|
||
| 🟡 | 筛选 | 优先级/日期范围/搜索 | ✅ 本批次新增 |
|
||
| 🔴 | 不感兴趣学习 | 点"不感兴趣"后学习偏好、减少类似推送 | `dismiss` 仅标记忽略,无学习机制 |
|
||
|
||
**U1.2 文献详情页**
|
||
|
||
| 状态 | 功能 | 说明 |
|
||
|------|------|------|
|
||
| ✅ | 标题、全部作者及单位、DOI/PMID/期刊信息 | `LiteratureDetailView.vue` |
|
||
| ✅ | 英文摘要全文 + 自动标注的所有标签 | 点击可反向筛选 |
|
||
| ✅ | DOI 跳转出版方、PMC 免费全文链接 | PMC OA 全文已集成 |
|
||
| ✅ | 单篇导出 BibTeX / RIS / EndNote / CSV | `export_single_endpoint` |
|
||
| 🟡 | AI 摘要/一句话/解读 | 后端 `generate_ai_summary`,前端有请求按钮 |
|
||
| ✅ | 笔记 | 添加/编辑/删除笔记 |
|
||
| ✅ | 收藏 + 评分 | 1-5 星评分 |
|
||
|
||
**U1.3 用户关注领域设置(个性化引擎)**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | 癌种多选 | 肺癌>NSCLC/SCLC、乳腺癌>TNBC/HR+/HER2+ 等 | `InterestSettingsView.vue` |
|
||
| ✅ | 靶点多选 | EGFR/ALK/ROS1/BRAF/KRAS 等 | `InterestSettingsView.vue` |
|
||
| ✅ | 治疗方式多选 | 靶向/免疫/化疗/放疗/手术/ADC/双抗 | `InterestSettingsView.vue` |
|
||
| 🟡 | 文献类型偏好 | 指南/RCT/Meta/真实世界/综述/病例 | 后端支持,前端待补 UI |
|
||
| 🟡 | 期刊偏好 | 四级期刊等级勾选 | 后端支持,前端待补 UI |
|
||
| 🟡 | 匹配模式 | 宽松/标准(默认)/严格 | 后端 `subscriptions/preferences`,前端待补 |
|
||
| 🔴 | 预估推送量 | "近7天有 XX 篇文献" | 未实现 |
|
||
|
||
**U1.4 个人收藏与笔记**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | Feed 一键保存 | 保存到个人库 | `LiteratureCard.vue` 收藏按钮 |
|
||
| ✅ | 收藏夹管理 | 收藏夹 CRUD、左侧栏切换、色块指示器、文献数统计 | `user_settings.py` 4 端点 + `LibraryView.vue` 双栏布局 + `literature.py` folder_id 过滤 |
|
||
| 🟡 | 阅读状态 + 评分 | 未读/阅读中/已读完 + 1-5星 | `LiteratureDetailView.vue` 评分按钮 |
|
||
| ✅ | 笔记 | Markdown + 引文 | `MyNotesView.vue` 本批次增强 |
|
||
| ✅ | 自定义个人标签 | 为文献打个性标签 | `LiteratureDetailView.vue` 标签面板 |
|
||
|
||
**U1.5 个人中心**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| 🔴 | 个人学术画像 | 收藏数、笔记数、阅读量、期刊 Top5、标签云 | **完全缺失**(有后端 API `/settings/profile`,无前端页面) |
|
||
| ✅ | 个人信息编辑 | 头像、姓名、职称、亚专业方向、手机号 | `SettingsView.vue` |
|
||
| 🟡 | 套餐查看 | 当前方案、使用量监控 | `SettingsView.vue` 简单显示 |
|
||
| ✅ | 邮箱验证 | 发送验证码到邮箱 → 6 位码验证 → `email_verified=True` | `SettingsView.vue` + `useVerification.ts` + `verification.py` |
|
||
| ✅ | 手机验证 | 输入手机号 → 发送 SMS → 6 位码验证 → `phone_verified=True` | `SettingsView.vue` + `useVerification.ts` + `sms_service.py` |
|
||
| ✅ | 账号安全 | 修改密码、登录日志、邮箱/手机验证 | `SettingsView.vue` 安全设置 |
|
||
|
||
### Phase 2 — 高级功能
|
||
|
||
**U2.1 文献搜索与高级筛选**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | 全文搜索 | 标题/摘要/作者/机构 tsvector 搜索(GIN 索引 `ix_gl_search_tsv`,含作者名 + 机构名),ILIKE 仅兜底 | `SearchView.vue` + `/literature/search` |
|
||
| ✅ | 中文→英文 MeSH 匹配 | 中文关键词自动匹配 `GlobalTag.name_zh` → 注入 tag_ids 走标签递归 | `search_engine.py` 中文检测 + 标签回退 |
|
||
| 🟡 | 多条件标签过滤 | 癌种/靶点/治疗/类型/终点组合 | 搜索 API 支持 `tag_ids`,前端简化版 |
|
||
| ✅ | 年份/期刊/作者/机构 | 年份范围、期刊等级、作者搜索、机构搜索(全部走 search_tsv @@ tsvector) | 搜索参数 + `_field_condition()` |
|
||
| ✅ | 排序 + 分页 + 导出 | 相关度/日期/引用次数 + 批量导出 | `SearchView.vue` |
|
||
|
||
**U2.2 科室团队功能**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | 邀请成员 | 邮箱邀请(含邀请邮件通知)、角色分配、未注册用户引导注册、成员列表 | `TeamView.vue` + `teams.py` + `email_service.py` + `AcceptInviteView.vue` |
|
||
| 🟡 | 共享收藏夹 | "MDT讨论文献"、"科室晨会文献" | 后端 API 完整 (`teams/shared-folders`),前端 TeamView **缺少 UI** |
|
||
| 🟡 | 文献分享到科室 | 分享到科室空间 + 分享者点评 | 后端 API 完整 (`teams/activity`),前端 **缺少展示** |
|
||
| 🟡 | 团队活动流 | 成员动态 feed | 后端 API 完整,前端 **缺少时间线 UI** |
|
||
| 🟡 | 阅读排行 | 科主任查看全科室阅读情况 | 后端 API 完整,前端 **缺少排行 UI** |
|
||
| ✅ | 权限控制 | 角色可见范围(自己/科室/指定组) | `TeamView.vue` 角色管理 |
|
||
|
||
**U2.3 引用导出**
|
||
|
||
| 状态 | 功能 | 说明 |
|
||
|------|------|------|
|
||
| ✅ | 单篇导出 | BibTeX / RIS / EndNote / CSV / MLA | `/literature/export/{pmid}/{fmt}` |
|
||
| ✅ | 批量导出 | BibTeX / RIS / EndNote / CSV | `/literature/export/batch/{fmt}` |
|
||
| 🔴 | CSL 引擎 | 9000+ 期刊格式 | 未实现(当前用内置模板) |
|
||
| ✅ | 一键复制引用 | MLA 格式复制到剪贴板 + 方案感知格式过滤 | `useLiteratureDetail.ts` + `/literature/export/{pmid}/citation` |
|
||
| 🔴 | 定时导出 | 按周/月自动推送导出 | 未实现 |
|
||
|
||
**U2.4 期刊订阅与导航**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | 期刊列表浏览 | 按影响因子排序,显示发文量 | `JournalBrowseView.vue` (公开) |
|
||
| 🟡 | 期刊详情 | 最新文献、发文趋势、热点标签 | 后端 API 存在,前端详情页待补 |
|
||
| 🔴 | 期刊订阅推送 | 有新文献时推送通知 | 未实现 |
|
||
| 🟡 | 期刊目录速览 | 四级期刊等级勾选 | 后端支持,前端 `InterestSettingsView` 待补 |
|
||
|
||
### Phase 3 — 增强功能
|
||
|
||
**U3.1 AI 智能助手** → 详见 [docs/08-AI辅助功能规划.md](docs/08-AI辅助功能规划.md)
|
||
|
||
| 状态 | 功能 | 说明 | 层级 | 实现文件 |
|
||
|------|------|------|------|----------|
|
||
| ✅ | AI 总结 | 适合快速浏览的 40 字内结论 | Tier 1 | `ai_summary.py` + `LiteratureDetailView.vue` |
|
||
| 🟡 | AI 详细摘要 | 中文重构式:背景-方法-结果-结论 | Tier 1 | 后端 `generate` 接口,前端触发按钮 |
|
||
| 🔴 | AI 解读标签页 | 结构化展示 + 关键数据表格 + 中文翻译 | Tier 1 | 详情页新增标签页,计划 Phase 1 |
|
||
| 🔴 | AI 翻译 | 标题/摘要一键中英互译 | Tier 1 | 未实现 |
|
||
| 🔴 | 知识库 RAG 问答 | 基于个人收藏/上传文件的知识库问答 | Tier 2 | 新建 knowledge_entries + ES 向量 + Q&A API,计划 Phase 2-4 |
|
||
| 🔴 | 知识图谱探索 | 收藏文献的实体共现关系可视化 | Tier 2 | 自动 NER + 关系图视图,计划 Phase 6 |
|
||
| 🔴 | 个性化 AI 解读 | 按研究方向自动适配解读角度 | Tier 3 | 研究方向配置 + prompt 模板,计划 Phase 7 |
|
||
| 🔴 | 多模型选择 | 用户可选 DeepSeek / GPT-4o / 本地模型 | Tier 3 | AiProviderConfig 扩展,计划 Phase 7 |
|
||
| ✅ | AI 关联推荐 | 引用本文的文献 + 相似标签的近期文献 | — | `GET /literature/{pmid}/related` + `LiteratureDetailView.vue` 推荐卡片 |
|
||
|
||
**U3.2 新药审批追踪**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | 审批列表 | FDA/NMPA/EMA 审批记录查看 | `DrugApprovalsView.vue` |
|
||
| ✅ | 靶点时间线 | 某靶点全部获批药物时间线,垂直时间线视图 | `DrugApprovalsView.vue` 时间线标签页 |
|
||
| ✅ | 审批日历 | 按月日历网格,颜色区分监管机构 | `DrugApprovalsView.vue` 日历标签页 |
|
||
| ✅ | 靶点订阅 | 关注靶点新药获推送通知,管理已订阅靶点 | `DrugApprovalsView.vue` 订阅按钮 + 订阅管理标签页 |
|
||
| ✅ | 靶点时间线导航 | 点击列表靶点自动跳转时间线 | `DrugApprovalsView.vue` 时间线按钮 |
|
||
|
||
**U3.3 临床指南更新提醒**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | 指南列表 | NCCN/CSCO/ESMO 版本列表 | `GuidelinesView.vue` |
|
||
| ✅ | 版本比对 | 查看新旧版本差异 | `GuidelineCompareView.vue` |
|
||
| ✅ | 差异高亮 | LCS word-level diff + 并排 + 变更要点 inline 高亮 | `GuidelineCompareView.vue` LCS 算法 |
|
||
| 🟡 | 版本导航 | 下拉选择版本后自动加载对比 | `GuidelineCompareView.vue` 基本版本切换 |
|
||
| ✅ | 推荐→证据引用链 | 指南推荐方案的支撑文献 | `GuidelineEvidence` 模型关联 |
|
||
| 🔴 | 治疗线数查找 | 按癌种+治疗线数快速查找标准方案 | 未实现 |
|
||
| 🔴 | 推送通知 | 指南版本更新自动推送用户 | 未实现 |
|
||
|
||
**U3.4 Journal Club 管理(科室文献汇报)**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | 文献排队 | 添加文献到 JC 队列、分配汇报人 | `JournalClubView.vue` |
|
||
| 🟡 | AI 汇报提纲 | AI 自动生成:背景/方法/结果/临床意义 | 后端 `outline` API,前端一键生成按钮 |
|
||
| 🟡 | 讨论笔记 | 会议记录 + 已报告标记 | 后端已支持,前端已实现笔记编辑(本批次新增) |
|
||
| 🔴 | 日历排期 | 月度日历视图,标记已排期文献 | 未实现 |
|
||
| 🔴 | 批量添加 | 支持 PMID 逗号分隔批量入队 | 未实现 |
|
||
| 🔴 | 前置文献推荐 | "读前必读" 按钮,AI 推荐关键引用 | 未实现 |
|
||
| 🟡 | 历史归档 | 已报告文献可检索 | `JournalClubView.vue` 状态切换 |
|
||
|
||
**U3.5 MDT 肿瘤多学科团队协作**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | 病例卡 | 匿名化病例创建、癌种分类 | `MdtView.vue` 新建弹窗 |
|
||
| ✅ | 角色标签 | 内科/外科/放疗/病理/影像色彩标签 | `MdtView.vue` 参与者标签 |
|
||
| ✅ | 文献证据 | 病例关联文献、自动抓取引用信息 | `MdtView.vue` 证据管理抽屉 |
|
||
| ✅ | 决策记录 | MDT 讨论结论 + 参会人员 + 日期 | `MdtView.vue` 决策弹窗 |
|
||
| ✅ | 病例文献包 | 基于癌种 + 关键词自动推荐相关文献,一键添加为证据 | `GET /mdt/cases/{cid}/literature-pack` + `MdtView.vue` 文献包抽屉 |
|
||
| ✅ | 文献包自动去重 | 已添加为证据的文献自动排除 | `literature-pack` 端点 |
|
||
|
||
**U3.6 个人学术画像**
|
||
|
||
| 状态 | 功能 | 说明 | 实现文件 |
|
||
|------|------|------|----------|
|
||
| ✅ | 个人学术画像 | 收藏数/评分/笔记/订阅/阅读量/7日活跃/阅读率 | `ProfileView.vue` |
|
||
| ✅ | 期刊 Top5 | 横向条形图 | `ProfileView.vue` |
|
||
| ✅ | 标签云 | 热度排序、彩色标签 | `ProfileView.vue` |
|
||
| ✅ | 周报下载 | 生成并下载 Markdown 周报 | `ProfileView.vue` |
|
||
| 🔴 | 知识图谱 | 关注领域的研究热点 → 详见[AI辅助功能规划](docs/08-AI辅助功能规划.md#34-知识图谱分步实施) | Phase 6 |
|
||
| 🔴 | ORCID 绑定 | 追踪自己被引用的文献 | 未实现 |
|
||
| 🔴 | AI 推荐方向 | 基于阅读水平的深入学习建议 | 未实现 |
|
||
| 🔴 | AI 辅助科研 | 趋势扫描/空白分析/证据综合/假设生成/写作辅助 → 详见[AI辅助功能规划](docs/08-AI辅助功能规划.md#七ai-辅助科研未来方向) | Phase A-E |
|