datai/docs/archive/REQ-010-2.md

227 lines
9.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Requirements - 基础实体类和Mapper创建
## 需求信息
- **需求名称**: 基础实体类和Mapper创建
- **需求类型**: 功能需求
- **需求编号**: REQ-010-2
- **父需求**: REQ-010
- **创建日期**: 2026-01-17
- **需求版本**: v1.1.0
- **需求提出人**: 系统管理员
- **需求状态**: 已完成
## 输入引用
引用相关的 docs 文档链接:
- [REQ-010.md](REQ-010.md) - Salesforce元数据拉取和部署主需求文档
- [REQ-010-1.md](REQ-010-1.md) - 数据库表结构设计和创建
- [010-metadata-retrieve-deploy-sub-requirements.md](010-metadata-retrieve-deploy-sub-requirements.md) - REQ-010子需求拆分文档
## Context Maps
强制列出本次需求依赖的 Canvas 文件:
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
- **相关节点**: [集成Mapper](node_integration_mapper) - 处理集成相关数据的持久化操作
## 需求目标
为9张数据库表创建对应的Java实体类、Mapper接口和XML映射文件使用MyBatis Plus框架为后续功能开发提供数据访问基础。
## 用户故事
### 用户角色
开发工程师
### 用户目标
为6张数据库表创建对应的Java实体类、Mapper接口和XML映射文件
### 用户价值
为后续功能开发提供数据访问基础,提高开发效率,确保代码质量和可维护性
### 用户故事格式
作为一个开发工程师,
我想要为9张数据库表创建对应的Java实体类、Mapper接口和XML映射文件
以便于为后续功能开发提供数据访问基础,提高开发效率,确保代码质量和可维护性。
## 需求描述
### 概述
本需求旨在为6张数据库表创建对应的Java实体类、Mapper接口和XML映射文件使用MyBatis Plus框架提供基础的CRUD操作。
### 详细需求
#### 1. 实体类创建
- **需求描述**: 为9张数据库表创建对应的Java实体类使用MyBatis Plus注解
- **优先级**: 高
- **验收标准**:
- 9个实体类创建成功
- 使用MyBatis Plus的@TableName注解指定表名
- 使用@TableId注解标识主键
- 使用@TableField注解处理字段映射
- 实体类字段与数据库表字段一一对应
- 处理JSON类型字段的序列化和反序列化
- 处理TEXT类型大字段
- 添加必要的注释说明
- 代码符合项目编码规范
- **依赖关系**: 依赖于REQ-010-1
- **实现建议**: 使用Lombok简化实体类代码使用Jackson处理JSON字段
#### 2. Mapper接口创建
- **需求描述**: 为9张数据库表创建对应的Mapper接口继承BaseMapper获取基础CRUD方法
- **优先级**: 高
- **验收标准**:
- 9个Mapper接口创建成功
- 继承BaseMapper获取基础CRUD方法
- 使用@Mapper注解标记Mapper接口
- 添加自定义查询方法(如果需要)
- 代码符合项目编码规范
- **依赖关系**: 依赖于实体类创建
- **实现建议**: 使用MyBatis Plus的BaseMapper根据需要添加自定义查询方法
#### 3. Mapper XML文件创建
- **需求描述**: 为9张Mapper接口创建对应的XML映射文件配置SQL映射
- **优先级**: 高
- **验收标准**:
- 9个Mapper XML文件创建成功
- XML映射文件配置正确
- namespace配置正确
- resultType配置正确
- 添加必要的注释说明
- 代码符合项目编码规范
- **依赖关系**: 依赖于Mapper接口创建
- **实现建议**: 使用MyBatis Plus的XML映射语法参考现有Mapper XML文件
## 约束
- **技术栈限制**: 必须使用MyBatis Plus框架
- **框架约束**: 必须继承BaseMapper获取基础CRUD方法
- **注解约束**: 必须使用MyBatis Plus注解@TableName、@TableId、@TableField
- **编码规范约束**: 必须遵循项目编码规范
- **依赖约束**: 必须依赖于REQ-010-1创建的数据库表
## Rule Set
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
**具体规则**
- 必须使用 Canvas 中定义的类名和方法名
- 必须遵循 Canvas 中定义的调用关系
- 必须参考 Canvas 中的流程图逻辑
## 验收标准 (Acceptance Criteria)
### 功能验收标准
#### 实体类创建
- [ ] AC1: 为9张数据库表创建对应的Java实体类
- datai_meta_org_config → DataiMetaOrgConfig
- datai_meta_task → DataiMetaTask
- datai_meta_package_item → DataiMetaPackageItem
- datai_meta_component → DataiMetaComponent
- datai_meta_component_version → DataiMetaComponentVersion
- datai_meta_job_execution → DataiMetaJobExecution
- datai_meta_deploy_history → DataiMetaDeployHistory
- datai_meta_deploy_component_result → DataiMetaDeployComponentResult
- datai_meta_job_log → DataiMetaJobLog
- [ ] AC2: 实体类使用MyBatis Plus的@TableName注解指定表名
- [ ] AC3: 实体类使用@TableId注解标识主键类型为Long
- [ ] AC4: 实体类使用@TableField注解处理字段映射
- [ ] AC5: 实体类字段与数据库表字段一一对应
- [ ] AC6: 实体类处理JSON类型字段的序列化和反序列化使用Jackson的@JsonSerialize和@JsonDeserialize
- [ ] AC7: 实体类处理TEXT类型大字段使用String类型
- [ ] AC8: 实体类添加必要的注释说明(类注释、字段注释)
- [ ] AC9: 实体类使用Lombok简化代码@Data、@Builder、@NoArgsConstructor、@AllArgsConstructor
- [ ] AC10: 实体类代码符合阿里巴巴Java开发规范
#### Mapper接口创建
- [ ] AC11: 为9张数据库表创建对应的Mapper接口
- DataiMetaOrgConfigMapper
- DataiMetaTaskMapper
- DataiMetaPackageItemMapper
- DataiMetaComponentMapper
- DataiMetaComponentVersionMapper
- DataiMetaJobExecutionMapper
- DataiMetaDeployHistoryMapper
- DataiMetaDeployComponentResultMapper
- DataiMetaJobLogMapper
- [ ] AC12: Mapper接口继承BaseMapper获取基础CRUD方法
- [ ] AC13: Mapper接口使用@Mapper注解标记
- [ ] AC14: Mapper接口添加自定义查询方法如果需要
- [ ] AC15: Mapper接口代码符合阿里巴巴Java开发规范
#### Mapper XML文件创建
- [ ] AC16: 为9张Mapper接口创建对应的XML映射文件
- DataiMetaOrgConfigMapper.xml
- DataiMetaTaskMapper.xml
- DataiMetaPackageItemMapper.xml
- DataiMetaComponentMapper.xml
- DataiMetaComponentVersionMapper.xml
- DataiMetaJobExecutionMapper.xml
- DataiMetaDeployHistoryMapper.xml
- DataiMetaDeployComponentResultMapper.xml
- DataiMetaJobLogMapper.xml
- [ ] AC17: XML映射文件namespace配置正确对应Mapper接口的全限定名
- [ ] AC18: XML映射文件resultType配置正确对应实体类的全限定名
- [ ] AC19: XML映射文件添加必要的注释说明
- [ ] AC20: XML映射文件代码符合MyBatis Plus XML映射语法
### 非功能验收标准
- [ ] AC21: 性能要求 - 实体类序列化和反序列化耗时不超过 10ms
- [ ] AC22: 性能要求 - Mapper接口查询响应时间不超过 100ms
- [ ] AC23: 安全要求 - 敏感字段client_secret、password、security_token使用@TableField(select = false)注解,默认不查询
- [ ] AC24: 可用性要求 - 实体类、Mapper接口、Mapper XML文件编译通过无错误和警告
- [ ] AC25: 可维护性要求 - 代码结构清晰,注释完整,易于理解和维护
### 测试用例
| 用例编号 | 用例描述 | 预期结果 |
|----------|----------|----------|
| TC-001 | 创建DataiMetaOrgConfig实体类 | 实体类创建成功,字段映射正确,注解使用正确 |
| TC-002 | 创建DataiMetaOrgConfigMapper接口 | Mapper接口创建成功继承BaseMapper@Mapper注解使用正确 |
| TC-003 | 创建DataiMetaOrgConfigMapper.xml文件 | XML文件创建成功namespace和resultType配置正确 |
| TC-004 | 实体类JSON字段序列化和反序列化 | JSON字段能够正确序列化和反序列化 |
| TC-005 | Mapper接口基础CRUD操作 | Mapper接口能够正确执行基础CRUD操作 |
| TC-006 | 敏感字段默认不查询 | 敏感字段client_secret、password、security_token默认不查询 |
## 风险
- **实体类映射风险**: 实体类字段映射错误可能导致数据读写失败
- **Mapper XML配置风险**: Mapper XML配置错误可能导致SQL执行失败
- **JSON字段处理风险**: JSON类型字段处理不当可能导致数据丢失
- **大字段处理风险**: 大字段处理不当可能导致性能问题
- **框架兼容风险**: MyBatis Plus版本兼容性问题
## 需求变更记录
| 日期 | 变更内容 | 变更原因 | 变更人 | 审核人 | 状态 |
|------|---------|---------|--------|--------|------|
| 2026-01-17 | 创建需求文档 | 初始需求 | 系统管理员 | - | 待审核 |
| 2026-01-17 | 补充用户故事 | 按照技能文档要求补充用户故事 | SSOT Architect | - | 待审核 |
| 2026-01-17 | 细化验收标准 | 按照技能文档要求细化验收标准添加25个具体的验收标准和6个测试用例 | SSOT Architect | - | 待审核 |
| 2026-01-18 | 更新表数量从6张到9张 | 根据数据库设计优化新增3张表datai_meta_package_item、datai_meta_component_version、datai_meta_deploy_component_result | SSOT Architect | - | 已完成 |
| 2026-01-18 | 标注需求状态为已完成 | 所有9张表的实体类、Mapper接口和XML映射文件已创建完成 | SSOT Architect | - | 已完成 |
## 相关人员
- **需求提出人**: 系统管理员 - 联系方式
- **需求负责人**: 系统管理员 - 联系方式
- **技术负责人**: 开发工程师 - 联系方式
- **测试负责人**: 测试工程师 - 联系方式
- **其他相关人员**: - 联系方式
## 评审信息
- **评审日期**: -
- **评审人员**: -
- **评审结果**: -
- **评审意见**: -
- **修改建议**: -