Files
g0v0-server/CONTRIBUTING.md
2025-08-22 09:37:18 +00:00

98 lines
4.2 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.
# 贡献指南
## 开发环境
为了确保一致的开发环境,我们强烈建议使用提供的 Dev Container。这将设置一个容器化的环境预先安装所有必要的工具和依赖项。
1. 安装 [Docker](https://www.docker.com/products/docker-desktop/)。
2. 在 Visual Studio Code 中安装 [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)。
3. 在 VS Code 中打开项目。当被提示时,点击“在容器中重新打开”以启动开发容器。
## 依赖管理
该项目使用 `uv` 进行快速高效的 Python 包管理。
要安装依赖项,请在终端中运行以下命令:
```bash
uv sync
```
## 代码质量和代码检查
我们使用 `pre-commit` 在提交之前执行代码质量标准。这确保所有代码都通过 `ruff`(用于代码检查和格式化)和 `pyright`(用于类型检查)的检查。
### 设置
要设置 `pre-commit`,请运行以下命令:
```bash
pre-commit install
```
这将安装 pre-commit 钩子,每次提交时会自动运行。如果任何检查失败,提交将被中止。您需要修复报告的问题并暂存更改,然后再尝试提交。
## 提交信息指南
我们遵循 [AngularJS 提交规范](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#commit-message-format) 来编写提交信息。这使得在查看项目历史记录时,信息更加可读且易于理解。
每条提交信息由 **标题**、**主体**和 **页脚** 三部分组成。
```
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
```
**类型** 必须是以下之一:
* **feat**:新功能
* **fix**:错误修复
* **docs**:仅文档更改
* **style**:不影响代码含义的更改(空格、格式、缺少分号等)
* **refactor**:代码重构
* **perf**:改善性能的代码更改
* **test**:添加缺失的测试或修正现有测试
* **chore**:对构建过程或辅助工具和库(如文档生成)的更改
* **ci**:持续集成相关的更改
**范围** 可以是任何指定提交更改位置的内容。例如 `api``db``auth` 等等。
**主题** 包含对更改的简洁描述。
## 项目结构
以下是项目主要目录和文件的结构说明:
- `main.py`: FastAPI 应用的主入口点,负责初始化和启动服务器。
- `pyproject.toml`: 项目配置文件,用于管理依赖项 (uv)、代码格式化 (Ruff) 和类型检查 (Pyright)。
- `alembic.ini`: Alembic 数据库迁移工具的配置文件。
- `app/`: 存放所有核心应用代码。
- `router/`: 包含所有 API 端点的定义,根据 API 版本和功能进行组织。
- `service/`: 存放核心业务逻辑,例如用户排名计算、每日挑战处理等。
- `database/`: 定义数据库模型 (SQLModel) 和会话管理。
- `models/`: 定义非数据库模型和其他模型。
- `scheduler/`: 包含由 APScheduler 调度的后台任务。
- `dependencies/`: 管理 FastAPI 的依赖项注入。
- `achievement.py`: 存放与成就相关的逻辑。
- `storage/`: 存储服务代码。
- `fetcher/`: 用于从外部服务(如 osu! 官网)获取数据的模块。
- `config.py`: 应用配置,使用 pydantic-settings 管理。
- `calculator.py`: 存放所有的计算逻辑,例如 pp 和等级。
- `migrations/`: 存放 Alembic 生成的数据库迁移脚本。
- `packages/`: 包含项目相关的独立包。
- `msgpack_lazer_api/`: 基于 Rust 的高性能支持 lazer APIMod 的 MessagePack 解析模块,用于与 osu!lazer 客户端通信。
- `static/`: 存放静态文件,如 `mods.json`
## API Router 规范
- `app/router/v2` 存放所有 osu! v2 API 实现,不允许添加额外的,原 v2 API 不存在的 Endpoint
- `app/router/notification` 存放所有 osu! v2 API 聊天和通知的实现,不允许添加额外的,原 v2 API 不存在的 Endpoint
- `app/router/v1` 存放所有 osu! v1 API 实现,不允许添加额外的,原 v1 API 不存在的 Endpoint
- `app/router/auth.py` 存放账户鉴权/登录的 API
- `app/router/private` 存放服务器自定义 API供其他服务使用
感谢您的贡献!