|
|
# global-rules
|
|
|
|
|
|
# =========================
|
|
|
# 1. 架构与代码规范(强约束)
|
|
|
# =========================
|
|
|
|
|
|
- 严格分层,不允许跨层调用:
|
|
|
后端:Controller → Service → Mapper → Entity
|
|
|
前端:pages → components → api → utils → store
|
|
|
|
|
|
- 命名统一:
|
|
|
DB:snake_case
|
|
|
Java:camelCase + PascalCase类
|
|
|
Vue组件:PascalCase
|
|
|
权限:module:feature:action(必须与sys_menu一致)
|
|
|
|
|
|
- 代码必须具备可维护性:
|
|
|
- 不允许过度抽象
|
|
|
- 不允许无需求扩展
|
|
|
- 禁止 magic number(必须常量化)
|
|
|
|
|
|
- 注释规则:
|
|
|
关键类/接口必须说明用途 + 入参出参 + 权限
|
|
|
复杂逻辑必须说明业务规则
|
|
|
|
|
|
# =========================
|
|
|
# 2. 数据与接口契约(强一致)
|
|
|
# =========================
|
|
|
|
|
|
- 所有数据结构必须来源PRD,不得擅自修改字段/类型
|
|
|
- 接口必须先定义契约(request/response/error code)再实现
|
|
|
- 所有接口必须使用统一Response结构
|
|
|
- 所有异常必须标准化处理,不允许裸奔返回
|
|
|
|
|
|
# =========================
|
|
|
# 3. 安全与系统红线(禁止违规)
|
|
|
# =========================
|
|
|
|
|
|
- 禁止修改核心模块(权限/菜单/流程/字典/表单)除非明确PRD授权
|
|
|
- 禁止自动修改数据库结构(必须先输出SQL + 人工确认)
|
|
|
- 所有权限必须RBAC校验,不得存在无权限接口
|
|
|
- 多租户数据必须严格隔离,禁止越权查询
|
|
|
|
|
|
- 高危操作必须包含:
|
|
|
二次确认 + 操作日志 + 事务控制 + 逻辑删除(禁止物理删除)
|
|
|
|
|
|
- 禁止自动执行终端命令(rm/drop/git push -f等必须人工确认)
|
|
|
- 禁止随意升级依赖或新增未确认依赖
|
|
|
|
|
|
# =========================
|
|
|
# 4. 交付闭环(必须执行)
|
|
|
# =========================
|
|
|
|
|
|
每个任务必须完整闭环:
|
|
|
|
|
|
1. 分析问题 / 明确需求
|
|
|
2. 输出修改方案
|
|
|
3. 代码实现(单文件优先)
|
|
|
4. 给出验证方式(test / API / UI)
|
|
|
5. 提交git(Conventional Commits)
|
|
|
|
|
|
- 必须生成测试用例(接口 / UI / 边界)
|
|
|
- 必须更新相关文档(API / PRD / README)
|
|
|
- 超过100行修改必须分段review
|
|
|
|
|
|
# =========================
|
|
|
# 5. Git与协作规范
|
|
|
# =========================
|
|
|
|
|
|
- 禁止在main分支开发
|
|
|
- 必须feature分支开发
|
|
|
- 必须pull最新代码后再修改
|
|
|
- 冲突必须人工确认解决方案,不得自动合并
|
|
|
- commit必须符合:
|
|
|
feat|fix|docs|refactor(module): description + PRD引用
|
|
|
|
|
|
# =========================
|
|
|
# 6. 禁止占位与假功能
|
|
|
# =========================
|
|
|
- 禁止任何“占位UI / 敬请期待 / 未实现入口”
|
|
|
- 未实现功能 = 不渲染入口(菜单/按钮必须真实可执行)
|
|
|
- 所有交互必须可追溯到真实 API / Controller / IPC
|
|
|
|
|
|
# =========================
|
|
|
# 7. 配置与运行时单一真相(SSOT)
|
|
|
# =========================
|
|
|
- 禁止前后端/运行时双轨配置(UI/DB/Runtime必须同源)
|
|
|
- 所有可配置项必须具备三件套:
|
|
|
1) 启动参数
|
|
|
2) 注入策略
|
|
|
3) 页面回读验证
|
|
|
- 同一功能面只能有一种实现路径(禁止 JS + Native 双实现并存)
|
|
|
|
|
|
# =========================
|
|
|
# 8. 禁止静默失败(P0)
|
|
|
# =========================
|
|
|
- 所有 async 必须:
|
|
|
- log error
|
|
|
- 用户可见错误提示
|
|
|
- 可观测指标记录
|
|
|
- 禁止空 catch / 吞异常
|
|
|
- 桌面端与打包态必须分别验证(dev ≠ production)
|
|
|
|
|
|
# =========================
|
|
|
# 9. 接口与数据库契约优先(P0)
|
|
|
# =========================
|
|
|
- 必须先定义接口契约(request/response/error code)再编码
|
|
|
- 数据结构必须来自PRD,不得随意新增字段
|
|
|
- JSON字段类型必须统一(禁止同字段多类型)
|
|
|
- DB变更必须通过 migration,不允许代码先行
|
|
|
- 查询必须分页,禁止 findAll 默认全表
|
|
|
|
|
|
# =========================
|
|
|
# 10. 前端交互稳定性规则(P1)
|
|
|
# =========================
|
|
|
- 弹窗/下拉必须显式控制生命周期(禁止纯CSS状态)
|
|
|
- 所有操作必须具备:
|
|
|
loading状态 + 防重复提交 + 成功/失败反馈
|
|
|
- 列表操作禁止全量刷新(必须局部更新)
|
|
|
- 编辑/授权类操作必须回显数据
|
|
|
|
|
|
# =========================
|
|
|
# 11. 禁止重复实现与碎片化开发(P1)
|
|
|
# =========================
|
|
|
- 新功能必须先检查是否已有类似Service/Util
|
|
|
- 相似能力必须合并实现,不允许重复造轮子
|
|
|
- 禁止一个功能拆成多个无意义Step往返开发
|
|
|
|
|
|
# =========================
|
|
|
# 12. 运行时与系统稳定性(P1)
|
|
|
# =========================
|
|
|
- 所有系统必须具备明确状态机(store/lifecycle)
|
|
|
- 启动/退出必须避免异步竞态(必须可追踪)
|
|
|
- 探针/重试必须有限制(禁止无限重试/全量扫描)
|
|
|
|
|
|
# =========================
|
|
|
# 13. 环境与依赖显式管理(P1)
|
|
|
# =========================
|
|
|
- 所有依赖必须显式声明(main/renderer/preload分离)
|
|
|
- 禁止隐式依赖或运行时报错依赖缺失
|
|
|
- 打包态必须有 fail-fast 检查
|
|
|
|
|
|
# =========================
|
|
|
# 14. 交付闭环(P1)
|
|
|
# =========================
|
|
|
每个功能必须完成:
|
|
|
1. 实现
|
|
|
2. 冒烟测试
|
|
|
3. 构建验证
|
|
|
4. 至少1条E2E路径
|
|
|
5. commit记录
|
|
|
|
|
|
- 禁止只开发不验证
|
|
|
- 禁止 dev 成功但 prod 未验证
|
|
|
|
|
|
# =========================
|
|
|
# 15. DB与迁移安全(P0)
|
|
|
# =========================
|
|
|
- 所有结构变更必须 migration
|
|
|
- 必须支持空库双跑验证
|
|
|
- 禁止代码引用未存在字段
|
|
|
- 唯一键变更必须明确 delete → flush → insert
|
|
|
|
|
|
# =========================
|
|
|
# 16. 返工驱动规则(关键)
|
|
|
# =========================
|
|
|
- 同一问题修复 ≥2次 → 必须升级为架构规则
|
|
|
- ≥3次 → 必须进入 global-rules
|
|
|
- 重复bug必须转为设计问题处理,而不是补丁修复
|
|
|
|
|
|
# =========================
|
|
|
# 18. Playwright page.evaluate(P0)
|
|
|
# =========================
|
|
|
- **禁止**向 `page.evaluate` / `waitForFunction` / `locator.evaluate` 传入经 tsx/esbuild 编译的**函数引用**;构建器会注入 `__name` 等 helper,浏览器上下文未定义 → `ReferenceError: __name is not defined`
|
|
|
- 浏览器脚本须为**纯字符串**(如 `workers/rpa/kernel/browser-scripts.ts`、`workers/rpa/fix-place/browser-eval-scripts.ts`),写法 `(arg) => { ... }`,调用 `page.evaluate(script, arg)`
|
|
|
- 新增 RPA 浏览器逻辑时先加字符串脚本 + 单测断言不含 `__name`
|
|
|
|
|
|
# =========================
|
|
|
# 17.# 核心响应协议:深度思考优先
|
|
|
|
|
|
在回答任何技术问题、编写代码或调试前,**必须**严格执行以下思维流程,禁止直接给出直觉性答案:
|
|
|
|
|
|
1. **需求解构**:先分析用户真实意图、技术栈约束及潜在边界条件,而非仅看字面问题。
|
|
|
2. **方案推演**:在内部评估至少2种可行路径,权衡复杂度、性能与可维护性,选择最优解。
|
|
|
3. **风险预判**:主动识别当前方案可能的坑点(如并发安全、内存泄漏、API兼容性),并提前规避。
|
|
|
4. **验证闭环**:代码生成后需在逻辑上自洽检查,确保无语法错误、符合最佳实践且能真正解决问题。
|
|
|
|
|
|
> ⚠️ 执行要求:以上思考过程应内化于推理阶段,无需向用户展示冗长的思考标签。最终输出必须是经过验证的、可直接落地的精准答案。若问题模糊,先追问关键信息再作答,绝不猜测。
|
|
|
# =========================
|