注:所讲并非绝对,如有变动请及时修改。
注意 ❗ 在写代码之前,强烈建议阅读 clean-code-python 或类似指导。始终记住,代码写出来不止你一个人看。
尽量使用 RESTful 的 convention(虽然这不太可能)。
应该使用 utils.respond_error
和 utils.respond_success
返回错误和成功,以保证 API 的一致性。
按照习惯,一个模块内,所有的路由放在 views.py
内,所有 SQLAlchemy 的 model definition 都放在 models.py
内。
对于不敏感的参数,直接在 config/settings.toml
下新建一块 [default.name]
,然后直接用 settings.name.CONFIG_NAME
调用即可。
如果涉及敏感信息,应该写入 config/.secrets.local.yaml
。该文件可从云函数后台代码获取,修改后根据 scripts/secret_encoder.py
完成部署。
最好是 Angular's conventional commit,但是不做强制要求。
但是必须避免废话式的提交信息,比如 fix some bugs
, enhance
。还是那句活,几个月后看到满屏都是 bug fix
怎么知道哪个是哪个?
如果是使用 GUI 提交,请务必查看相应的 log
如果是代码的问题,建议对应信息检查后修复。
如果是 pre-commit 无法跑起来,检查 .git/hooks/pre-commit
的配置,尤其是 INSTALL_PYTHON
项。
功能性模块与基础性模块相区别。基础性模块是每项活动都会用到的模块,比如用户管理、数据库管理等;功能性模块是具体活动功能的实现。
约定功能性的模块均放在 api
下,由 api/__init__.py
控制是否 import 该模块。
工作流大致如下:
- 从 master 新建一个分支
- 在
api
下新建文件夹,模仿已有的功能写好业务代码。然后修改api/__init__.py
,在modules
中加上新建的模块名称。 - 在
tests/api/<模块名称>
下新建测试文件,完成基本的 API 测试。 - 如可以,在本地开启前端后端进行联合调试
- 【如有在线全真调试需求】从 master 新建 dev 分支
- 【如有在线全真调试需求】合并进 dev,调试 dev,汇总问题并修改
- 从 dev 或新建的分支向 master 发起 PR
- review 通过后,根据 commit 是否混乱,决定是 create merge commit 还是 squash merge
- 该新建分支与 dev 分支的历史使命已经结束,删除以保持整洁
- 如果上线后有问题,可以视时间紧迫与代码修改方便程度,选择直接在腾讯云在线修改代码还是重复以上步骤
- 功能使命结束,适时将 master 上的
modules
回复原样即可
在本地开发中,最常见的是在数据库中没有一张对应的表。那么管理员的微信授权还不能完成,则应该使用 /tasks/db/create?token=<TASK_AUTH_TOKEN>
完成数据库表的初始创建。
在维护中,最常见的情况是新建了 SQLAlchemy 的 Model,在数据库中创建对应的表。这时可以使用 wxsls-pages
配套的 admin 页面,即 /dba/*
接口完成创建。该接口还有上传数据、清空数据表、migrate 数据表的功能,在维护中会很有用。