AstroResearch/docs/design.md
Asfmq 8cc2b74abc 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 修复
2026-06-11 22:56:36 +08:00

100 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AstroResearch Design Systems / 设计系统与交互体验
AstroResearch 的前端界面设计坚持"未来科技感与学术沉浸"的理念,结合了现代网页设计的高级质感。
---
## 1. 视觉系统 (Visual Palette)
### 1.1 高对比度浅色纯中文控制台
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)
### 2.1 引文星系图谱 (Citation Galaxy Map)
- **底层技术**:完全脱离第三方庞大的 D3/G6 依赖,基于 HTML5 `<canvas>` 开发的自研力导向算法。
- **物理特性**:支持节点排斥力、中心引力、拖拽阻尼,双击节点可以动态多层级向外衍生(最高限制 50 节点以防止布局凌乱)。
- **色彩微效**:中心节点使用亮色光晕,参考文献与被引文献用渐变飞线标出,鼠标滑过产生平滑的高亮微动特效。
```mermaid
graph LR
C((中心文献)) -->|Cites| R1((参考文献 A))
C -->|Cites| R2((参考文献 B))
B1((被引文献 X)) -->|Cites| C
B2((被引文献 Y)) -->|Cites| C
classDef center fill:#ec4899,stroke:#db2777,stroke-width:2px;
classDef ref fill:#3b82f6,stroke:#2563eb,stroke-width:1px;
classDef cite fill:#10b981,stroke:#059669,stroke-width:1px;
class C center;
class R1,R2 ref;
class B1,B2 cite;
```
### 2.2 双分栏阅读器 (Split Reader)
- **结构化排版**:中英文双栏段落基准对齐,完美融合 `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用于浏览器书签直推场景。