safety-eval-service/.cursor/rules/safety-codegen.mdc

52 lines
2.7 KiB
Plaintext
Raw Normal View History

2026-08-14 17:04:18 +08:00
---
description: 按 safety-eval-service 既定分层与枚举约定生成/修改代码(触发词:按照 safety 代码格式生成)
alwaysApply: true
---
# 按照 safety 代码格式生成
当用户说「按照 safety 代码格式生成」或根据 SQL/原型生成相关代码时,按本仓库既定格式生成,**只改任务相关文件,不动不相关代码**。
## 触发词
- 「按照 safety 代码格式生成」
## 分层与参考
对齐 `AccountController` / 机构端现有全链路Controller → Api → Executor → DomainService → Gateway → Mapper不相干功能不要生成。
参考入口:`safety-eval-adapter/.../web/AccountController.java`
机构端示例:`.../web/institution/EvalCustomerController.java`、`EvalProjectController.java`
新建清单(以表名为 Xxx
- adapter/web/XxxController.java或 institution 包下)
- client/api/XxxApi.java
- client/dto/XxxAddCmd、XxxModifyCmd、XxxPageQuery按实际需要
- client/co/XxxCO
- app/executor/XxxExecutor.java实现 Api
- app/convertor/XxxCmdConvertor.javaMapStruct勿放 change/convertor除非是备案变更
- domain/entity/XxxEntity、domain/query/XxxQuery、domain/gateway/XxxGateway、domain/service/XxxDomainService
- infrastructure/dataobject/XxxDO、mapper/XxxMapper、gatewayimpl/XxxGatewayImpl
- infrastructure/convertor/XxxDoConvertor.javaMapStruct Entity↔DO
## 转换
- 禁止手写 set() 填充 Cmd/CO/Entity/DO统一 MapStruct`componentModel = "spring"`
- 字段名一致自动映射
## orgId 与填充
- 表有 org_id 时:全链路所有实体都加 orgIdDO/Entity/AddCmd/ModifyCmd/PageQuery/DomainQuery/CO 按需要)
- 新增:`InsertFieldDefaults.apply(dataObject)`(有 orgId 时不要用 applyIgnoreOrgId
- 修改:`InsertFieldDefaults.applyForUpdate(dataObject)`
- 无 org 字段的表才用 `applyIgnoreOrgId`(如 Account
## 枚举与只存 code强约定
- 下拉/状态类字段:**库表与 DO/Entity/Cmd 只存 code**,不落 `*_name`
- 名称在 Executor/CmdConvertor 用 `XxxEnum.ofCode(code).getValue()` 填到 CO可展示
- 能复用已有枚举则复用(如 `IndustryEnum`、`ChongqingDistrictEnum`);不能复用则在 `domain/constant` 新建写法对齐现有枚举code + value + `ofCode`
- 经纬度等坐标字段Java 侧统一 `String`
- 每个带枚举的业务模块提供:`GET .../enums`,返回 `EnumOptionCO(code,name)` 列表集合(如 `EvalCustomerEnumsCO` / `EvalProjectEnumsCO`
## 其它
- 最小 diff不主动写 README/测试/注释除非要求
- 解释用中文;标识符英文
- 代码完成后回答精简:只说改了什么、怎么验
- 禁止猜测生成;字段/范围不清先问用户