后端:
- 将 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 修复
100 lines
5.5 KiB
Markdown
100 lines
5.5 KiB
Markdown
# 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,用于浏览器书签直推场景。
|