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

5.5 KiB
Raw Blame History

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用于浏览器书签直推场景。