Includes search engine improvements, Alembic migrations, new services (pubmed_daily_update, query_expansion), frontend updates, and documentation sync.
6.0 KiB
6.0 KiB
Pub高级搜索 测试用例
测试环境
打开 http://localhost:5173/advanced-pub-search
1. Search Builder(查询构建器)
| 步骤 | 操作 | 期望结果 |
|---|---|---|
| 1.1 | AND 状态下,Field 选 Title,输入 lung cancer,点 Add |
Query Box 显示:"lung cancer"[TI] |
| 1.2 | 把 AND 改成 OR,Field 选 Author,输入 Smith J,点 Add |
Query Box 显示:"lung cancer"[TI] OR "Smith J"[AU] |
| 1.3 | Field 选 All Fields,输入 pembrolizumab,点 Add |
Query Box 显示:"lung cancer"[TI] OR "Smith J"[AU] AND pembrolizumab |
| 1.4 | 引号去重:Field 选 Title,输入 "already quoted",点 Add |
Query Box 最后追加 "already quoted"[TI](不会出现 ""already quoted"") |
| 1.5 | Enter 快捷键:Field 选 All Fields,输入 test,按 Enter |
同点 Add,自动追加到 Query Box |
2. Query Box(查询框)
| 步骤 | 操作 | 期望结果 |
|---|---|---|
| 2.1 | 手动输入:"breast cancer"[TI] AND "trastuzumab"[TIAB] |
Translation Table 显示 2 行:[TI] Title / [TIAB] Title/Abstract |
| 2.2 | 追加 AND 2022:2024[DP] |
Translation Table 新增 1 行:[DP] Publication Date → 2022:2024 |
| 2.3 | 测试 NOT 查询:"lung cancer"[TI] NOT "mouse"[MH] |
前端验证通过,不报错 |
| 2.4 | 长日期格式:2020/01/01:2020/12/31[DP] |
Translation Table 正确显示 Date Range |
| 2.5 | 括号嵌套:("a"[TI] OR "b"[TI]) AND "c"[TIAB] |
验证通过 |
| 2.6 | PMID:12345678[PMID] |
Translation Table 显示 [PMID] 行 |
3. 验证规则
| 步骤 | 操作 | 期望结果 |
|---|---|---|
| 3.1 | Query Box 为空,点 Search | 提示"请输入查询" |
| 3.2 | 输入 AND lung cancer(以运算符开头) |
提示"查询不能以布尔运算符开头" |
| 3.3 | 输入 lung cancer AND(以运算符结尾) |
提示"查询不能以布尔运算符结尾" |
| 3.4 | 输入 a AND AND b(连续运算符) |
提示"不允许连续使用布尔运算符" |
| 3.5 | 输入 (a AND b(缺少右括号) |
提示"括号不匹配" |
| 3.6 | 输入 a AND b)(多余右括号) |
提示"多余的右括号" |
| 3.7 | 输入 "test"[INVALID] |
提示"字段标签 [INVALID] 不合法" |
4. Search(搜索执行)
| 步骤 | 操作 | 期望结果 |
|---|---|---|
| 4.1 | 输入 "lung cancer"[TI],点 Search |
跳转到 /search?q="lung cancer"[TI],显示结果 |
| 4.2 | 检查搜索结果 | 标题字段匹配 "lung cancer" 的文献,数量 > 0 |
| 4.3 | OR 查询:回到 Pub高级搜索页,输入 "lung"[TI] OR "cancer"[TI],点 Search |
结果比 4.1 多(应该是两个词各自结果的并集) |
| 4.4 | NOT 查询:"lung cancer"[TI] NOT "review"[PT],点 Search |
结果比 4.1 少(排除了 review 类型) |
| 4.5 | 日期范围:2024:2025[DP] AND "cancer"[TI],点 Search |
只返回 2024-2025 年的文献 |
| 4.6 | MeSH 查询:"lung neoplasms"[MH],点 Search |
返回带有 Lung Neoplasms MeSH 标签的文献 |
| 4.7 | MAJR 查询:"lung neoplasms"[MAJR],点 Search |
比 4.6 少(仅 Major Topic) |
| 4.8 | PMID 精确搜索:36261522[PMID],点 Search |
精确返回该文献 |
| 4.9 | DOI 搜索:已知某篇 DOI,输入 "10.xxxx/xxxx"[DOI],点 Search |
精确返回该文献 |
| 4.10 | 多字段复杂查询:("lung cancer"[TI] OR "nsclc"[TIAB]) AND 2023:2025[DP] NOT "case reports"[PT],点 Search |
执行复杂布尔查询,返回结果 |
5. Search History(搜索历史)
| 步骤 | 操作 | 期望结果 |
|---|---|---|
| 5.1 | 执行 4.1 的搜索("lung cancer"[TI]) |
成功后 History 出现 #1,显示查询、结果数和时间 |
| 5.2 | 执行 4.3 的搜索(OR 查询) | History 出现 #2 |
| 5.3 | 刷新页面 | #1 和 #2 仍然存在(localStorage 持久化) |
| 5.4 | 点击 #1 |
#1 追加到 Query Box 末尾 |
| 5.5 | Query Box 中写 #1 AND #2,点 Search |
resolve 后正确跳转到搜索结果页 |
| 5.6 | 输入 #999(不存在的编号),点 Search |
提示"历史引用 #999 不存在" |
| 5.7 | 点 #1 行的 ✕ 按钮 |
#1 从 History 中删除 |
| 5.8 | 点 Clear All | 所有历史被清空,显示"暂无搜索历史" |
| 5.9 | 点 Download | 下载一个 .tsv 文件,内容包含所有历史记录 |
6. Combine(组合历史查询)
| 步骤 | 操作 | 期望结果 |
|---|---|---|
| 6.1 | 先搜索 2 个不同查询(如 "lung"[TI] 和 "breast"[TI]) |
分别产生 #1 和 #2 |
| 6.2 | Combine 行:输入框 A 写 1,选 AND,输入框 B 写 2,点 Combine |
Query Box 追加 #1 AND #2 |
| 6.3 | 点 Search | 自动展开为 ("lung"[TI]) AND ("breast"[TI]),搜索结果正确 |
| 6.4 | 输入框 A 写 #1,输入框 B 写 #2(带 # 前缀) |
同样正常工作,不会出现 ##1 |
7. Add to History(仅加入历史)
| 步骤 | 操作 | 期望结果 |
|---|---|---|
| 7.1 | 输入 "targeted therapy"[TI],点 Add to History |
提示"#3 已加入历史(N 条结果)",Query Box 不变 |
8. 暗色模式
| 步骤 | 操作 | 期望结果 |
|---|---|---|
| 8.1 | 切换到暗色模式(如果有切换开关) | 页面正常显示 |
| 8.2 | 点击 Search Builder 的 Field 下拉框 | 下拉弹窗选项文字在 hover/选中时显示白色 |
| 8.3 | 点击任意按钮(Search/Clear/Add) | 按钮文字始终白色可见 |
9. 响应式
| 步骤 | 操作 | 期望结果 |
|---|---|---|
| 9.1 | 浏览器窗口缩窄到 < 768px | Builder 变垂直排列,下拉框全宽 |
| 9.2 | 手机宽度下测试 | 无水平溢出,所有功能正常 |
回归检查
| 检查项 | 期望 |
|---|---|
| 首页搜索框旁的 Pub高级搜索按钮(代码图标) | 正常显示,点击跳转 |
| 首页原有"高级搜索"齿轮按钮 | 不受影响,功能不变 |
| 搜索结果页宽度 | 与首页、Pub高级搜索页一致 |