chore: update existing rule docs with AI output schema

This commit is contained in:
qg
2026-03-30 11:19:22 +08:00
parent 03a5087260
commit 4ddae35ffb
19 changed files with 103 additions and 26 deletions

View File

@@ -0,0 +1 @@
提取需求,梳理用户角色与核心用例,确定前后端与数据库技术栈选型,输出 project_blueprint.md。

View File

@@ -0,0 +1,3 @@
读取项目蓝图,进行数据库表结构设计。按规定格式输出实体关系图和数据字典。
@02 - Design Standard/2.3 数据库与存储设计规范.md

View File

@@ -0,0 +1,4 @@
读取蓝图确认技术栈,生成标准分层目录树结构、依赖包文件(如 requirements.txt及基础配置。
@03 - Coding & Frameworks/01 - Language Coding Specification/Python 编码与开发规范.md
@03 - Coding & Frameworks/02 - Framework Development Specification/Django_DRF开发规范.md

View File

@@ -0,0 +1,4 @@
为指定模块编写核心逻辑与 API。必须遵守严格的分层原则和统一的接口响应格式。
@03 - Coding & Frameworks/02 - Framework Development Specification/Django_DRF开发规范.md
@02 - Design Standard/2.2 API 接口设计规范.md

View File

@@ -0,0 +1,3 @@
读取刚生成的业务代码,编写单元测试。必须包含完整的行为排列与外部依赖 Mock。
@04 - Quality & Review/4.1 自动化测试规范.md

View File

@@ -0,0 +1,4 @@
作为严苛的架构师,扫描当前变更代码的安全与架构漏洞,打回违规代码并直接提供修复代码块。
@04 - Quality & Review/4.2 代码审查规范.md
@04 - Quality & Review/4.3 安全编码规范.md

View File

@@ -0,0 +1,3 @@
读取项目依赖,生成多环境隔离的容器化构建脚本与 CI/CD 流水线配置文件。
@05 - Collaboration & Delivery/5.2 CI_CD 与环境部署规范.md

View File

@@ -73,6 +73,10 @@
* **事件驱动与异步解耦:** * **事件驱动与异步解耦:**
* **区分核心流与旁路流:** 主业务流程(如“用户下单”)应当是同步的;而非核心流程(如“下单后发送短信通知”、“增加积分”)应当通过**事件总线 (Event Bus)** 或 **消息队列 (MQ)** 异步解耦。 * **区分核心流与旁路流:** 主业务流程(如“用户下单”)应当是同步的;而非核心流程(如“下单后发送短信通知”、“增加积分”)应当通过**事件总线 (Event Bus)** 或 **消息队列 (MQ)** 异步解耦。
* *底线:* 旁路流的失败(如短信网关宕机)绝对不能导致主业务流程的回滚或失败。 * *底线:* 旁路流的失败(如短信网关宕机)绝对不能导致主业务流程的回滚或失败。
* **防腐层设计 (ACL \- Anti-Corruption Layer)** * **防腐层设计 (ACL \- Anti-Corruption Layer)**
* 在对接老旧的遗留系统或不可控的第三方外部 API如支付网关、SaaS 接口必须在系统边界建立防腐层Adapter/Facade * 在对接老旧的遗留系统或不可控的第三方外部 API如支付网关、SaaS 接口必须在系统边界建立防腐层Adapter/Facade
* *实践:* 将外部混乱的数据模型在防腐层转换为系统内部干净的标准模型,防止外部概念“污染”我们的核心业务代码。外部接口升级时,只需修改防腐层即可。 * *实践:* 将外部混乱的数据模型在防腐层转换为系统内部干净的标准模型,防止外部概念“污染”我们的核心业务代码。外部接口升级时,只需修改防腐层即可。
## 🤖 [附加] AI 助手执行协议 (AI Output Schema)
**绝对红线**:默认采用模块化单体架构,除非明确要求否则禁止过度微服务拆分;强制遵循下层不可反向依赖上层的单向依赖流。

View File

@@ -152,4 +152,8 @@ API 是前后端、微服务之间沟通的**核心契约**。优秀的 API 设
* 40202: 账户余额不足。 * 40202: 账户余额不足。
* 50000: 服务器内部错误通配。 * 50000: 服务器内部错误通配。
*规约:如果决定使用错误码,则禁止在代码中硬编码(如 return new Response(40102, "被冻结")),必须统一定义在 ErrorCodeEnum 枚举类中集中管理。* *规约:如果决定使用错误码,则禁止在代码中硬编码(如 return new Response(40102, "被冻结")),必须统一定义在 ErrorCodeEnum 枚举类中集中管理。*
## 🤖 [附加] AI 助手执行协议 (AI Output Schema)
**绝对红线**:接口文档必须输出为 OpenAPI 3.0 YAML 格式;所有 HTTP 接口的响应体必须强制包裹在统一的 `{code, msg, data}` JSON 结构中。

View File

@@ -83,6 +83,10 @@ Redis 虽然快,但不当的使用会导致内存泄漏和严重的并发故
* **防范缓存雪崩 (Cache Avalanche)** \* **问题:** 大量缓存在同一时刻集体过期,导致巨量请求瞬间全部打向数据库,击穿 DB。 * **防范缓存雪崩 (Cache Avalanche)** \* **问题:** 大量缓存在同一时刻集体过期,导致巨量请求瞬间全部打向数据库,击穿 DB。
* **对策:** 在设置 TTL 时,必须**加上一个随机的抖动时间**(例如,基础过期时间 2 小时 \+ 随机 0\~300 秒)。 * **对策:** 在设置 TTL 时,必须**加上一个随机的抖动时间**(例如,基础过期时间 2 小时 \+ 随机 0\~300 秒)。
* **防范缓存穿透 (Cache Penetration)** \* **问题:** 黑客恶意查询一个数据库中绝对不存在的值(如 id=-1导致缓存永远不命中所有请求全打到 DB。 * **防范缓存穿透 (Cache Penetration)** \* **问题:** 黑客恶意查询一个数据库中绝对不存在的值(如 id=-1导致缓存永远不命中所有请求全打到 DB。
* **对策:** 即使数据库返回 Null也要把这个 Null 值缓存进 Redis设置一个较短的 TTL如 5 分钟);或者引入布隆过滤器 (Bloom Filter) 提前拦截。 * **对策:** 即使数据库返回 Null也要把这个 Null 值缓存进 Redis设置一个较短的 TTL如 5 分钟);或者引入布隆过滤器 (Bloom Filter) 提前拦截。
* **防范缓存击穿 (Cache Breakdown)** \* **问题:** 某一个“极其热点”的 Key 突然过期的一瞬间,上万个并发请求发现缓存未命中,同时去查询 DB 并尝试重写缓存,导致 DB 崩溃。 * **防范缓存击穿 (Cache Breakdown)** \* **问题:** 某一个“极其热点”的 Key 突然过期的一瞬间,上万个并发请求发现缓存未命中,同时去查询 DB 并尝试重写缓存,导致 DB 崩溃。
* **对策:** 使用分布式锁(如 Redisson控制只让一个线程去查询 DB 并重建缓存,其他线程等待;或针对极度热点的数据设置“逻辑过期”而非物理过期。 * **对策:** 使用分布式锁(如 Redisson控制只让一个线程去查询 DB 并重建缓存,其他线程等待;或针对极度热点的数据设置“逻辑过期”而非物理过期。
## 🤖 [附加] AI 助手执行协议 (AI Output Schema)
**绝对红线**强制输出两部分内容1. Mermaid 格式的 ER 图2. 包含 [表名、字段名、类型、是否为空、默认值、索引说明] 的标准 Markdown 表格。

View File

@@ -124,5 +124,9 @@ def process\_large\_file(filename: str):
\# Act \# Act
user \= get\_user\_info(1) user \= get\_user\_info(1)
\# Assert \# Assert
assert user.name \== "Test" assert user.name \== "Test"
## 🤖 [附加] AI 助手执行协议 (AI Output Schema)
**绝对红线**:生成的 Python 代码必须 100% 包含 Type Hints类型注解禁止输出废话解析直接输出带规范中文注释的可用代码块。

View File

@@ -79,5 +79,9 @@ View 层仅作为路由调度、参数校验和权限决策的枢纽,绝不可
### **数据范围隔离 (防越权查看)** ### **数据范围隔离 (防越权查看)**
* **后端绝对阻断**:绝对禁止依靠前端“不显示该列表”或“隐藏入口”来做数据隔离防护。 * **后端绝对阻断**:绝对禁止依靠前端“不显示该列表”或“隐藏入口”来做数据隔离防护。
* **规范落实**:不同租户(组织、用户)的数据隔离,必须通过重写 View 的 get\_queryset() 进行彻底的 QuerySet 过滤来实现。 * **规范落实**:不同租户(组织、用户)的数据隔离,必须通过重写 View 的 get\_queryset() 进行彻底的 QuerySet 过滤来实现。
## 🤖 [附加] AI 助手执行协议 (AI Output Schema)
**绝对红线**:严格执行 Fat Service 模式。models.py 仅定义数据services.py 处理所有核心业务逻辑views.py 仅负责路由接客,绝对禁止在 View 中写复杂业务查询。

View File

@@ -72,6 +72,10 @@
### **4.1.6 质量门禁与 CI/CD 强制执行** ### **4.1.6 质量门禁与 CI/CD 强制执行**
* **本地提交前拦截**:推荐使用 Git pre-commit 钩子,在本地 Commit 前执行快速的单元测试。 * **本地提交前拦截**:推荐使用 Git pre-commit 钩子,在本地 Commit 前执行快速的单元测试。
* **CI 自动化阻断**:任何合并到主干分支(如 main, develop的 Pull Request/Merge Request必须触发 CI 流水线。 * **CI 自动化阻断**:任何合并到主干分支(如 main, develop的 Pull Request/Merge Request必须触发 CI 流水线。
* 如果自动化测试失败(红灯),或者核心代码覆盖率跌破基准线,代码审查工具必须**硬性阻断**合并按钮,不允许任何特权绕过。 * 如果自动化测试失败(红灯),或者核心代码覆盖率跌破基准线,代码审查工具必须**硬性阻断**合并按钮,不允许任何特权绕过。
## 🤖 [附加] AI 助手执行协议 (AI Output Schema)
**绝对红线**:强制使用 pytest 框架;测试用例内部必须使用注释显式划分为 `# Arrange`, `# Act`, `# Assert` 三个标准区块。

View File

@@ -86,7 +86,11 @@ Reviewer 在审查时,应当自顶向下,先看架构,再看逻辑,最
\* \*\*兼容性\*\*: \*\*\[注意\]\*\* 接口 \`POST /api/v1/refund\` 新增了必填参数 \`reason\_code\`,需前端同步发版,暂不兼容旧版 App。 \* \*\*兼容性\*\*: \*\*\[注意\]\*\* 接口 \`POST /api/v1/refund\` 新增了必填参数 \`reason\_code\`,需前端同步发版,暂不兼容旧版 App。
\* \*\*性能风险\*\*: 引入了分布式锁,预期单个退款请求耗时增加 10ms在接受范围内。 \* \*\*性能风险\*\*: 引入了分布式锁,预期单个退款请求耗时增加 10ms在接受范围内。
\#\# 🎯 自我检查 (Self Check) \#\# 🎯 自我检查 (Self Check)
\- \[x\] 本地单测全部通过。 \- \[x\] 本地单测全部通过。
\- \[x\] 没有遗留的 \`print\` 和注释掉的死代码。 \- \[x\] 没有遗留的 \`print\` 和注释掉的死代码。
\- \[x\] 已补充对应的 OpenAPI 文档注解。 \- \[x\] 已补充对应的 OpenAPI 文档注解。
## 🤖 [附加] AI 助手执行协议 (AI Output Schema)
**绝对红线**:提供安全漏洞与架构越权的排查 Checklist。规定 AI 必须逐项回复检查结果True/False一旦发现违规必须输出重构后的安全代码。

View File

@@ -66,7 +66,11 @@
* **水平越权防护 (IDOR/BOLA)** * **水平越权防护 (IDOR/BOLA)**
* 永远不要相信用户提交的资源 ID。在修改或删除任何记录如 POST /orders/123/cancel除了判断 ID 存在,**必须**在数据库查询层面加上归属校验(如 WHERE order\_id=123 AND user\_id={当前登录用户ID})。*(详见 3.2.7 数据隔离规范)*。 * 永远不要相信用户提交的资源 ID。在修改或删除任何记录如 POST /orders/123/cancel除了判断 ID 存在,**必须**在数据库查询层面加上归属校验(如 WHERE order\_id=123 AND user\_id={当前登录用户ID})。*(详见 3.2.7 数据隔离规范)*。
* **接口防刷与限流 (Rate Limiting)** * **接口防刷与限流 (Rate Limiting)**
* 对于发送短信验证码、注册、登录等极易被黑客利用进行暴力破解或“薅羊毛”的接口,必须在网关层或应用层配置**频次限制**(如同一 IP 每分钟最多 5 次,同一手机号每天最多 10 次)。 * 对于发送短信验证码、注册、登录等极易被黑客利用进行暴力破解或“薅羊毛”的接口,必须在网关层或应用层配置**频次限制**(如同一 IP 每分钟最多 5 次,同一手机号每天最多 10 次)。
* **失败提示模糊化** * **失败提示模糊化**
* 登录失败时,无论是因为“账号不存在”还是“密码错误”,**统一定义返回**:“账号或密码错误”。禁止明确告知攻击者账号是否存在,防止黑客进行“撞库”和账号枚举。 * 登录失败时,无论是因为“账号不存在”还是“密码错误”,**统一定义返回**:“账号或密码错误”。禁止明确告知攻击者账号是否存在,防止黑客进行“撞库”和账号枚举。
## 🤖 [附加] AI 助手执行协议 (AI Output Schema)
**绝对红线**:提供安全漏洞与架构越权的排查 Checklist。规定 AI 必须逐项回复检查结果True/False一旦发现违规必须输出重构后的安全代码。

View File

@@ -79,7 +79,11 @@
#### **3\. 生产发布阶段 (Deploy to Prod)** #### **3\. 生产发布阶段 (Deploy to Prod)**
* **触发方式**:在 main 分支打上符合 SemVer 规范的 Tag如 v2.1.0)。 * **触发方式**:在 main 分支打上符合 SemVer 规范的 Tag如 v2.1.0)。
* **门禁规则 (人工卡点)** * **门禁规则 (人工卡点)**
* 生产环境的部署**绝对禁止全自动触发**。 * 生产环境的部署**绝对禁止全自动触发**。
* 在 Jenkins 流水线的 Deploy to Prod 阶段前,必须设置一个 input() 审批节点。只有具备 Release 权限的运维工程师或技术 TL 在 Jenkins 界面点击“同意确认”后,才会真正触发生产环境的镜像替换。 * 在 Jenkins 流水线的 Deploy to Prod 阶段前,必须设置一个 input() 审批节点。只有具备 Release 权限的运维工程师或技术 TL 在 Jenkins 界面点击“同意确认”后,才会真正触发生产环境的镜像替换。
## 🤖 [附加] AI 助手执行协议 (AI Output Schema)
**绝对红线**:生成的 Dockerfile 必须采用多阶段构建 (Multi-stage Build) 并锁定基础镜像版本;必须配套输出标准的 `.env.example` 环境变量清单。

19
append_rules.py Normal file
View File

@@ -0,0 +1,19 @@
import os
appends = {
"02 - Design Standard/2.1 系统架构设计原则.md": "\n\n## 🤖 [附加] AI 助手执行协议 (AI Output Schema)\n\n**绝对红线**:默认采用模块化单体架构,除非明确要求否则禁止过度微服务拆分;强制遵循下层不可反向依赖上层的单向依赖流。\n",
"02 - Design Standard/2.2 API 接口设计规范.md": "\n\n## 🤖 [附加] AI 助手执行协议 (AI Output Schema)\n\n**绝对红线**:接口文档必须输出为 OpenAPI 3.0 YAML 格式;所有 HTTP 接口的响应体必须强制包裹在统一的 `{code, msg, data}` JSON 结构中。\n",
"02 - Design Standard/2.3 数据库与存储设计规范.md": "\n\n## 🤖 [附加] AI 助手执行协议 (AI Output Schema)\n\n**绝对红线**强制输出两部分内容1. Mermaid 格式的 ER 图2. 包含 [表名、字段名、类型、是否为空、默认值、索引说明] 的标准 Markdown 表格。\n",
"03 - Coding & Frameworks/01 - Language Coding Specification/Python 编码与开发规范.md": "\n\n## 🤖 [附加] AI 助手执行协议 (AI Output Schema)\n\n**绝对红线**:生成的 Python 代码必须 100% 包含 Type Hints类型注解禁止输出废话解析直接输出带规范中文注释的可用代码块。\n",
"03 - Coding & Frameworks/02 - Framework Development Specification/Django_DRF开发规范.md": "\n\n## 🤖 [附加] AI 助手执行协议 (AI Output Schema)\n\n**绝对红线**:严格执行 Fat Service 模式。models.py 仅定义数据services.py 处理所有核心业务逻辑views.py 仅负责路由接客,绝对禁止在 View 中写复杂业务查询。\n",
"04 - Quality & Review/4.1 自动化测试规范.md": "\n\n## 🤖 [附加] AI 助手执行协议 (AI Output Schema)\n\n**绝对红线**:强制使用 pytest 框架;测试用例内部必须使用注释显式划分为 `# Arrange`, `# Act`, `# Assert` 三个标准区块。\n",
"04 - Quality & Review/4.2 代码审查规范.md": "\n\n## 🤖 [附加] AI 助手执行协议 (AI Output Schema)\n\n**绝对红线**:提供安全漏洞与架构越权的排查 Checklist。规定 AI 必须逐项回复检查结果True/False一旦发现违规必须输出重构后的安全代码。\n",
"04 - Quality & Review/4.3 安全编码规范.md": "\n\n## 🤖 [附加] AI 助手执行协议 (AI Output Schema)\n\n**绝对红线**:提供安全漏洞与架构越权的排查 Checklist。规定 AI 必须逐项回复检查结果True/False一旦发现违规必须输出重构后的安全代码。\n",
"05 - Collaboration & Delivery/5.2 CI_CD 与环境部署规范.md": "\n\n## 🤖 [附加] AI 助手执行协议 (AI Output Schema)\n\n**绝对红线**:生成的 Dockerfile 必须采用多阶段构建 (Multi-stage Build) 并锁定基础镜像版本;必须配套输出标准的 `.env.example` 环境变量清单。\n",
}
for path, content in appends.items():
with open(path, "a", encoding="utf-8") as f:
f.write(content)
print("Appended rules successfully.")