Skip to content

Commit 9357bed

Browse files
committed
第二版
1 parent 4d2a2e8 commit 9357bed

6 files changed

Lines changed: 470 additions & 199 deletions

File tree

CONTRIBUTING.md

Lines changed: 94 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,178 +1,150 @@
1-
# 📖 SecRandom 贡献指南
1+
# SecRandom 贡献代码
22

3-
SecRandom 欢迎**任何人**向我们的仓库提交代码。您可以帮助我们做很多工作,包括但不限于:
3+
❤️感谢您向 SecRandom 做出贡献,您可以为 SecRandom 项目做出包括但不限于反馈 Bug、提出功能请求、贡献代码等贡献。在进行贡献前,请务必阅读以下指南。
44

5-
- 提交补丁来修复bug
6-
- 添加新功能
7-
- 优化现有的功能
8-
- 优化代码的性能
9-
- 完善文档与翻译
10-
- 更多......
5+
## 反馈 Bug
116

12-
通过阅读本指南,您将会了解为 SecRandom 贡献代码的各个流程。您还会了解使用 commit 信息进行二进制构建的方式。现在就开始吧!
7+
如果在使用 SecRandom 的过程中遇到 Bug,可以在 GitHub Issues 中提交 Bug 反馈。
138

14-
## 🚀 快速开始
9+
**请务必准确地按照 Issues 模板中的要求和示例填写相关字段**,否则开发者可能难以诊断您遇到的问题。
1510

16-
在向 SecRandom 项目贡献代码之前,请确保您已完成以下准备工作:
11+
## 提交功能请求
1712

18-
> [!NOTE]
19-
> 除了使用命令行,您还可以使用 GitHub Desktop 或您 IDE 中的内置功能/插件进行操作。
13+
如果您有关于 SecRandom 新功能的想法,欢迎在 GitHub Issues 提交功能请求。
2014

21-
1. **Fork 项目**
22-
23-
- 访问 [SecRandom GitHub 仓库](https://github.com/SECTL/SecRandom)
24-
- 点击右上角的 "Fork" 按钮创建您自己的仓库副本
25-
26-
2. **克隆仓库**
15+
## 贡献代码
2716

28-
> [!WARNING]
29-
> 确保在这一步之前,您已经将终端的工作目录切换到您想保存/修改 SecRandom 源代码的地方。
17+
在为 SecRandom 贡献代码之前,请务必阅读以下指南。
3018

31-
```bash
32-
git clone https://github.com/您的用户名/SecRandom.git
33-
cd SecRandom
34-
```
19+
### 技术栈
3520

36-
3. **添加上游仓库**
21+
在开始贡献之前,了解项目的技术栈将有助于您更快地上手:
3722

38-
```bash
39-
git remote add upstream https://github.com/SECTL/SecRandom.git
40-
```
23+
| 类别 | 技术/工具 | 用途 |
24+
|------|-----------|------|
25+
| 编程语言 | Python 3.13.5 | 项目的主要开发语言 |
26+
| 包管理器 | uv | 依赖管理和虚拟环境创建 |
27+
| UI 框架 | PySide6 + Fluent Design | 现代化桌面应用界面开发 |
28+
| 日志管理 | loguru | 高效的日志记录 |
29+
| 数据处理 | numpy & pandas | 数据处理和分析 |
30+
| 语音合成 | edge-tts | 文本转语音功能 |
31+
| Excel 处理 | openpyxl | Excel 文件导入导出 |
32+
| 安全认证 | pyotp | 双因素认证 |
4133

42-
4. **安装虚拟环境** (可选)
34+
### 开发环境搭建
4335

44-
> [!TIP]
45-
> 若您不需要运行代码以测试效果,您可以跳过这个部分。
36+
#### 1. 前置条件
4637

47-
SecRandom 使用 `uv` 管理虚拟环境。您需要先获取它再执行以下命令。您可以在 [uv官方文档](https://docs.astral.sh/uv/getting-started/) 中获取关于 `uv` 的信息。
38+
确保您的系统已安装以下软件:
4839

49-
```bash
50-
uv venv
51-
uv sync
52-
```
40+
- Python 3.13.5
41+
- Git
42+
- uv 包管理器 ([安装指南](https://docs.astral.sh/uv/getting-started/))
5343

54-
随后您可以这样运行代码(在虚拟环境中):
44+
#### 2. 准备工作
5545

56-
```bash
57-
uv run ./main.py
58-
```
46+
1. **Fork 项目**
47+
- 访问 [SecRandom GitHub 仓库](https://github.com/SECTL/SecRandom)
48+
- 点击右上角的 "Fork" 按钮,创建您自己的仓库副本
5949

60-
## 📤 提交您的贡献
50+
2. **克隆仓库**
51+
```bash
52+
git clone https://github.com/您的用户名/SecRandom.git
53+
cd SecRandom
54+
```
6155

62-
1. **创建分支**
56+
3. **添加上游仓库**
57+
```bash
58+
git remote add upstream https://github.com/SECTL/SecRandom.git
59+
```
6360

64-
```bash
65-
git checkout -b feature/功能名称
66-
```
61+
#### 3. 安装依赖
6762

68-
2. **进行修改**
63+
使用 uv 安装项目依赖:
6964

70-
- 编写您的代码
71-
- 添加必要的注释(请使用中文)
72-
- 确保遵循项目代码规范
65+
```bash
66+
uv sync
67+
```
7368

74-
3. **提交更改**
69+
#### 4. 运行项目
7570

76-
```bash
77-
git add .
78-
git commit -m "描述您的更改内容"
79-
```
71+
安装依赖后,您可以直接运行项目:
8072

81-
4. **同步上游更改**
73+
```bash
74+
uv run main.py
75+
```
8276

83-
```bash
84-
git fetch upstream
85-
git rebase upstream/master
86-
```
77+
### 贡献准则
8778

88-
5. **推送并创建拉取请求 (Pull request, PR)**
79+
**您为 SecRandom 贡献的功能须遵循以下准则:**
8980

90-
```bash
91-
git push origin feature/您的功能名称
92-
```
81+
- **稳定**:您贡献的功能需要能尽可能稳定工作。
82+
- **具有泛用性**:您贡献的功能需要面向大部分用户。
83+
- **激进功能需添加开关**:如果您贡献的功能比较激进,请添加功能开关,并默认禁用此功能。
84+
- **能用**:在提交补丁前,请在本地测试您实现的功能是否能正常使用。
85+
- 尽量不要提交仅包含文案修复的补丁。
9386

94-
- 访问您的 GitHub Fork 仓库
95-
- 点击 "Compare & pull request" (比较/拉取请求) 按钮
96-
- 填写 PR 描述并提交
87+
### 补丁质量
9788

98-
## 📋 贡献指南
89+
随着本项目的规模逐渐扩大,有些用户提交了一些低质量的补丁。这些补丁有的完全不能实现预期的功能,有的甚至根本不能通过编译,浪费了开发者的时间和精力对这些补丁进行代码审阅和问题排查。我们接受有瑕疵的补丁, **但我们希望您在提交补丁前,您的补丁至少应该满足以下的要求:**
9990

100-
### 代码规范
91+
- 实现的功能能够工作,在提交补丁前请至少在本地机器测试一次补丁的功能是否可以正常工作。
92+
- 我们不建议在没有人为干预的情况下完全地使用生成式人工智能实现您要贡献的功能。
10193

102-
- 使用中文编写代码注释,别忘记撰写 Docstring
103-
- 遵循 PEP8 倡导的风格指南,若有意异议可以查看现有的代码
104-
- 确保导入所有您已使用的类/函数/变量,不要使用 `from module import *`
105-
- 验证第三方 UI 组件与其他库中的类/函数/变量是否存在
94+
如果您持续提交低质量的补丁,我们可能会限制您继续向本项目/组织提交补丁。
10695

107-
> [!TIP]
108-
> 您可以使用 **PyRight****Ruff** 等工具检查代码是否有缺陷/代码是否符合规范。
96+
### 分支与开发周期
10997

110-
### 提交 (commit) 信息规范
98+
SecRandom 代码仓库目前具有以下分支:
11199

112-
- 使用清晰、简洁的提交信息
113-
- 以 fix, feat 等约定俗成的单词开头
114-
- 避免过于简单的描述(如:"修复bug"
100+
- `master`:SecRandom 主要开发分支。
115101

116-
> [!TIP]
117-
> 我们推荐使用[约定式提交](https://www.conventionalcommits.org/zh-hans/v1.0.0/)撰写提交信息。
102+
当开始下个版本的 SecRandom 时,会将当前的主分支分叉到对应的维护分支。在开发下一个版本的 SecRandom 过程中,也会在维护分支上并行维护当前稳定版本的功能。
118103

119-
### PR 要求
104+
由于不同开发分支上的代码接口可能存在差异。因此,**根据您做出的贡献类型,您需要选择不同的基础分支。**
120105

121-
- PR 标题应简洁明了地描述更改内容(若只有一个提交,也可以直接使用这个提交的标题)
122-
- 提供详细的更改说明,包括:
123-
- 新增/修改/删除的功能
124-
- 新增/修改版本/删除的依赖库 和 更改 Python 版本
125-
- 其他破坏性更改也请一并告知
126-
- 确保所有测试通过
127-
- 确保您修改的代码至少在您的计算机上运行正常
128-
- 关联相关的 Issue(如有)
106+
**以下类型的贡献建议以当前的维护分支为基础分支:**
129107

130-
### 最后一步......
108+
- 修复稳定版中的 Bug
109+
- 对稳定版中的功能进行小幅度的优化
131110

132-
当 SecRandom 的维护者审查了您的 PR,确保没有任何问题之后,就会将您的所贡献的代码合并到主分支。
111+
**以下类型的贡献建议以 `master` 为基础分支:**
133112

134-
现在我们 **恭喜您成为 SecRandom 贡献者的一员!**
113+
- 添加新的功能
114+
- 对代码进行重构
115+
- 其它对 SecRandom 进行较大改动的贡献
116+
- 修改README等文档
135117

136-
如果您的 PR 没有通过,也没有关系。请仔细阅读我们的维护者给出的建议并且继续努力,早有一日,您会成为 SecRandom 贡献者的一员。加油😃👍!
118+
### 提交
137119

138-
## 📖 Actions 构建工作流
120+
在本代码仓库提交时,请尽量遵守 [约定式提交](https://www.conventionalcommits.org/zh-hans/v1.0.0/) 规范。
139121

140-
若您需要测试自动构建的二进制程序,您可以阅读以下文字来获取更多信息。
122+
### 合并更改
141123

142-
### 🚀 GitHub Actions 统一构建工作流使用指南
124+
在进行合并之前,请先测试您贡献的代码,确保您贡献的代码能稳定运作。
143125

144-
SecRandom 项目使用统一的 GitHub Actions 工作流进行构建和发布,配置文件位于 `.github/workflows/build-unified.yml`。该工作流支持多种触发方式和配置选项
126+
您可以向本项目发起 [Pull Request](https://github.com/SECTL/SecRandom/pulls) 来合并您的更改。在发起 Pull Request 时,请简要地描述您做的更改,并最好附上您实现的功能的演示截图/视频
145127

146-
#### 通过提交消息触发特定构建
128+
### Actions 构建工作流
147129

148-
您可以通过在 git commit 消息中包含特定关键词来触发不同的构建行为:
130+
SecRandom 项目使用 GitHub Actions 进行自动构建和发布,配置文件位于 `.github/workflows/build-unified.yml`
149131

150-
1. **触发打包构建**
151-
- 在 commit 消息中包含 `打包` 关键词
152-
- 例如:`git commit -m "新增功能 打包"`
132+
#### 触发构建
153133

154-
2. **指定构建平台**
155-
- `win` - Windows 平台
156-
- `linux` - Linux 平台
157-
- `all` - 所有平台
158-
- 例如:`git commit -m "修复bug 打包 linux"`
134+
您可以通过以下方式触发构建:
159135

160-
3. **触发所有平台构建**
161-
- 创建符合版本号规范的 tag(格式:`v数字.数字.数字.数字`
162-
- 例如`git tag v1.2.3.4 && git push origin v1.2.3.4`
136+
1. **提交消息触发**
137+
- 在 commit 消息中包含 `开始打包` 关键词
138+
- 示例`git commit -m "新增功能 开始打包"`
163139

164-
#### 构建参数关键词说明
140+
## 📞 联系方式
165141

166-
提交消息中可以包含以下关键词来控制构建行为
142+
如果您在贡献过程中遇到任何问题或需要帮助,可以通过以下方式联系我们
167143

168-
| 关键词 | 含义 | 示例 |
169-
|--------|------|------|
170-
| `打包` | 通用打包触发 | `git commit -m "新增功能 打包"` |
171-
| `win` | Windows 平台 | `git commit -m "修复UI 打包 win"` |
172-
| `linux` | Linux 平台 | `git commit -m "优化性能 打包 linux"` |
173-
| `all` | 所有平台 | `git commit -m "大更新 打包 all"` |
144+
- 🔗 GitHub Issues:[提交问题](https://github.com/SECTL/SecRandom/issues)
145+
- 💬 QQ 群:833875216
146+
- 📧 邮箱:lzy.12@foxmail.com
174147

175-
**组合使用示例:**
148+
---
176149

177-
- `git commit -m "优化性能 打包 pi"` - 使用 PyInstaller 构建 Windows 平台
178-
- `git commit -m "修复bug 打包 pi"` - 使用 PyInstaller 构建 Linux 平台
150+
感谢您对 SecRandom 项目的支持和贡献!让我们一起打造更好的公平随机抽取系统! 🚀

README.md

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,15 @@
4242

4343
- [🎯 为什么选择公平抽取](#-为什么选择公平抽取)
4444
- [🌟 核心亮点](#-核心亮点)
45+
- [🛠️ 技术栈](#%EF%B8%8F-技术栈)
4546
- [📥 下载](#-下载)
47+
- [🚀 快速开始](#-快速开始)
4648
- [📸 软件截图](#-软件截图)
4749
- [🙏 贡献者](#-贡献者和特别感谢)
4850
- [💝 捐献支持](#-捐献支持)
4951
- [📞 联系方式](#-联系方式)
52+
- [📄 官方文档](#-官方文档)
53+
- [✨ Star历程](#-star历程)
5054

5155
## 🎯 为什么选择公平抽取
5256

@@ -65,29 +69,29 @@
6569

6670
### 🎯 智能公平抽取系统
6771

68-
-**动态权重算法**:基于抽取次数、小组、性别等多维度计算,确保真正的公平性
69-
-**冷启动保护**防止新成员权重过低,保证每个人都有平等机会
70-
-**平均值差值保护**结合平均值过滤和最大差距保护,避免极端不均抽取
71-
-**灵活配置选项**可自定义差距阈值、最小候选池大小等参数
72-
-**概率可视化**直观展示每个成员被抽中的概率,让抽取过程透明化
72+
-**动态权重算法**:基于抽取次数、小组、性别等多维度智能计算权重,确保每位成员获得真正公平的抽取机会
73+
-**冷启动保护机制**为新成员或长期未被抽中的成员提供权重保护,避免因初始权重过低而失去机会
74+
-**平均值差值保护**结合平均值过滤和最大差距保护双重机制,有效避免极端不均的抽取结果
75+
-**灵活配置选项**支持自定义差距阈值、最小候选池大小等核心参数,满足不同场景需求
76+
-**实时概率可视化**直观展示每位成员被抽中的概率变化,让抽取过程完全透明可信
7377

7478
### 🎨 现代化用户体验
7579

76-
-**优雅UI设计**基于 Fluent Design 的现代化界面,支持浅色/深色主题
77-
-**悬浮窗模式**可随时进行抽取,不影响其他工作
78-
-**语音播报**:抽取结果自动语音播报,支持自定义语音引擎
80+
-**Fluent Design 优雅界面**采用微软 Fluent Design 设计语言,支持浅色/深色主题自动切换
81+
-**便捷悬浮窗模式**可随时呼出小型悬浮窗口进行快速抽取,不影响当前工作流程
82+
-**智能语音播报**:抽取结果自动语音播报,支持多种语音引擎和自定义音色设置
7983

8084
### 🚀 强大功能集
8185

82-
-**多种抽取模式**单人/多人/小组/性别抽取,满足不同场景需求
83-
-**智能历史记录**带时间戳的详细记录,支持自动清理
84-
-**多名单管理**:支持导入/导出名单,轻松管理不同班级/团队
86+
-**多样化抽取模式**支持单人抽取、多人抽取、小组抽取、性别抽取等多种模式,满足不同场景需求
87+
-**智能历史记录**自动记录抽取时间、结果等详细信息,支持按条件筛选和自动清理过期记录
88+
-**多名单管理系统**:支持导入/导出Excel名单,轻松管理多个班级或团队的成员信息
8589

8690
### 💻 系统兼容性
8791

88-
-**全平台支持**:完美兼容 Windows 7/10/11 系统和 Linux 系统
89-
-**多架构适配**:原生支持 x64、x86 架构
90-
-**开机自启**支持开机自动启动,随时可用(Windows
92+
-**跨平台支持**:完美兼容 Windows 10/11 系统和主流 Linux 发行版
93+
-**多架构适配**:原生支持 x64 架构,适配不同硬件环境
94+
-**开机自启功能**支持设置开机自动启动,随时可用(仅Windows系统
9195

9296
## 📥 下载
9397

@@ -156,7 +160,11 @@
156160

157161
## 贡献指南与 Actions 构建工作流
158162

159-
查看我们的 [贡献指南](./CONTRIBUTING.md) 来查看更多内容!
163+
查看我们的贡献指南来了解更多内容:
164+
165+
- [简体中文](./CONTRIBUTING.md)
166+
- [English](./resources/CONTRIBUTING_EN.md)
167+
- [繁體中文](./resources/CONTRIBUTING_ZH_TW.md)
160168

161169
## ✨ Star历程
162170

0 commit comments

Comments
 (0)