feat: add CONTRIBUTING.md, improve AGENTS.md

Signed-off-by: 晨叶梦春 <wuziqian211@126.com>
This commit is contained in:
晨叶梦春
2026-08-27 05:33:03 +08:00
parent 56b5a91bb3
commit 91a9e63183
3 changed files with 112 additions and 38 deletions
+38 -15
View File
@@ -1,19 +1,42 @@
这是一个面向 [国家中小学智慧教育平台](https://basic.smartedu.cn/) 的桌面工具,用来解析并批量下载电子课本。
# Agent 指南
深度思考,积极搜索互联网查阅最新开发文档与行业最佳实践。
确保代码可维护性,确保跨平台兼容性,避免回归,拒绝代码冗余与「屎山」堆积。
命名及时重构,新变量命名需语义清晰,同时更新相关的旧变量名。
代码意图不明确时,主动编写清晰准确的中文注释。
涉及到 UI 的调整需同时兼顾浅色与深色模式。
需要任何工具或依赖,请自行安装。
临时文件统一放在 `.tmp/` 目录(该目录已加入 `.gitignore`,不存在时自行创建)。
未被 `.gitignore` 忽略的文件不得包含敏感数据。
这是一个面向[国家中小学智慧教育平台](https://basic.smartedu.cn/)的桌面工具,用来解析并批量下载电子课本等资源。
不要为那些不可能发生的场景添加错误处理、回退逻辑或校验。应当信任内部代码以及框架提供的保证。只在系统边界处进行校验,例如用户输入、外部 API 等,防止过度工程化编程。
UI 界面上所有文案必须是站在使用者角度、可直接交付的最终产品语言,不得出现描述需求/规则/适用条件本身的元语言。
编写代码时请参考[**贡献者指南**](./CONTRIBUTING.md),遵守其中的代码格式、文案等约定。
被要求写 commit 时,只撰写 conventional commit 文案,不要执行 commit 和 push(除非用户提到),
内容应当描述最后一个「最后一个 commit → 当前工作区」的整体 diff,
而不应该提及本次实现过程中的尝试、报错、排查、返工或中间修正的迭代过程。
**深度思考,积极搜索互联网,查阅最新开发文档与行业最佳实践。**
默认无需阅读 `.devfiles/` 下的文件(除非提到),且禁止做任何修改。
若需要任何工具或依赖,请自行安装。
## 编写规则
1. 本工具支持的最低 Python 版本为 **3.10**,编写代码时请确保其能在 Python 3.10 中正常运行,例如在 f-string 嵌套字符串时应注意**引号问题**,使用类似于下述格式:
```python
f"文本 {data['item']}"
```
而不是:
```python
f"文本 {data["item"]}"
```
2. 本工具在设计上支持 Windows、Linux、macOS 操作系统,编写代码时应确保**跨平台兼容性**。
3. 确保代码**可维护性**:
- 实现新功能时应搜索已有实现,不要出现冗余代码;
- 优先执行**最小修复**,避免回归,不要重构无关代码,不要为了修复一个小问题而引入一堆大改动;
- 修复复杂问题时,应先**分析项目整体结构**再改动。
4. 修改代码后,应执行**测试与检查**。
## 结构约定
1. 临时文件统一放在 `.tmp/` 目录(该目录已加入 `.gitignore`,不存在时自行创建)。
2. 除非用户提到,否则默认无需阅读 `.devfiles/` 下的文件,且禁止做任何修改。
3. 添加/修改大功能时,应同步添加/修改 `tests/` 目录下的测试文件。
4. 未被 `.gitignore` 忽略的文件**不得包含明文 Access Token 等敏感数据**。
## Git 操作
1. 除非用户要求,否则不要执行 commit 与 push。
2. 若被用户要求写 commit,只生成遵循「**Conventional Commit**」的提交消息,内容应当描述为「最后一个 commit → 当前工作区」的**整体 diff**,而不应该提及本次实现过程中的尝试、报错、排查、返工或中间修正的迭代过程。
+69
View File
@@ -0,0 +1,69 @@
# 贡献者指南
感谢您愿意帮助改进本项目。这个项目面向**真实用户**,请尽量让每一次提交都保持清晰、可验证,并尊重国家中小学智慧教育平台及相关权利人的资源版权。
## 开始之前
- 提交问题前请**搜索**已有 [Issue](../../issues) 和 [Pull Request](../../pulls),避免重复讨论。
- 发现程序无法运行、下载失败或界面异常时,请提交 [**🐛 Bug 报告**](../../issues/new?template=bug_report.yml),并按模板补全相关信息,最好**附上错误信息截图**,以方便定位问题。
- 有新功能或改进建议时,请提交[**✨ 功能建议**](../../issues/new?template=feature_request.yml),先说明您遇到的实际问题,再描述期望做法,这样更容易判断改动是否适合放进本项目。
- **不要**在 Issue、Pull Request、提交信息或代码等地方公开 Access Token。
## 本地开发
本项目使用 **Python 3.10 或更高版本**(`X | Y` 形式的类型注解仅在该版本及以后的版本可用)。
```sh
# 克隆项目
git clone https://github.com/happycola233/tchMaterial-parser.git
cd tchMaterial-parser
# 安装依赖
python -m pip install .
# 启动应用
python ./src/main.py
```
> [!NOTE]
> 本工具使用 **Tkinter** 构建图形界面。Windows 与 macOS 的官方 Python 通常已自带,而部分 Linux 发行版需要单独安装,例如在 Debian/Ubuntu 上执行 `sudo apt install python3-tk`。
>
> 此外,精简安装的 Linux 系统可能缺少中文字体与 Emoji 字体,此时界面上可能会出现方框等异常现象。可按需安装,例如在 Debian/Ubuntu 上执行 `sudo apt install fonts-noto-cjk fonts-noto-color-emoji`。
## 测试与检查
提交 Pull Request 前,请进行测试与检查:
```sh
# 安装开发用依赖
python -m pip install pytest flake8
# 运行测试与检查
python -m pytest
python -m flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
```
当前 CI 的静态检查只拦截语法错误、未定义变量等确定性问题,不把代码风格与中文注释行长等作为强制门槛。
格式化时请遵循仓库现有风格,如使用 **4 空格**缩进、**`snake_case`** 命名约定、字符串默认使用**双引号 `"`**、**不出现尾随空格**等。
## 打包验证
修改打包配置、资源文件或程序入口时,请额外验证 PyInstaller 构建:
```sh
python -m pip install pyinstaller
pyinstaller ./tchMaterial-parser.spec
```
构建产物位于 `dist` 目录。
## 代码与文案约定
- 本工具在设计上支持 Windows、Linux、macOS 操作系统,编写代码时应确保**跨平台兼容性**。
- 命名要**准确表达意图**;重命名变量、函数或模块时,请**同步更新**相关引用。
- 意图不明显的业务逻辑可以添加**简洁中文注释**;能从代码本身读懂的内容一般不需要注释。
- 不要为了理论上不可能发生的内部状态添加复杂兜底逻辑,校验应主要放在用户输入、文件系统、网络请求、外部 API 等**系统边界**。
- 涉及 UI 的改动,需要同时检查**浅色模式与深色模式**。
- 界面文案应直接面向**用户**,避免出现描述需求、规则或适用条件本身的元语言。
- 修改代码后,确保代码中**未出现明文 Access Token 等敏感信息**,且已执行**必要的测试与检查**。
+5 -23
View File
@@ -98,27 +98,7 @@ yay -S tchmaterial-parser
### 从源码运行
若您想体验最新的改动,或是希望参与开发,可以直接从源码运行本工具,需要 **Python 3.10 或更高版本**(`X | Y` 形式的类型注解仅在该版本及以后的版本可用)。
```sh
git clone https://github.com/happycola233/tchMaterial-parser.git
cd tchMaterial-parser
pip install .
python ./src/main.py
```
> [!NOTE]
> 本工具使用 Tkinter 构建图形界面。Windows 与 macOS 的官方 Python 通常已自带,而部分 Linux 发行版需要单独安装,例如在 Debian/Ubuntu 上执行 `sudo apt install python3-tk`。
>
> 此外,精简安装的 Linux 系统可能缺少中文字体与 Emoji 字体,此时界面上可能会出现方框等异常现象。可按需安装,例如在 Debian/Ubuntu 上执行 `sudo apt install fonts-noto-cjk fonts-noto-color-emoji`。
若您想自行打包为可执行文件,可以在安装 `pyinstaller` 后执行:
```sh
pyinstaller ./tchMaterial-parser.spec
```
编译后的程序位于 `dist` 目录中。
若您想体验最新的改动,或是希望参与开发,可以直接从源码运行本工具,详见[贡献者指南](./CONTRIBUTING.md#本地开发)。
## 🛠️ 使用方法
@@ -174,7 +154,7 @@ https://basic.smartedu.cn/tchMaterial/detail?contentType=assets_document&content
})();
```
4. 复制控制台输出的 **整段 JSON**,然后在本工具中点击 “**设置 Token**” 按钮,粘贴并保存。
4. 复制控制台输出的**整段 JSON**,然后在本工具中点击 “**设置 Token**” 按钮,粘贴并保存。
> [!NOTE]
> Access Token 可能会过期,若下载失败,请重新获取并设置新的 Token。
@@ -241,10 +221,12 @@ https://basic.smartedu.cn/tchMaterial/detail?contentType=assets_document&content
</a>
</div>
## 🤝 贡献指南
## 🤝 参与贡献
如果您发现 Bug 或有改进建议,欢迎提交 **[Issue](../../issues)** 或 **[Pull Request](../../pulls)**,让我们一起完善本工具!
参与开发前,建议先阅读[贡献者指南](./CONTRIBUTING.md),了解本地开发、测试检查、Pull Request 与合规边界说明。
感谢所有为本项目做出贡献的朋友:
<div align="center">