feat: 手动上传绕防爬、下载错误诊断与健康检查工具;模块化重构 API 与批量同步

后端:
  - 将 handlers.rs (1338行) 拆分为 helpers/papers/notes/sync 四模块
  - 将 batch_sync.rs 拆分为 batch/{mod,meta,asset} 三模块
  - 新增 POST /api/upload 多部件文件上传接口
  - 新增 POST /api/no_resource 标记文献"无全文资源"
  - 新增 GET/POST /api/active_bibcode 追踪活跃文献
  - StandardPaper 结构体扩展 pdf_error / html_error 错误诊断字段
  - download.rs 记录下载失败详情至数据库
  - 新增 health_check 二进制工具,支持只读扫描与 --fix 自动修复
  - 移除 scratch/ 目录、recovered_handlers.rs 及调试日志

  前端:
  - 新建 CustomSelect 可复用组件,替换全部原生 select
  - LibraryPanel:同步按钮反馈动画、下载失败/无资源状态筛选与计数、
    文献类型筛选、状态优先排序、搜索一键清空
  - 详情弹窗:错误诊断展示、手动 PDF/HTML 上传区、无资源标记/恢复
  - SearchPanel:扩展文献类型徽章、下载失败状态提示
  - SyncPanel:同步启动乐观 UI 更新、日志容器内自动滚动
  - Tab 状态 localStorage 持久化、弹窗 z-index 修复
This commit is contained in:
fmq
2026-06-11 22:56:36 +08:00
parent cd6af4f995
commit 8cc2b74abc
43 changed files with 4512 additions and 3879 deletions
+56 -1
View File
@@ -1,6 +1,6 @@
# AstroResearch Design Systems / 设计系统与交互体验
AstroResearch 的前端界面设计坚持未来科技感与学术沉浸的理念,结合了现代网页设计的高级质感。
AstroResearch 的前端界面设计坚持"未来科技感与学术沉浸"的理念,结合了现代网页设计的高级质感。
---
@@ -15,6 +15,40 @@ AstroResearch 前端目前重构并统一为**高对比度浅色纯中文学术
| **主背景** | 纯净冷灰白 (`#f1f5f9`) | 深石板灰/接近纯黑 (`#0f172a`) | 控制台按钮 (`.btn-console` / `.btn-console-primary`) | 扁平极简实边框设计 |
| **卡片/容器** | 纯白背景 (`#ffffff`),实线灰色边框 (`#e2e8f0`) | 辅助灰 (`#64748b`) | 指示灯:深宝石绿 (就绪) / 灰石色 (未解析) | 微卡片投影效果 |
### 1.2 文献状态色彩编码
馆藏面板中的文献卡片使用统一的角标色彩编码来区分不同状态:
| 状态 | 背景色 | 文本色 | 含义 |
|:---|:---|:---|:---|
| **已翻译** | 翡翠绿 `bg-emerald-50` | `text-emerald-700` | 文献已解析并完成中英对照翻译 |
| **已解析** | 天蓝 `bg-sky-50` | `text-sky-700` | 文献正文已解析为 Markdown |
| **已下载** | 靛蓝 `bg-indigo-50` | `text-indigo-700` | PDF/HTML 物理文件已下载 |
| **未下载** | 琥珀 `bg-amber-50` | `text-amber-700` | 尚未开始下载 |
| **下载失败** | 玫瑰红 `bg-rose-50` | `text-rose-700` | 自动下载失败,悬浮显示原因 |
| **无资源** | 石板灰 `bg-slate-100` | `text-slate-600` | 用户手动标记为无全文资源 |
### 1.3 文献类型徽章
检索与馆藏面板中的文献类型徽章采用差异化色彩编码,当前支持 16 种文献类型:
| 类型 | 中文标签 | 色彩 |
|:---|:---|:---|
| article | 期刊文章 | 天蓝 |
| eprint | 预印本 | 紫色 |
| proceedings / inproceedings | 会议论文/集 | 橙色 |
| proposal | 观测提案 | 玫瑰红 |
| abstract | 会议摘要 | 石板灰 |
| catalog / dataset | 星表数据 | 靛蓝 |
| software | 软件代码 | 青绿 |
| phdthesis / mastersthesis | 博士/硕士论文 | 青色 |
| circular | 天文电报 | 橙色 |
| book / inbook | 学术专著/图书章节 | 翡翠绿 |
| editorial | 期刊社论 | 石板灰 |
| erratum | 勘误说明 | 红色 |
| techreport | 技术报告 | 青色 |
| 其他 | 其他文献 | 默认灰 |
---
## 2. 核心交互组件 (Key Interactive Components)
@@ -42,3 +76,24 @@ graph LR
- **结构化排版**:中英文双栏段落基准对齐,完美融合 `rehype-katex` 数学公式渲染和 `html2md` 图片嵌入。
- **划词标注与高亮**:鼠标选中阅读器任意段落词句,即刻浮现气泡菜单(支持 4 种高亮配色)。
- **浮动词汇浮屠**:检测到英文正文中含有天文学专业词汇时,自动显示下划线,悬浮可阅读中文释义对照。
### 2.3 CustomSelect 可复用下拉组件
- **替代原生 `<select>`**:所有下拉选择器(状态筛选、类型筛选、排序方式、检索条件组合、分页条数等)统一使用自研 `CustomSelect` 组件。
- **交互特性**
- 点击外部区域自动关闭
- 选中项高亮显示
- 展开/收起过渡动画
- 与 Tailwind CSS 控制台风格完全融合
- 支持禁用状态
### 2.4 馆藏管理面板 (Library Panel)
- **多维度筛选**:支持按任务状态(全部/已下载/已解析/已翻译/未下载/下载失败/无资源)、文献类型(13 种)及高级元数据(作者/年份/期刊)组合筛选。
- **状态优先排序**:默认排序按处理状态降序(已翻译 > 已解析 > 已下载 > 其他),状态相同时按导入时间排列。
- **同步反馈**:点击"重新同步馆藏"按钮后显示加载动画和成功/失败反馈条。
- **搜索一键清空**:检索输入框右侧提供清空按钮。
### 2.5 文献详情弹窗 (Paper Detail Dialog)
- **下载错误诊断**:当文献存在下载失败记录时,弹窗底部展示红色诊断区域,分别显示 PDF 和 HTML 的具体失败原因。
- **无资源标记**:当文献被标记为"无有效全文资源"时,显示琥珀色提示区域,并提供"恢复自动下载"按钮。
- **手动文件上传区**:底部提供 PDF 和 HTML 两个拖拽/点击上传区域,支持绕过防爬限制手动导入文献文件。
- **外链活跃追踪**:点击 Bibcode/DOI/arXiv 外部链接时自动上报活跃文献 Bibcode,用于浏览器书签直推场景。