# AstroResearch Contributing Guide / 参与贡献 我们欢迎社区共同参与 AstroResearch 的开发与优化。以下是关于本地开发调试、代码规范和测试的说明。 --- ## 1. 开发者本地环境搭建 (Developer Setup) ### 后端开发环境 (Rust) 1. 准备 Rust 工具链 (Edition 2021)。 2. 安装 SQLx CLI(可选,用于生成迁移文件): ```bash cargo install sqlx-cli --no-default-features --features sqlite ``` 3. 启动开发模式下的 Rust 服务: ```bash cargo run ``` ### 前端开发环境 (React + TypeScript) 1. 进入 `dashboard` 目录,安装依赖: ```bash cd dashboard npm install ``` 2. 启动开发服务器(支持 HMR 热更新及 API 请求代理转发): ```bash npm run dev ``` --- ## 2. 项目结构约定 (Project Structure Conventions) ### 后端模块化架构 后端代码已从单文件架构重构为模块化架构: - **API 层** (`src/api/`):按职责拆分为 `papers.rs`(文献相关)、`notes.rs`(笔记相关)、`sync.rs`(同步相关)、`helpers.rs`(共享工具),通过 `mod.rs` 统一暴露 `AppState`、`StandardPaper` 和向后兼容的 `handlers` 命名空间。 - **服务层** (`src/services/`):批量同步引擎从单文件 `batch_sync.rs` 拆分为 `batch/mod.rs` + `meta.rs` + `asset.rs`,同时通过 `pub mod batch_sync` 保持路径兼容。 - **独立工具** (`src/bin/`):`health_check.rs` 作为独立二进制程序,可直接运行。 ### 前端组件化架构 - **可复用组件** (`components/`):`CustomSelect` 替代所有原生 ``。 - **新增 API 字段**:后端 `StandardPaper` 新增字段时,必须同步更新 `dashboard/src/types.ts` 中的 `StandardPaper` 接口。 --- ## 4. 测试与验证 (Testing) ### 运行后端单元测试 系统为各个下载、解析、词典分词、接口提取等模块设计了健全的测试。运行测试命令: ```bash cargo test ``` ### 运行前端校验 ```bash cd dashboard npm run build # 运行 TypeScript 类型检查及 Vite 打包编译 ``` 确保无编译 Error 或 Warn 警告后方可提交 PR。 ### 运行健康检查工具 提交前建议对本地馆藏运行健康检查,确保功能正常: ```bash cargo run --bin health_check ``` --- ## 5. 数据库迁移 (Database Migrations) 添加新的数据库字段或表时,需在 `migrations/` 目录下创建新的迁移脚本: 1. 文件命名格式:`YYYYMMDDHHMMSS_description.sql` 2. 迁移脚本会在 `cargo run` 启动时自动执行 3. 新增字段需同时在后端 `StandardPaper` 结构体和前端 `types.ts` 中同步更新