34047007@qq.com
a37cc506fc
fix: 第三轮PubMed搜索审计 — 14项修复(P0×5, P1×4, P3×5)
...
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
P0 (搜索结果错误):
- 门控补全 sb/stat/uid_terms + dep_from/dep_to
- [SB] 映射修复: medline→citation_status, pubmed→no-op
- 括号组内单否定词丢失 not_() 修复
- HomeView URL watch 补全 sort/field/retracted/negative
- HomeView→SearchView 日期精度保留(urlDateFrom/urlDateTo)
P1 (功能缺陷):
- [ALL] 字段标签注册(_FIELD_TAG_MAP + _ALL_FIELD_TAGS)
- 独立日期字段 "2024-01-01"[DP] 降级修复(_dispatch_term)
- 浮点日期范围交换(2026-01-01:2024-01-01 → 自动排序)
- page_size URL 恢复 + syncSearchToUrl 输出
P3 (健壮性):
- MeSH 展开 try/catch(expand_atm + _expand_mesh_tag_ids)
- sort/field/boolean 参数验证(field_validator)
- GET /search 查询长度限制(100词)
- query_expansion.py 中文正则同步 [一-鿿㐀-䶿豈-]
- import_mesh_full entry_terms 统一小写(匹配 JSONB @> 精确比较)
测试: 127/127 搜索测试通过,前端构建无报错
2026-07-27 11:02:22 +08:00
34047007@qq.com
e688241355
fix: 第二轮PubMed搜索合规审计 — 8项修复 + 6项新测试
...
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
F1: search_engine.py `_pubmed_conditions` 顶层 [MH:noexp] 丢失 _noexp 标志
按 _noexp 分组 mesh_terms,分别调用 _expand_mesh_tag_ids(noexp=True/False)
F2: search_engine.py 组内 NOT 违反 De Morgan 律
全组 is_not=True 时单 NOT 包裹组合条件而非 per-term not_()
F3: pubmed_query_parser.py `_parse_not_expr` 不支持重复 NOT
改为递归调用,NOT NOT toggle is_not(三重 NOT 正确)
F4: SearchView.vue Custom Range datePreset 不发送日期参数
增加 datePreset === 'custom' 分支发送 year_from/year_to
F5: HomeView.vue restoreFromUrl 恢复不全
补全 sort/field/retracted/negative_result
F6: AdvancedSearchPanel.vue precision_mode 死控件移除(UI+emit+reset)
types/index.ts precision_mode 死类型字段移除
F7: types/index.ts is_oa 标记为 unused, reserved
F8: search_engine.py `_expand_mesh_tag_ids` N+1 → 2 批量查询
所有 entry_terms 和 name_en 分别合并为 OR 查询
测试: 新增 NOT NOT/triple NOT/NOT group/DM:noexp 顶层 共 7 项
2026-07-27 10:30:40 +08:00
34047007@qq.com
723c4fc5c9
fix: PubMed搜索合规 — 34项修复 + query_expansion UnboundLocalError + HomeView precision_mode残留
...
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
Batch1 — 解析器 (pubmed_query_parser.py)
- P0-1: 未知字段标签降级为 WORD token 而非 ParseError
- P2-1: 增加未消费 token 检查
- P2-2: PRISMA 字段标签正则 [\w:+] → [\w:]+
- P2-3: Unicode NFKC 规格化输入
- P2-4: re.ASCII 防止 Unicode 数字匹配
- P2-9: 移除重复 dataclass 字段
Batch2 — 搜索引擎 (search_engine.py)
- P1-1: 批量 PMID 查询替代 N+1 循环
- P1-2: isdigit() → isdecimal()
- P1-5: 移除 precision_mode 参数
- P2-5: 移除死代码
- P2-6: 统一 _CHINESE_RE 正则
Batch3 — ATM 引擎 (query_expansion.py)
- P0-4: name_zh ILIKE 中文回退 + _find_mesh_tags 中文降级
- P1-3: name_en ILIKE 加 LIMIT 100
Batch4 — API 层 (features.py)
- P1-5: 移除 precision_mode 请求字段
- P1-11: 增加 logging
- P2-8: NLM_SUBSET_LABELS f-string 安全注释
- P2-12: split 校验器近似性注释
Batch5 — SearchView.vue
- P0-5a/b/c: 日期修复(UTC 方法、互斥逻辑、restoreFromQuery 合并)
- P2-10: 筛选模态关闭时重搜
- P3-1: 搜索框 aria-label
Batch6 — HomeView.vue
- P1-10: URL date → date_from/date_to
- P2-11: clearSearch 清空 feedItems 并重加载
Batch7 — LiteratureCard.vue
- P1-6: 字段标签正则 [\w-]+ → [\w:-]+
- P1-7: terms 切片限制 20 项防 ReDoS
后修复:
- query_expansion.py _find_partial_mesh_tags UnboundLocalError(单非中文词未初始化 tag_ids)
- HomeView.vue handleAdvancedSearch precision_mode 残留引用
2026-07-27 09:45:17 +08:00
34047007@qq.com
43392438c8
新增全面验证测试 + 验证报告(102 测试全部通过)
...
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
- test_comprehensive_verify.py (39 tests): 覆盖 Group A 解析器缺口
(纯文本引号/通配符/数字、MH:noexp/MESH/SB/STAT/UID/JT/PA 字段标签、
EDAT/DEP 日期范围、NOT 日期、双层括号、布尔优先级、混合查询、
>100 token 降级、NOT 各字段)
- VERIFICATION_REPORT.md: 所有 P0-P4 17 项修复确认 ✅ ,5 项 ⚠️ 已知残留
2026-07-27 09:12:46 +08:00
34047007@qq.com
5f69277eba
feat: PubMed搜索合规审计 Phase 5-7 全部修复
...
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
P1-2: [SB][STAT][UID][DEP][MESH]字段支持
P1-4: [MH:noexp]解析+抑制树展开
P3: 前端date_to/P3-1、CJK高亮/P3-3、extractPlainText/P3-4、precision_mode移除/P3-6、loadMore sort/P3-5
P4-1: 词数上限50→100
P4-2: retracted参数清理
2026-07-27 09:03:19 +08:00
34047007@qq.com
62ca8fa6b8
chore: batch commit remaining changes
...
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
Includes search engine improvements, Alembic migrations,
new services (pubmed_daily_update, query_expansion),
frontend updates, and documentation sync.
2026-07-27 08:35:12 +08:00
34047007@qq.com
35b0a5c565
docs: add Gitea repo info to CLAUDE.md
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
2026-07-27 08:26:10 +08:00
34047007@qq.com
036494ae35
chore: add Gitea service to docker-compose, fix gitignore
...
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
- Gitea (postgres-backed) on ports 3000/2222
- Exclude .claude/ dir and *.db from git
- Update CLAUDE.md with Gitea remote info
2026-07-27 08:13:53 +08:00
34047007@qq.com
a6cd99a4ca
feat: initial commit - oncology literature search platform
...
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
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