后端:
- 将 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 修复
5.5 KiB
5.5 KiB
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 节点以防止布局凌乱)。
- 色彩微效:中心节点使用亮色光晕,参考文献与被引文献用渐变飞线标出,鼠标滑过产生平滑的高亮微动特效。
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,用于浏览器书签直推场景。