docs: 发版流程拆成通用与项目两层

现象:AGENTS.md「发版本流程」里写死了本项目的文件名和命令(metadata.yaml、uv tool run
bump-my-version、uv.lock),换项目没法直接复用;手写那一行还出现了 `runm` 和 `etadata.yaml`
两处笔误。

根因:通用规则和项目实现细节混在同一节,规则文件承担了本该属于架构文档的内容。

边界:
- AGENTS.md「发版本流程」改成通用表述:确认后触发、CHANGELOG 整理、锁文件自检、发版工具一次
  完成改版本 + 提交 + 打 tag、tag 查重、发版不构建;不再出现具体文件名和命令
- docs/architecture.md 新增「发版」一节,放本项目的三处版本文件、bump-my-version 命令、
  CRLF + regex 的配置坑、改配置后先 dry-run
- docs/agent_workflow.md「项目契约和 Agent 行为规则分开」补上这次的证据,Seen 升到 2×
- 不改代码、不改版本号、不打 tag

运行了什么:git status 自查(只提交这 3 个文档文件);提交时 pre-commit 跑 ruff / web typecheck / commitizen
没跑什么:没跑 bump-my-version 真实发版;没跑测试、没构建(本次无代码改动)
This commit is contained in:
study-tool
2026-11-01 21:22:56 +08:00
parent d8808e64d9
commit 48e72ab1e7
3 changed files with 20 additions and 5 deletions
+12
View File
@@ -255,3 +255,15 @@ NOTIFY = notify.register(DaidaiPush()) # 插件 main.py 末尾注册
- key 约定:账号相关用账号 id(页面卡片「课程日志」直接显示);全局 / 系统事件用 `"system"`(右上角「系统日志」弹窗显示)。
- 时间戳、级别、格式都由 `runtime.log` 统一拼(`时间 [级别] 内容`),模块里不要自己加时间前缀。
- 前端读日志统一用 `/api/log?key=&since=`(实时)+ `/api/log/history?key=&tail=`(历史兜底),不要另起一套日志接口。
## 发版
通用流程见 `AGENTS.md`「发版本流程」;本项目的具体做法:
- 版本号三处:`metadata.yaml`、`pyproject.toml`、`uv.lock`(其中 `study-tool` 那一段),由 `pyproject.toml` 的 `[tool.bumpversion]` 统一改,不要手改。
- 发版前先 `uv lock` 自检;它若改动了 `uv.lock`,说明某个任务漏提交了锁文件,补进那次任务。
- 命令:`uv tool run bump-my-version bump patch`。工作区需干净;它一次完成改三处版本、提交 `chore(release): vX.Y.Z`、打 tag `vX.Y.Z`,不要再手动 commit 或 `git tag`。
- 发完用 `git log -1` 和 `git tag -l` 确认 tag 存在、HEAD 正确;同名 tag 已存在时工具会失败,不会覆盖。
- 前端有改动时,`pnpm build` 并提交 `static/` 要在发版前的普通提交里完成,发版步骤本身不构建。
- 改了 `[tool.bumpversion]` 配置后,先跑 `uv tool run bump-my-version bump patch --dry-run --allow-dirty -vv`,确认三个文件都会被改。
- 仓库文件是 CRLF,且 bump-my-version 默认按字面量搜索:用正则的条目必须写 `regex = true`,并且不要用 `$` 锚定行尾(`uv.lock` 那条用 `\r?\n` 兼容换行)。