Skip to content

Commit 8b0a00b

Browse files
authored
Update project_rules.md (#2083)
1 parent 1ce3e11 commit 8b0a00b

File tree

3 files changed

+101
-32
lines changed

3 files changed

+101
-32
lines changed

.claude/rules/project_rules.md

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -189,13 +189,24 @@ web/
189189
#### **1. 模型层 (`model/`)**
190190

191191
- **数据模型 (`model/xxx.go`)**:
192-
193-
- 用于定义与数据库表映射的 GORM 结构体。
194-
195-
- 结构体应继承 `global.GVA_MODEL` 以包含 `ID`, `CreatedAt`, `UpdatedAt` 等基础字段。
196-
197-
- 必须为字段添加清晰的 `json``gorm` 标签。
198-
192+
193+
- 用于定义与数据库表映射的 GORM 结构体。
194+
195+
- 结构体应继承 `global.GVA_MODEL` 以包含 `ID`, `CreatedAt`, `UpdatedAt` 等基础字段。
196+
197+
- 必须为字段添加清晰的 `json``gorm` 标签。
198+
199+
- **⚠️ 重要提醒:数据类型一致性**
200+
- **必须确保**同一字段在不同模型文件中的数据类型保持严格一致
201+
- 例如:如果某字段在数据模型中定义为特定类型,那么在请求模型、响应模型中也必须使用相同的数据类型
202+
- **常见错误**:数据模型与请求模型中同一字段使用了不同的数据类型,这会导致类型转换错误和运行时异常
203+
- **解决方案**:在设计阶段统一确定字段类型,并在所有相关模型中保持一致
204+
- **检查要点**:特别注意状态字段、ID字段、枚举字段、时间字段等容易出现类型不一致的字段
205+
- **⚠️ 指针类型处理**
206+
- 当数据模型中使用指针类型(如 `*string``*int`)而请求/响应模型中使用非指针类型时,**必须**在服务层进行正确的指针转换
207+
- **转换规则**:从指针到非指针需要检查nil值,从非指针到指针需要取地址
208+
- **示例**:数据模型 `Name *string` 转换为请求模型 `Name string` 时,需要处理 `if model.Name != nil { request.Name = *model.Name }`
209+
199210
- **请求模型 (`model/request/xxx.go`)**:
200211

201212
- 用于定义接收前端请求参数的结构体(DTOs)。
@@ -212,7 +223,12 @@ web/
212223
- **结构**: 在 `service/` 下为每个模块创建 `xxx_service.go` 文件,并在 `service/enter.go` 中注册。
213224

214225
- **函数签名**: 函数应接收具体的业务参数(如 `model.Xxx``request.XxxSearch`),并返回处理结果和 `error`
215-
226+
227+
- **⚠️ 数据类型处理注意事项**:
228+
- 在进行数据模型转换时,**必须确保**字段类型的一致性
229+
- 避免在服务层进行不必要的类型转换,应在模型设计阶段统一类型
230+
- 如果必须进行类型转换,**必须**添加详细的注释说明转换原因和逻辑
231+
216232

217233
#### **3. API层 (`api/`)**
218234

@@ -608,6 +624,12 @@ src/plugin/[插件名]/
608624
- **统一**响应格式:`{code, data, msg}`
609625
- **统一**分页格式:`{page, pageSize, total, list}`
610626
- **统一**时间格式:ISO 8601标准
627+
- **⚠️ 数据类型一致性**
628+
- 前后端对于同一字段**必须**使用相同的数据类型
629+
- 后端Go结构体中的字段类型必须与前端JavaScript/TypeScript中的类型定义保持一致
630+
- 特别注意:状态字段、ID字段、枚举值、时间字段等容易出现类型不匹配的字段
631+
- 示例:后端数值类型字段对应前端 `number` 类型,字符串类型对应 `string` 类型,布尔类型对应 `boolean` 类型
632+
- **指针类型处理**:后端Go中的指针类型在JSON序列化时会自动处理nil值,前端接收到的是对应的基础类型或null值
611633

612634
3. **错误处理**:
613635
- 后端**必须**返回标准化的错误码和错误信息
@@ -719,10 +741,11 @@ web/src/plugin/[插件名]/
719741

720742
1. **功能完整性**: 插件功能完整,满足业务需求
721743
2. **代码质量**: 代码规范,注释完整,易于维护
722-
3. **性能表现**: 响应速度快,资源占用合理
723-
4. **用户体验**: 界面友好,操作流畅,错误处理完善
724-
5. **兼容性**: 与主系统兼容,不影响其他功能
725-
6. **安全性**: 数据安全,权限控制,防止安全漏洞
744+
3. **数据类型一致性**: 前后端数据模型字段类型保持严格一致,避免类型转换错误
745+
4. **性能表现**: 响应速度快,资源占用合理
746+
5. **用户体验**: 界面友好,操作流畅,错误处理完善
747+
6. **兼容性**: 与主系统兼容,不影响其他功能
748+
7. **安全性**: 数据安全,权限控制,防止安全漏洞
726749

727750
---
728751

.cursor/rules/project_rules.md

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,18 @@ web/
195195
- 结构体应继承 `global.GVA_MODEL` 以包含 `ID`, `CreatedAt`, `UpdatedAt` 等基础字段。
196196

197197
- 必须为字段添加清晰的 `json``gorm` 标签。
198-
198+
199+
- **⚠️ 重要提醒:数据类型一致性**
200+
- **必须确保**同一字段在不同模型文件中的数据类型保持严格一致
201+
- 例如:如果某字段在数据模型中定义为特定类型,那么在请求模型、响应模型中也必须使用相同的数据类型
202+
- **常见错误**:数据模型与请求模型中同一字段使用了不同的数据类型,这会导致类型转换错误和运行时异常
203+
- **解决方案**:在设计阶段统一确定字段类型,并在所有相关模型中保持一致
204+
- **检查要点**:特别注意状态字段、ID字段、枚举字段、时间字段等容易出现类型不一致的字段
205+
- **⚠️ 指针类型处理**
206+
- 当数据模型中使用指针类型(如 `*string``*int`)而请求/响应模型中使用非指针类型时,**必须**在服务层进行正确的指针转换
207+
- **转换规则**:从指针到非指针需要检查nil值,从非指针到指针需要取地址
208+
- **示例**:数据模型 `Name *string` 转换为请求模型 `Name string` 时,需要处理 `if model.Name != nil { request.Name = *model.Name }`
209+
199210
- **请求模型 (`model/request/xxx.go`)**:
200211

201212
- 用于定义接收前端请求参数的结构体(DTOs)。
@@ -212,7 +223,12 @@ web/
212223
- **结构**: 在 `service/` 下为每个模块创建 `xxx_service.go` 文件,并在 `service/enter.go` 中注册。
213224

214225
- **函数签名**: 函数应接收具体的业务参数(如 `model.Xxx``request.XxxSearch`),并返回处理结果和 `error`
215-
226+
227+
- **⚠️ 数据类型处理注意事项**:
228+
- 在进行数据模型转换时,**必须确保**字段类型的一致性
229+
- 避免在服务层进行不必要的类型转换,应在模型设计阶段统一类型
230+
- 如果必须进行类型转换,**必须**添加详细的注释说明转换原因和逻辑
231+
216232

217233
#### **3. API层 (`api/`)**
218234

@@ -604,10 +620,16 @@ src/plugin/[插件名]/
604620
- 接口变更**必须**提前通知并更新文档
605621

606622
2. **数据格式**:
607-
- **统一**使用JSON格式进行数据交换
608-
- **统一**响应格式:`{code, data, msg}`
609-
- **统一**分页格式:`{page, pageSize, total, list}`
610-
- **统一**时间格式:ISO 8601标准
623+
- **统一**使用JSON格式进行数据交换
624+
- **统一**响应格式:`{code, data, msg}`
625+
- **统一**分页格式:`{page, pageSize, total, list}`
626+
- **统一**时间格式:ISO 8601标准
627+
- **⚠️ 数据类型一致性**
628+
- 前后端对于同一字段**必须**使用相同的数据类型
629+
- 后端Go结构体中的字段类型必须与前端JavaScript/TypeScript中的类型定义保持一致
630+
- 特别注意:状态字段、ID字段、枚举值、时间字段等容易出现类型不匹配的字段
631+
- 示例:后端数值类型字段对应前端 `number` 类型,字符串类型对应 `string` 类型,布尔类型对应 `boolean` 类型
632+
- **指针类型处理**:后端Go中的指针类型在JSON序列化时会自动处理nil值,前端接收到的是对应的基础类型或null值
611633

612634
3. **错误处理**:
613635
- 后端**必须**返回标准化的错误码和错误信息
@@ -719,10 +741,11 @@ web/src/plugin/[插件名]/
719741

720742
1. **功能完整性**: 插件功能完整,满足业务需求
721743
2. **代码质量**: 代码规范,注释完整,易于维护
722-
3. **性能表现**: 响应速度快,资源占用合理
723-
4. **用户体验**: 界面友好,操作流畅,错误处理完善
724-
5. **兼容性**: 与主系统兼容,不影响其他功能
725-
6. **安全性**: 数据安全,权限控制,防止安全漏洞
744+
3. **数据类型一致性**: 前后端数据模型字段类型保持严格一致,避免类型转换错误
745+
4. **性能表现**: 响应速度快,资源占用合理
746+
5. **用户体验**: 界面友好,操作流畅,错误处理完善
747+
6. **兼容性**: 与主系统兼容,不影响其他功能
748+
7. **安全性**: 数据安全,权限控制,防止安全漏洞
726749

727750
---
728751

.trae/rules/project_rules.md

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,18 @@ web/
195195
- 结构体应继承 `global.GVA_MODEL` 以包含 `ID`, `CreatedAt`, `UpdatedAt` 等基础字段。
196196

197197
- 必须为字段添加清晰的 `json``gorm` 标签。
198-
198+
199+
- **⚠️ 重要提醒:数据类型一致性**
200+
- **必须确保**同一字段在不同模型文件中的数据类型保持严格一致
201+
- 例如:如果某字段在数据模型中定义为特定类型,那么在请求模型、响应模型中也必须使用相同的数据类型
202+
- **常见错误**:数据模型与请求模型中同一字段使用了不同的数据类型,这会导致类型转换错误和运行时异常
203+
- **解决方案**:在设计阶段统一确定字段类型,并在所有相关模型中保持一致
204+
- **检查要点**:特别注意状态字段、ID字段、枚举字段、时间字段等容易出现类型不一致的字段
205+
- **⚠️ 指针类型处理**
206+
- 当数据模型中使用指针类型(如 `*string``*int`)而请求/响应模型中使用非指针类型时,**必须**在服务层进行正确的指针转换
207+
- **转换规则**:从指针到非指针需要检查nil值,从非指针到指针需要取地址
208+
- **示例**:数据模型 `Name *string` 转换为请求模型 `Name string` 时,需要处理 `if model.Name != nil { request.Name = *model.Name }`
209+
199210
- **请求模型 (`model/request/xxx.go`)**:
200211

201212
- 用于定义接收前端请求参数的结构体(DTOs)。
@@ -212,7 +223,12 @@ web/
212223
- **结构**: 在 `service/` 下为每个模块创建 `xxx_service.go` 文件,并在 `service/enter.go` 中注册。
213224

214225
- **函数签名**: 函数应接收具体的业务参数(如 `model.Xxx``request.XxxSearch`),并返回处理结果和 `error`
215-
226+
227+
- **⚠️ 数据类型处理注意事项**:
228+
- 在进行数据模型转换时,**必须确保**字段类型的一致性
229+
- 避免在服务层进行不必要的类型转换,应在模型设计阶段统一类型
230+
- 如果必须进行类型转换,**必须**添加详细的注释说明转换原因和逻辑
231+
216232

217233
#### **3. API层 (`api/`)**
218234

@@ -604,10 +620,16 @@ src/plugin/[插件名]/
604620
- 接口变更**必须**提前通知并更新文档
605621

606622
2. **数据格式**:
607-
- **统一**使用JSON格式进行数据交换
608-
- **统一**响应格式:`{code, data, msg}`
609-
- **统一**分页格式:`{page, pageSize, total, list}`
610-
- **统一**时间格式:ISO 8601标准
623+
- **统一**使用JSON格式进行数据交换
624+
- **统一**响应格式:`{code, data, msg}`
625+
- **统一**分页格式:`{page, pageSize, total, list}`
626+
- **统一**时间格式:ISO 8601标准
627+
- **⚠️ 数据类型一致性**
628+
- 前后端对于同一字段**必须**使用相同的数据类型
629+
- 后端Go结构体中的字段类型必须与前端JavaScript/TypeScript中的类型定义保持一致
630+
- 特别注意:状态字段、ID字段、枚举值、时间字段等容易出现类型不匹配的字段
631+
- 示例:后端数值类型字段对应前端 `number` 类型,字符串类型对应 `string` 类型,布尔类型对应 `boolean` 类型
632+
- **指针类型处理**:后端Go中的指针类型在JSON序列化时会自动处理nil值,前端接收到的是对应的基础类型或null值
611633

612634
3. **错误处理**:
613635
- 后端**必须**返回标准化的错误码和错误信息
@@ -719,10 +741,11 @@ web/src/plugin/[插件名]/
719741

720742
1. **功能完整性**: 插件功能完整,满足业务需求
721743
2. **代码质量**: 代码规范,注释完整,易于维护
722-
3. **性能表现**: 响应速度快,资源占用合理
723-
4. **用户体验**: 界面友好,操作流畅,错误处理完善
724-
5. **兼容性**: 与主系统兼容,不影响其他功能
725-
6. **安全性**: 数据安全,权限控制,防止安全漏洞
744+
3. **数据类型一致性**: 前后端数据模型字段类型保持严格一致,避免类型转换错误
745+
4. **性能表现**: 响应速度快,资源占用合理
746+
5. **用户体验**: 界面友好,操作流畅,错误处理完善
747+
6. **兼容性**: 与主系统兼容,不影响其他功能
748+
7. **安全性**: 数据安全,权限控制,防止安全漏洞
726749

727750
---
728751

0 commit comments

Comments
 (0)