Files
backend/docs/04-产品功能规划.md
34047007@qq.com a6cd99a4ca
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
feat: initial commit - oncology literature search platform
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.
2026-07-27 07:59:18 +08:00

26 KiB
Raw Permalink Blame History

产品功能规划

最后更新:2026-07-12 · 详见 开发阶段与里程碑 | AI 辅助功能规划

产品定位

"早上查房前 5 分钟,看完全世界今天最重要的肿瘤学进展。"

肿瘤科文献管理 SaaS 平台。覆盖 PubMed 每日全量肿瘤学文献,自动打标、精准推送,为三甲医院肿瘤科/MDT 团队提供从文献发现到团队协作的一站式解决方案。


开发里程碑 v0.5(当前)

状态图例

标记 含义
已实现(生产可用)
🟡 骨架完成(可运行但缺深度功能)
🔴 未实现(无 UI / 无后端)
🚧 建设中(正在开发)

当前验证指标(2026-07-08

  • 前端类型检查: vue-tsc --noEmit 零错误
  • 生产构建: vite build 成功
  • 自动化测试: pytest 867 passed / 2 pre-existing failurespayment 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 每日精选页(公开全文浏览)

状态 功能 说明
文献列表 全部今日精选文献,分页列表,无需登录
🟡 快捷标签过滤 顶部横向标签:按癌种/标签过滤
文献卡片 公开版卡片:标题+作者+期刊+日期+标签+AI一句总结
🟡 摘要展开 点击"查看摘要"原地展开
PubMed 链接 提供原文 DOI/PubMed 跳转
🔴 转化 CTA 条 每滚动一屏插入轻量 CTA
功能限制 未登录限制 PDF/收藏/导出/AI

U0.3 文献详情页(公开版)

状态 页面 说明
公开版 标题、作者、期刊、日期、中英文摘要、AI 一句话、全部标签、PubMed/DOI 跳转
登录版 PDF 全文、收藏、导出、AI 详细解读、笔记、分享到科室

U0.4 定价页

状态 功能 说明
Free/Pro/Team 对比 功能矩阵表格(Enterprise 已移除,功能并入 Team
常见 FAQ 可以随时降级吗?团队版最少几人?
🔴 Enterprise 联系销售 联系表单/邮件触发

U0.5 关于页 + 帮助中心

状态 页面 说明
关于页 产品介绍、团队背景
帮助中心 FAQ、数据来源说明、联系方式

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
批量导出 BibTeX / RIS / EndNote / CSV
🔴 CSL 引擎 9000+ 期刊格式
一键复制引用 MLA 格式复制到剪贴板 + 方案感知格式过滤
🔴 定时导出 按周/月自动推送导出

U2.4 期刊订阅与导航

状态 功能 说明 实现文件
期刊列表浏览 按影响因子排序,显示发文量 JournalBrowseView.vue (公开)
🟡 期刊详情 最新文献、发文趋势、热点标签 后端 API 存在,前端详情页待补
🔴 期刊订阅推送 有新文献时推送通知 未实现
🟡 期刊目录速览 四级期刊等级勾选 后端支持,前端 InterestSettingsView 待补

Phase 3 — 增强功能

U3.1 AI 智能助手 → 详见 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辅助功能规划 Phase 6
🔴 ORCID 绑定 追踪自己被引用的文献 未实现
🔴 AI 推荐方向 基于阅读水平的深入学习建议 未实现
🔴 AI 辅助科研 趋势扫描/空白分析/证据综合/假设生成/写作辅助 → 详见AI辅助功能规划 Phase A-E