From e22df36d3f13924e8acd6e9f59d35e201b76f852 Mon Sep 17 00:00:00 2001 From: hoteas <925970985@qq.com> Date: Mon, 27 Jul 2026 07:46:38 +0800 Subject: [PATCH] =?UTF-8?q?chore(rules):=20=E5=B7=A5=E4=BD=9C=E6=B5=81?= =?UTF-8?q?=E9=97=A8=E7=A6=81=E6=8E=AA=E8=BE=9E=E5=AF=B9=E9=BD=90=EF=BC=8C?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E6=8C=89=E9=9C=80=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .cursor/rules/hotime-doc-tdd.mdc | 35 ++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/.cursor/rules/hotime-doc-tdd.mdc b/.cursor/rules/hotime-doc-tdd.mdc index c7d4a46..c7d6cbc 100644 --- a/.cursor/rules/hotime-doc-tdd.mdc +++ b/.cursor/rules/hotime-doc-tdd.mdc @@ -1,32 +1,45 @@ --- -description: HoTime Doc-Driven + TDD 总门禁 -alwaysApply: true +description: HoTime Doc-Driven + TDD 门禁 +alwaysApply: false --- # HoTime 工作流 -**不可跳过。** Doc-Driven 与 TDD 缺一不可。日常五步:①定位 → ②修改 → ③补/改行为测试并针对性跑至绿 → ④边界 → ⑤回写文档。未测绿或未回写 = **未完成**。中文回复。 +**不可跳过。** Doc-Driven 与 TDD 缺一不可。日常五步:①定位 → ②修改 → ③补/改行为测试并针对性跑至绿 → ④跨模块边界 → ⑤回写文档。未测绿或未回写 = **未完成**。中文回复。 ## 定位 -- 先锁约 **3~4 个文件**(文档 1~2 + 源码 1~2);跨模块扩到合计约 **4~6**,禁止散改全仓。本次新增/修改的**测试文件计入锁定**。先读相关 docs 再改。口径不清 **先问**。 +- 先锁约 **3~4 个文件**(文档 1~2 + 源码 1~2);跨模块扩到合计约 **4~6**,禁止散改全仓。本次新增或修改的**测试文件计入锁定范围**。先读流程与规则边界再改。口径不清 **先问**。 - 入口:`docs/README.md`、仓根 `README.md`;测试细则 → `docs/Testing_API测试框架.md` / skill `hotime-tdd-testing`。 +- 配置 / 部署 / 发版 / 密钥 / 脚本等运维操作:**先查仓内相关 docs**(计入锁定)定可改边界与回滚点,未读禁动手;偏离文档先说明并回写。 ## 改与测 -- 改接口、ctr、业务逻辑或测试框架:对应 `*_test` **无则补、有则改**,跑通至绿;**禁**只改实现不补测;**禁全量**;编译不算测完。 -- 样板(`example` 根):`go test ./app/ -count=1 -run 'TestApi/app//'`。可收窄到子用例;**改哪测哪**。用户要求全量或以编译代替行为测时,**明确拒绝**并仍按本条。 +- 改接口、ctr、业务逻辑或测试框架:对应 `*_test` 中**无则补、有则改**用例,并跑通至绿;**禁**只改实现不补测;**禁全量**;编译不算测完。 +- 单接口样板(`example` 根):`go test ./app/ -count=1 -run 'TestApi/app//'`。可收窄到 1~N 个相关子用例(更长 `-run`;名以 `*_test.go` / `go test -list` 为准);**改哪测哪**。 +- 用户要求全量或以编译代替行为测时,**明确拒绝**并仍按本条执行。 ## 文档 -- **有旧改旧**;无篇目且确有缺口才新建。禁不查就建、禁同一入口重复建档。旧文只补受影响节;只写最终态;对照源码,禁臆测。 -- 路径用相对 Markdown 链接;**禁** `D:\`、`file:///`、`~/`。新建须回写 `docs/README.md`。 +- **有旧改旧**;无篇目且确有缺口才新建,禁不查就建、禁同一入口重复建档;旧文日常只补受影响节。 +- 业务/工程文写**流程与口径、规则边界、职责与影响、怎么测**,字段按需、必要处配 mermaid;**禁** UI 皮相与实现转法(for/if、组包细节堆砌);对照源码是核验不是抄写。只写最终态、禁臆测。 +- **触改即升级**:回写正文时该篇明显不合规 → 先通读全文并核验源码/测试/必要上下游,**整篇重写**为该入口完整最终态;**禁**删成只剩本次内容、禁借机扫仓瘦身。 +- 路径用相对 Markdown 链接;**禁**绝对路径、`file:///`、`~/`。archive / 审计目录 **不作**依据。新建须回写 `docs/README.md`。 + +## Git 合并冲突 + +- 解冲突时:**禁止**用 `ours` / `theirs` 或「以一侧为准」整文件覆盖,从而丢掉另一侧有效改动。 +- **尽量保存两边代码**:对照两侧 diff,把两边意图合进同一最终文件。 +- **业务冲突由 AI 合成**:读懂两边改动后产出可运行结果;仅当同一字段互斥才给出合成结论,并在回报里说明取舍理由。 +- modify/delete:先判断删除侧是否为有意清理、修改侧是否仍有业务价值;能保留则保留或迁到合理路径,禁不读 diff 就整侧丢弃。 +- **Swagger 例外(硬规则)**:`tpt/swagger/`、`example/tpt/swagger/` 等为测试框架生成物,**永不**纳入版本管理、**永不**为 swagger 解冲突或花精力合并;遇相关冲突直接按「移出跟踪 + 忽略」处理。 ## 回复 -- 先结论;摘要 + 文档路径 + **改动定位(文件·位置·原因)**;禁大段复述 docs。 -- 凡改代码或报完成:末尾必须一行 `【门禁】锁定:… | 补测并跑绿:是/否 | 文档回写:是/否/无 | 新建or旧文:…`;缺一不可。闲聊不要求。 +- 先结论;对话摘要 + 文档路径 + **改动定位(文件·位置·原因)**;禁大段复述 docs。 +- 排障四层:正常行为 → 断点 → 故障点 → 修正与复验。 +- 凡改代码或报完成:末尾必须一行 `【门禁】锁定:… | 补测并跑绿:是/否 | 文档回写:是/否/无 | 新建or旧文:…`;缺一不可。闲聊不要求。勾选空洞/矛盾/丢格式 → 宜新开窗口。 ## 批量补文档(仅整包) -一文一题;最少 2 轮自检。日常小改不适用。 +一文一题;按分型写完整,密度自检以「无 UI 皮相 / 无实现复述」为准;最少 2 轮自检。日常小改不适用。