感谢您有兴趣为 2c2a 项目做出贡献!本文档旨在为您提供有关如何参与项目开发的详细指导。
请遵守我们的行为准则,营造积极友好的社区环境。尊重他人观点,建设性地讨论技术问题。
- Python 3.10+
- PostgreSQL 12+ 或 MySQL 8.0+ 或 SQLite
- Redis 6.0+ (可选,用于异步任务)
- Fork 仓库
git clone https://github.com/YOUR_USERNAME/2c2a.git
cd 2c2a- 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows- 安装依赖
pip install -r requirements.txt- 配置环境变量
cp .env.example .env
# 编辑 .env 文件,配置数据库等连接信息- 数据库迁移
python manage.py makemigrations
python manage.py migrate- 创建超级用户
python manage.py createsuperuser- 安装 Tailwind CSS CLI(前端样式开发需要)
Tailwind CSS 的 standalone CLI 可执行文件未纳入 git 仓库(超过 GitHub 文件大小限制),首次 clone 后需手动下载:
# Linux x64
curl -fSL -o static/vendor/tailwindcss https://github.com/tailwindlabs/tailwindcss/releases/download/v4.2.4/tailwindcss-linux-x64
chmod +x static/vendor/tailwindcss
# Linux ARM64
curl -fSL -o static/vendor/tailwindcss https://github.com/tailwindlabs/tailwindcss/releases/download/v4.2.4/tailwindcss-linux-arm64
chmod +x static/vendor/tailwindcss
# macOS ARM64 (Apple Silicon)
curl -fSL -o static/vendor/tailwindcss https://github.com/tailwindlabs/tailwindcss/releases/download/v4.2.4/tailwindcss-macos-arm64
chmod +x static/vendor/tailwindcss
# macOS x64 (Intel)
curl -fSL -o static/vendor/tailwindcss https://github.com/tailwindlabs/tailwindcss/releases/download/v4.2.4/tailwindcss-macos-x64
chmod +x static/vendor/tailwindcss或者直接运行构建脚本,它会自动检测平台并提示下载:
./scripts/tailwind-build.sh构建 Tailwind CSS 样式文件:
./scripts/tailwind-build.sh # 一次性构建
./scripts/tailwind-build.sh --watch # 监听模式(开发时推荐)注意:如果只是运行项目而不修改 Tailwind 样式,无需下载 CLI。
static/css/provider.css已包含构建后的样式,Django 可直接使用。
- 遵循 PEP 8 代码风格指南
- 使用 4 个空格缩进
- 变量和函数名使用 snake_case 命名法
- 类名使用 CamelCase 命名法
- 单行长度不超过 88 个字符
- 所有代码必须有适当的注释和文档字符串
- 遵循 Django 的最佳实践
- Model、View、Form 等组件遵循单一职责原则
- 使用 Django ORM 而非原生 SQL
- 正确使用 Django 信号和中间件
- HTML 使用语义化标签
- CSS 遵循 BEM 命名方法论
- JavaScript 使用 ES6+ 语法
- 遵循响应式设计原则
- 使用自定义用户模型:所有与用户的外键关联都必须通过
settings.AUTH_USER_MODEL引用,而不是直接指向auth.User - 验证码系统集成:按照项目现有的 Geetest v4 或 Turnstile 集成方式进行扩展
- WinRM 客户端封装:复用
utils.winrm_client.WinrmClient类,避免重复造轮子
main分支:稳定版本,保护分支develop分支:开发版本- 功能分支:
feature/功能名称 - 修复分支:
fix/问题描述 - 发布分支:
release/版本号
使用清晰、简洁的提交信息,遵循格式:
type(scope): 描述信息
可选的正文内容
- 更详细的描述
- 可以包含多个要点
类型包括:
feat: 新功能fix: 修复bugdocs: 文档更新style: 代码格式调整refactor: 重构代码test: 测试相关chore: 构建过程或辅助工具变动
当报告问题时,请包含以下信息:
- 详细的错误描述
- 重现步骤
- 预期行为
- 实际行为
- 环境信息(操作系统、Python 版本等)
- 相关的日志信息
- 确保您的分支基于最新的
develop分支 - 提交清晰的提交信息
- 在 PR 描述中说明变更内容
- 如果修复了某个 Issue,请在描述中提及
- 保持 PR 专注,每次只解决一个问题
- 确保 CI 检查通过
- 添加必要的测试
- 更新相关文档
- 遵循代码规范
2c2a/
├── apps/
│ ├── accounts/ # 用户管理应用
│ ├── hosts/ # 主机管理应用
│ ├── operations/ # 操作记录应用(含开户系统)
│ └── dashboard/ # 仪表盘应用
├── config/ # 配置文件
├── static/ # 静态文件
├── templates/ # 模板文件
├── utils/ # 工具函数
├── manage.py
├── requirements.txt
├── README.md
└── CONTRIBUTING.md # 本文件
- 用户管理: 自定义用户模型,支持注册、登录、验证等功能
- 主机管理: 管理云电脑主机信息,支持 WinRM 连接
- 开户系统: 用户开户申请、审核和处理流程
- 验证系统: Geetest v4 和 Turnstile 验证码集成
- WinRM 客户端: 用于远程主机管理的封装类
- 所有用户输入必须经过验证
- 使用 Django 表单进行数据验证
- 防止 SQL 注入、XSS 攻击和 CSRF 攻击
- 实施适当的权限验证
- 使用 Django 内置权限系统
- 敏感操作需二次确认
# 运行所有测试
python manage.py test
# 运行特定应用的测试
python manage.py test apps.accounts
# 运行特定测试
python manage.py test apps.accounts.tests.test_geetest- 新功能必须包含单元测试
- 修改现有功能需确保测试通过
- 重要逻辑需编写集成测试
- 函数和类必须有文档字符串
- 复杂逻辑需添加注释
- API 变更需更新相关文档
- 问题和讨论在 GitHub Issues 中进行
- 代码审查通过 Pull Request 进行
- 及时响应评论和反馈
本项目使用 GPL 2.0 许可证。提交代码即表示您同意按此许可证发布您的贡献。