# AstroResearch Troubleshooting / 常见问题与排障指南 在使用 AstroResearch 过程中可能遇到的问题及排障步骤如下: --- ## 1. 文献下载相关问题 (Download Issues) ### 1.1 下载任务遇到 "检测到 Cloudflare / 人机验证页面" - **原因**:部分出版商对频繁的自动化下载请求实施了高强度的 IP 拦截与 CF 校验。 - **解决方法**: 1. 系统目前已经实现每两次请求间随机延迟 `maybe_delay()` (500ms~2000ms),以防行为过于机械化。 2. 若拦截频繁,可以尝试在本地配置代理;或者检查 `.env` 中的 `LIBRARY_DIR` 路径是否正确。 3. 对于 ADS Link Gateway 路由,若跳转至 `validate.perfdrive.com`,下载器内置了解码 `ssc` 提取直链的策略,该过程自动进行,如果由于其加密机制变更导致提取失效,系统控制台会输出 `warn` 日志。 4. 下载失败后,系统会在数据库中自动记录以 `error:` 前缀的诊断信息。前端文献卡片会以红色角标标识"下载失败",鼠标悬浮可查看具体失败原因。 ### 1.2 官方 HTML (arxiv.org/html) 下载返回 404 - **原因**:arXiv 官方 HTML 正文服务仅在 **2023年12月** 之后提交的论文中默认提供。对于老文献,直接请求官方 HTML 会返回 404。 - **解决机制**:AstroResearch 的 `download_arxiv_html_with_fallback` 会在官方 HTML 请求失败时,**自动无缝降级回退**到 `ar5iv.labs.arxiv.org` 服务进行拉取。 ### 1.3 通过手动上传或浏览器书签直推绕过 Cloudflare 防爬 - **原因**:部分出版商对自动化脚本下载防范严密,直接通过后台任务下载容易导致获取失败(并在数据库中存入带有 `error:` 前缀的报错描述)。 - **解决方法**: 1. **方案 A (详情弹窗手动上传)**:在文献详情弹窗中,点击文献直链(系统会使用您本人的真实浏览器和网络环境打开源站),手动下载 PDF 或 HTML,然后拖拽/上传至详情弹窗对应的上传区。 2. **方案 B (书签直推导入)**:在批量同步面板底部,点击"添加导入书签"按钮,或将其直接拖拽至您的浏览器书签栏(书签名为"导入AstroResearch")。当您使用真实浏览器访问文献源站(如 arXiv 页面)时,点击该书签,在弹出的窗口中确认 Bibcode,即可直接将解析后的内容通过 API 直推同步到本地。 ### 1.4 标记文献为"无有效全文资源" - **原因**:部分文献(如会议摘要、天文电报、观测提案等)本身不存在可下载的全文 PDF/HTML,反复尝试下载会浪费时间。 - **解决方法**: 1. 在文献详情弹窗底部,点击"标记为无有效全文资源"按钮。 2. 标记后,文献卡片角标变为灰色"无资源"状态,后续批量下载/解析任务将自动跳过此文献。 3. 若需恢复,再次点击"恢复自动下载状态"按钮即可清除标记。 --- ## 2. 文献解析与翻译问题 (Parse & Translation Issues) ### 2.1 翻译请求返回空或报错 "LLM API KEY Missing" - **原因**:根目录下没有配置正确的 `.env` 文件,或者 LLM 提供的 Endpoint/Model 有误。 - **排查步骤**: 1. 确认项目根目录下存在 `.env` 且拥有 `LLM_API_KEY` 及 `LLM_API_BASE` 配置。 2. 使用终端运行 `cargo run`,检查启动日志中是否有关于读取环境配置的警告信息。 ### 2.2 PDF 解析缺少图表或公式损坏 - **原因**:PDF 格式本身不支持结构化语义。直接提取文本会丢失公式和图表。 - **解决机制**: 1. 如果文献有 HTML/ar5iv 格式,系统会自动优先基于 HTML 解析,保留完美的 LaTeX 公式。 2. 若该文献只有 PDF 格式,系统自动降级调用本地或远程的 **MinerU** PDF 图文大模型解析。请确保本地 MinerU 解析服务已按照 API 格式运行并在 `.env` 中正确填入 `MINERU_API_URL`。 --- ## 3. 检索与显示问题 (Search & Display Issues) ### 3.1 无法通过特定的 arXiv ID 或 DOI 检索到已导入的文献 - **原因**:历史版本前端本地检索仅匹配了文献的标题、作者、摘要和 `bibcode`,未对 `arxiv_id` 和 `doi` 进行全局检测过滤。 - **排障/解决**:现已在馆藏过滤逻辑中追加了 `arxiv_id` 和 `doi` 的字段检索。如果遇到由于升级导致的缓存错乱,可点击顶部的 "重新同步馆藏" 刷新本地缓存状态。 ### 3.2 文献详情页的 BIBCODE 与 ARXIV ID 显示完全相同的值(如均显示 '0710.0600') - **原因**:当文献通过 arXiv 单独直接导入时,后端处理器无法预知其关联的 ADS Bibcode。为确保数据一致,系统在 SQLite 中临时将 `bibcode` 和 `arxiv_id` 均用 arXiv ID 填充,直到后续 ADS 元数据同步匹配成功将其"升级"。 - **解决机制**:前端已实现了防重与标识规整机制。如果检测到 `bibcode === arxiv_id`,卡片页将前缀格式化为 `arXiv:xxxx.xxxx` 形式,而文献元数据详情弹窗中 `BIBCODE` 则会直接优雅呈现为 **"暂无"** 状态,避免视觉歧义。 ### 3.3 馆藏面板"重新同步馆藏"按钮点击后没有反馈 - **原因**:早期版本中同步操作是异步静默执行的,用户无法感知操作进度。 - **解决机制**:当前版本已增加同步反馈机制: - 点击按钮后显示加载动画(旋转图标 + "正在同步..." 文字)。 - 同步完成后弹出绿色成功提示条(显示馆藏数量),或红色错误提示条。 - 反馈信息 3 秒后自动消失。 --- ## 4. 数据库与运行环境问题 (Runtime & DB Issues) ### 4.1 启动提示 "Database Migration Failed" - **原因**:本地 SQLite 数据库文件 `astro_research.db` 出现并发锁死或版本 schema 冲突。 - **解决方法**: 1. 备份并临时删除根目录下的 `astro_research.db` 数据库文件。 2. 重新启动服务:`cargo run`,系统将重新执行 `migrations/` 下的全部 SQL 迁移脚本以建立最新库结构。 ### 4.2 馆藏文献健康度检查工具 (health_check) - **原因**:大批量文献下载、解析或手动增删物理文件后,可能存在数据库状态与物理文件不一致的情况。 - **排障与修复步骤**: 1. **只读扫描**:运行 `cargo run --bin health_check`。此操作将扫描本地物理文件并验证它们是否损坏,检测数据库是否有丢失物理文件、报错记录(以 `error:` 开头)或孤立 Markdown 的文献。 2. **一键修复**:运行 `cargo run --bin health_check -- --fix` 执行修复: - 系统将自动**删除磁盘上损坏的 PDF/HTML 物理文件**,并在数据库中将其重置为 `NULL` 以便后续重新触发下载。 - 系统将自动**删除孤立的 Markdown 物理文件**并将其重置为 `NULL`。 - **特别注意**:对于数据库中已存入的 `error:` 报错诊断信息,为了保留报错排障的有用线索,**修复程序不会删除这些报错记录**(即不会重置为 `NULL`),以便您后续查看与手动上传修复。 --- ## 5. 前端界面问题 (Frontend UI Issues) ### 5.1 下拉选择框样式与浏览器原生样式不一致 - **原因**:系统使用自研的 `CustomSelect` 组件替代了原生 `