datai/docs/archive/prompts/028-file-infrastructure-enums.md

236 lines
8.2 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.

# Prompt - 基础设施和枚举定义实现
## 输入引用
引用相关的 docs 文档链接:
- [REQ-011.md](../requirements/REQ-011.md) - 父需求文档
- [REQ-011-1.md](../requirements/REQ-011-1.md) - 子需求文档
- [0027-file-infrastructure-enums.md](./0027-file-infrastructure-enums.md) - 架构决策记录 (ADR)
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
## Context Maps
强制列出本次 Prompt 依赖的 Canvas 文件:
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
- **相关节点**: [通用常量](node_common_constant) - 定义Salesforce相关的常量
- **相关节点**: [通用异常](node_common_exception) - 定义Salesforce相关的异常类
## 目标
本提示词的目标是指导 AI 实现 REQ-011-1 需求,在 datai-salesforce-common 模块定义文件上传下载所需的基础设施,包括:
1. **文件对象类型枚举FileObjectType**:支持 Attachment、ContentDocument、Document 三种类型
2. **文件上传下载参数类**FileUploadRequest、FileDownloadRequest、FileUploadResponse、FileDownloadResponse
3. **文件上传下载异常类**FileUploadException、FileDownloadException、FileSizeExceededException、FileTypeNotSupportedException、FileObjectNotFoundException、OrgConfigNotFoundException、FileValidationException
4. **文件验证工具类FileValidationUtils**:提供文件大小和类型的验证方法
预期效果:
- 所有基础设施类能够正常工作,提供完整的枚举、参数、异常和验证功能
- 代码符合项目编码规范,有清晰的注释
- 代码结构清晰,易于扩展和维护
- 代码易于单元测试
## 输出格式
### 代码输出格式
**语言**Java 22
**代码结构**
```
datai-salesforce-common/src/main/java/com/datai/common/
├── enums/
│ └── FileObjectType.java
├── exception/
│ ├── FileErrorCode.java
│ ├── FileUploadException.java
│ ├── FileDownloadException.java
│ ├── FileSizeExceededException.java
│ ├── FileTypeNotSupportedException.java
│ ├── FileObjectNotFoundException.java
│ ├── OrgConfigNotFoundException.java
│ └── FileValidationException.java
├── param/
│ ├── FileUploadRequest.java
│ ├── FileDownloadRequest.java
│ ├── FileUploadResponse.java
│ └── FileDownloadResponse.java
└── utils/
└── FileValidationUtils.java
```
**代码要求**
- 使用 Lombok 注解简化代码(@Data、@Builder、@NoArgsConstructor、@AllArgsConstructor、@Slf4j
- 使用 JSR-303 验证注解(@NotNull、@NotBlank、@Size、@Valid
- 使用 Javadoc 注释,包含参数说明、返回值说明、异常说明
- 遵循阿里巴巴 Java 开发手册
- 代码行数不超过 200 行/文件
### 单元测试输出格式
**语言**Java 22 + JUnit 5 + Mockito
**测试结构**
```
datai-salesforce-common/src/test/java/com/datai/common/
├── enums/
│ └── FileObjectTypeTest.java
├── exception/
│ ├── FileUploadExceptionTest.java
│ ├── FileDownloadExceptionTest.java
│ ├── FileSizeExceededExceptionTest.java
│ ├── FileTypeNotSupportedExceptionTest.java
│ ├── FileObjectNotFoundExceptionTest.java
│ ├── OrgConfigNotFoundExceptionTest.java
│ └── FileValidationExceptionTest.java
├── param/
│ ├── FileUploadRequestTest.java
│ ├── FileDownloadRequestTest.java
│ ├── FileUploadResponseTest.java
│ └── FileDownloadResponseTest.java
└── utils/
└── FileValidationUtilsTest.java
```
**测试要求**
- 使用 JUnit 5 的 @Test、@ParameterizedTest、@Nested 等注解
- 使用 Mockito 的 @Mock、@InjectMocks 等注解
- 测试覆盖率 ≥ 90%
- 测试用例包含:正常场景、边界场景、异常场景
### 文档输出格式
**格式**Markdown
**文档要求**
- 为每个类提供 Javadoc 注释
- 为每个公共方法提供 Javadoc 注释
- 为每个枚举值提供 Javadoc 注释
- 为每个异常类提供使用示例
## 约束
### 技术栈限制
- 必须基于现有的 Spring Boot 3 技术栈
- 必须使用 Java 22
- 必须使用 Lombok如果项目已引入
- 必须使用 JSR-303 Bean Validation
- 必须使用 JUnit 5
- 必须使用 Mockito
### 架构约束
- 必须遵循 Authentication.canvas 中定义的架构和调用关系
- 必须在 datai-salesforce-common 模块下实现
- 必须遵循现有的异常处理机制
- 必须遵循现有的日志记录规范
### 依赖约束
- 可以引入 Apache Tika 依赖(用于文件 MIME 类型检测)
- 不能引入与项目现有依赖冲突的依赖
### 性能约束
- 文件验证方法必须在 100ms 内完成
- 枚举转换方法必须在 10ms 内完成
- 参数验证方法必须在 50ms 内完成
### 安全性约束
- 文件类型验证必须使用白名单机制
- 文件名验证必须防止路径遍历攻击
- 文件大小验证必须防止 DoS 攻击
### 兼容性约束
- 必须兼容 Windows、Linux、macOS 操作系统
- 必须兼容 UTF-8 编码
- 必须兼容 Salesforce API v58.0+
## Rule Set
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
**具体规则**
- 必须使用 Canvas 中定义的类名和方法名
- 必须遵循 Canvas 中定义的调用关系
- 必须参考 Canvas 中的流程图逻辑
- 必须遵循现有的异常处理机制
- 必须遵循现有的日志记录规范
- 必须遵循项目编码规范
- 必须使用 Lombok 注解简化代码
- 必须使用 JSR-303 验证注解
- 必须提供完整的 Javadoc 注释
## 验收标准
### 功能完整性
- [ ] FileObjectType 枚举包含 ATTACHMENT、CONTENT_DOCUMENT、DOCUMENT 三个枚举值
- [ ] FileObjectType 枚举提供描述、文件大小限制、推荐等级等元数据
- [ ] FileObjectType 枚举提供枚举值与字符串的转换方法
- [ ] FileUploadRequest 包含所有必需字段
- [ ] FileDownloadRequest 包含所有必需字段
- [ ] FileUploadResponse 包含所有必需字段
- [ ] FileDownloadResponse 包含所有必需字段
- [ ] 所有异常类继承自 RuntimeException
- [ ] 所有异常类提供错误代码和错误消息
- [ ] FileValidationUtils 提供所有必需的验证方法
### 代码正确性
- [ ] 代码符合项目编码规范
- [ ] 代码有清晰的注释
- [ ] 代码通过 SonarQube 静态代码分析
- [ ] 代码通过 Checkstyle 检查
- [ ] 代码通过 SpotBugs 检查
### 文档准确性
- [ ] 每个类提供 Javadoc 注释
- [ ] 每个公共方法提供 Javadoc 注释
- [ ] 每个枚举值提供 Javadoc 注释
- [ ] 每个异常类提供使用示例
### 性能指标
- [ ] 文件验证方法在 100ms 内完成
- [ ] 枚举转换方法在 10ms 内完成
- [ ] 参数验证方法在 50ms 内完成
- [ ] 单元测试覆盖率 ≥ 90%
## 风险
### 输出质量风险
- **风险描述**AI 可能生成不符合项目规范的代码
- **影响程度**:中
- **缓解措施**
1. 严格遵循项目编码规范
2. 参考现有代码风格
3. 使用 Lombok 注解简化代码
4. 提供完整的 Javadoc 注释
### 技术实现风险
- **风险描述**Apache Tika 依赖可能与项目现有依赖冲突
- **影响程度**:中
- **缓解措施**
1. 使用 Maven 依赖树检查冲突
2. 必要时使用 exclusions
3. 提供备选方案(使用 Java 内置的 Files.probeContentType() 方法)
### 时间成本风险
- **风险描述**:实现所有基础设施类可能需要较长时间
- **影响程度**:低
- **缓解措施**
1. 优先实现核心类FileObjectType、参数类
2. 逐步实现异常类和验证工具类
3. 分批进行单元测试
### 其他潜在风险
- **风险描述**:枚举扩展性不足,未来可能需要支持更多文件对象类型
- **影响程度**:低
- **缓解措施**
1. 枚举设计时考虑扩展性
2. 提供清晰的扩展文档
3. 使用配置文件管理文件对象类型(备选方案)
## 使用记录
| 日期 | 使用场景 | 输入参数 | 输出结果 | 反馈 | 改进措施 |
|------|---------|---------|---------|------|----------|
| 2026-01-19 | 初始实现 | REQ-011-1 需求文档 | 待执行 | - | - |