34047007@qq.com 090938fa2b fix: 第11轮深度审计修复 — P0 keyset翻页崩溃 + P1布尔符语义/语法误报等16项修复
P0 (1项):
- keyset cursor: lit.title or "__NULL__" 空字符串误判为NULL导致后续翻页全空

P1 (6项):
- boolean_operator: 仅扫描depth=0的token,括号内AND/OR不再影响顶层操作符判定
- is_pubmed_syntax: 去除AND/OR/NOT检测的IGNORECASE(PubMed仅识别大写布尔符)
- _relevance_query: MeSH-only查询(如breast[MAJR])补充原始回退,避免退化到日期排序
- pmid_terms: 缺少try/except int(),补充ValueError+DOI兜底
- 部分日期展开: 2024-01[DP]等YYYY-MM partial date展开为整月范围(DP/EDAT/CRDT)
- 前端#N去重: resolveQuery/expandQuery dedup refs防重复引用误判为循环

P2 (9项):
- cache: filter-options加入invalidate_search_cache清理
- worker: daily_ftp_update/daily_citation_update异常时finally保证缓存清理
- cursor_val: 空字符串''通过is None检查,补充not cursor_val
- keyset UI: 模板条件sort==='date'改为KEYSET_SORTS.has(sort)
- resetAllFilters: 补充showCustomYear=false
2026-07-28 12:08:17 +08:00

SciLit Oncology — 肿瘤科文献管理平台

快速启动

# 1. 启动所有服务
docker compose up -d

# 2. 初始化数据库(首次)
docker compose exec backend alembic upgrade head

# 3. 访问
# 前端: http://localhost:5173
# 后端 API: http://localhost:8000/docs
# MinIO 控制台: http://localhost:9001 (minioadmin/minioadmin)

项目结构

backend/
├── app/
│   ├── main.py              # FastAPI 入口
│   ├── config.py            # 配置
│   ├── db.py                # 数据库连接
│   ├── core/                # 核心:安全、权限、多租户中间件
│   ├── models/              # SQLAlchemy 模型 (32 张表)
│   ├── schemas/             # Pydantic 请求/响应
│   ├── api/v1/              # REST API 端点
│   └── tasks/               # ARQ 异步任务 (PubMed 管道)
├── alembic/                 # 数据库迁移
└── config/specialties/      # 科室配置 (oncology.yaml)

frontend/
├── src/
│   ├── views/public/        # 公开页面 (无需登录)
│   ├── views/auth/          # 登录/注册
│   ├── views/app/           # 已登录应用页面
│   ├── stores/              # Pinia 状态管理
│   ├── api/                 # Axios 封装
│   └── router/              # Vue Router

docs/                        # 完整设计文档 (9 份)

技术栈

  • 后端: FastAPI + SQLAlchemy 2.0 (async) + PostgreSQL 16 + Redis + Elasticsearch
  • 前端: Vue 3 + Naive UI + Pinia + Vite
  • 任务队列: ARQ
  • 文件存储: MinIO / S3
  • 多租户: PostgreSQL RLS + ContextVar 双层隔离

文档

详细的产品规划、数据库设计、标签体系、数据管道、UI 设计见 docs/ 目录。

S
Description
SciLit Backend - Oncology Literature Platform
Readme
144 MiB
Languages
Python 69.4%
Vue 26.2%
TypeScript 2.8%
Shell 1.1%
PLpgSQL 0.2%
Other 0.2%