感谢你考虑为 TSC-Print-Middleware 做出贡献!
本文档提供了如何为项目做出贡献的指导方针。
为了营造一个开放和友好的环境,我们承诺:
- 使用友好和包容的语言
- 尊重不同的观点和经验
- 优雅地接受建设性批评
- 关注对社区最有利的事情
- 对其他社区成员表示同理心
- 使用性化的语言或图像,以及不受欢迎的性关注或挑逗
- 捣乱/煽动性评论,人身或政治攻击
- 公开或私下骚扰
- 未经许可发布他人的私人信息
- 其他在专业环境中可被合理认为不适当的行为
如果你发现了 Bug,请:
- 检查 Issues 确认问题尚未被报告
- 创建新 Issue,使用 Bug Report 模板
- 提供详细信息:
- 复现步骤
- 预期行为
- 实际行为
- 环境信息(操作系统、Python 版本、打印机型号)
- 错误日志或截图
如果你有新功能的想法:
- 检查 Discussions 看是否已有讨论
- 创建新 Discussion 或 Issue,使用 Feature Request 模板
- 描述:
- 功能的使用场景
- 预期的实现方式
- 可能的替代方案
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 开发并测试你的更改
- 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
- 克隆仓库
git clone https://github.com/你的用户名/TSC-Print-Middleware.git
cd TSC-Print-Middleware- 创建虚拟环境
python -m venv venv
venv\Scripts\activate # Windows- 安装依赖
pip install -r requirements.txt- 运行测试
# 启动服务
python main.py
# 在另一个终端测试
curl http://localhost:8000/health- 创建分支
git checkout -b feature/your-feature-name分支命名规范:
feature/- 新功能fix/- Bug 修复docs/- 文档更新refactor/- 代码重构test/- 测试相关
- 编写代码
遵循 代码规范
- 测试代码
- 手动测试所有相关功能
- 确保不破坏现有功能
- 测试不同的输入情况
- 更新文档
如果你的更改影响了:
- API 接口 → 更新
API.md - 使用方法 → 更新
README.md - 配置选项 → 更新
config.py注释
- 提交更改
参考 提交规范
遵循 PEP 8 规范
基本规则:
# 1. 使用 4 空格缩进
def my_function():
pass
# 2. 函数和类之间空两行
class MyClass:
pass
def another_function():
pass
# 3. 导入顺序:标准库 → 第三方库 → 本地模块
import os
import sys
from fastapi import FastAPI
from printer import print_label
# 4. 使用类型提示
def print_text(text: str, qty: int = 1) -> bool:
pass
# 5. 文档字符串
def my_function(param: str) -> int:
"""
函数简短描述
Args:
param: 参数说明
Returns:
返回值说明
"""
pass# 变量和函数:snake_case
my_variable = 10
def my_function():
pass
# 类名:PascalCase
class MyClass:
pass
# 常量:UPPER_CASE
DEFAULT_WIDTH = "100"
# 私有变量/函数:前缀单下划线
def _internal_function():
pass# 单行注释:简洁明了
x = x + 1 # 增加计数器
# 多行注释:使用文档字符串
"""
这是一个多行注释
用于解释复杂逻辑
"""
# 中文注释:说明业务逻辑
# 计算打印区域的有效宽度(减去左右边距)
effective_width = width - 2 * margin- 一致的响应格式
# 成功
{
"status": "ok",
"message": "操作成功描述"
}
# 失败(使用 HTTPException)
{
"detail": "错误描述"
}- 使用 Pydantic 模型
from pydantic import BaseModel, Field
class PrintJob(BaseModel):
template: str = Field(..., description="模板名称")
qty: int = Field(1, ge=1, le=100, description="打印数量")- 详细的文档字符串
@app.post("/print")
def api_print(job: PrintJob):
"""
统一打印接口
支持的模板:
- single-text: 单行文本
- double-text: 双行文本
...
"""
pass使用 Conventional Commits 规范:
<类型>(<范围>): <简短描述>
<详细描述>
<页脚>
类型:
feat: 新功能fix: Bug 修复docs: 文档更新style: 代码格式(不影响功能)refactor: 重构test: 测试相关chore: 构建/工具相关
示例:
# 新功能
git commit -m "feat(template): 添加 image 元素支持"
# Bug 修复
git commit -m "fix(usb): 修复连接超时问题"
# 文档更新
git commit -m "docs(readme): 更新安装说明"
# 重构
git commit -m "refactor(printer): 优化坐标计算逻辑"标题:简洁明了,描述主要变更
feat: 添加图片元素打印功能
fix: 修复 USB 连接稳定性问题
docs: 完善 API 文档示例
描述:
## 变更说明
简要描述此 PR 的目的和主要变更
## 变更类型
- [ ] Bug 修复
- [x] 新功能
- [ ] 文档更新
- [ ] 代码重构
## 测试
说明如何测试这些变更:
1. 步骤 1
2. 步骤 2
3. 预期结果
## 截图(如适用)
添加截图帮助解释变更
## 检查清单
- [x] 代码遵循项目规范
- [x] 已更新相关文档
- [x] 已测试所有变更
- [x] 不破坏现有功能## Bug 描述
清晰简洁地描述 Bug
## 复现步骤
1. 执行操作 '...'
2. 点击 '...'
3. 查看 '...'
4. 出现错误
## 预期行为
描述你预期应该发生什么
## 实际行为
描述实际发生了什么
## 环境信息
- 操作系统: [例如 Windows 11]
- Python 版本: [例如 3.10.5]
- 项目版本: [例如 3.0.0]
- 打印机型号: [例如 TTE-344]
## 错误日志粘贴相关的错误日志
## 截图
如果适用,添加截图帮助解释问题
## 功能描述
清晰简洁地描述你想要的功能
## 使用场景
描述这个功能的使用场景和价值
## 建议的实现方式
如果有想法,描述你认为应该如何实现
## 替代方案
描述你考虑过的其他解决方案
## 额外信息
添加其他相关信息或截图- 启用详细日志
import logging
logging.basicConfig(level=logging.DEBUG)- 使用交互式 API 文档
访问 http://localhost:8000/docs 测试接口
- 打印调试信息
logging.info(f"变量值: {variable}")
logging.debug(f"详细信息: {details}")- 快速测试接口
# 健康检查
curl http://localhost:8000/health
# 测试打印
curl -X POST http://localhost:8000/print \
-H "Content-Type: application/json" \
-d '{"template": "single-text", "print_list": [{"text": "测试"}]}'- 使用 Python 测试脚本
创建 test_local.py:
import requests
def test_print():
response = requests.post("http://localhost:8000/print", json={
"template": "single-text",
"print_list": [{"text": "测试"}]
})
print(response.json())
if __name__ == "__main__":
test_print()如果你有任何问题:
- 📖 查看 README.md 和 API.md
- 🔍 搜索 Issues
- 💬 在 Discussions 提问
- 📧 联系维护者
感谢你的贡献!每一个 PR、Issue 和建议都让项目变得更好。
记住:好的代码不仅仅是能工作,还要易读、易维护、易扩展。
Happy Coding! 🚀