datai/docs/archive/REQ-011-5.md

208 lines
7.6 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 - 文件上传下载 Controller 和 API 接口
## 需求信息
- **需求名称**: 文件上传下载 Controller 和 API 接口
- **需求类型**: 功能需求
- **需求编号**: REQ-011-5
- **父需求**: [REQ-011](./REQ-011.md) - Salesforce文件上传下载功能支持Attachment、ContentDocument、Document
- **创建日期**: 2026-01-19
- **需求版本**: v1.0.0
- **需求提出人**: 系统管理员
- **需求状态**: 待审核
## 输入引用
引用相关的 docs 文档链接:
- [REQ-011.md](./REQ-011.md) - 父需求文档
- [REQ-011-1.md](./REQ-011-1.md) - 基础设施和枚举定义
- [REQ-011-2.md](./REQ-011-2.md) - Attachment 文件上传下载功能
- [REQ-011-3.md](./REQ-011-3.md) - ContentDocument/ContentVersion 文件上传下载功能
- [REQ-011-4.md](./REQ-011-4.md) - Document 文件上传下载功能
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
## Context Maps
强制列出本次需求依赖的 Canvas 文件:
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
- **相关节点**: [集成核心](node_integration_core) - 提供与Salesforce的各种连接方式
- **相关节点**: [SessionManager](node_session_manager_detail) - 会话管理,提供登录服务
## 需求目标
在 datai-salesforce-integration 模块创建 FileController提供文件上传下载的 RESTful API 接口,支持 Attachment、ContentDocument、Document 三种文件对象类型。
## 需求描述
### 概述
本需求旨在创建 FileController提供文件上传下载的 RESTful API 接口。用户可以通过 HTTP 请求上传和下载 Salesforce 的三种文件对象Attachment、ContentDocument、Document支持指定组织配置 ID。
### 详细需求
#### 1. FileController 创建
- **需求描述**: 创建 FileController提供文件上传下载的 RESTful API 接口
- **优先级**: 高
- **验收标准**:
- 定义 FileController 类
- 使用 @RestController 注解
- 使用 @RequestMapping 注解指定基础路径
- 使用 @Slf4j 注解记录日志
- 提供清晰的 API 文档注释
- **依赖关系**:
- 依赖于 REQ-011-1 的基础设施
- 依赖于 REQ-011-2、REQ-011-3、REQ-011-4 的文件上传下载 Service
- **实现建议**:
- 参考现有的 Controller 定义
- 使用 Swagger/OpenAPI 注解生成 API 文档
- 遵循 RESTful 设计规范
#### 2. 文件上传接口
- **需求描述**: 提供文件上传接口,支持三种文件对象类型
- **优先级**: 高
- **验收标准**:
- 定义 uploadFile 方法
- 使用 @PostMapping 注解
- 接口路径:/files/upload
- 支持文件对象类型参数FileObjectType
- 支持组织配置 ID 参数
- 支持文件上传MultipartFile
- 支持关联记录 ID 参数ParentId/FirstPublishLocationId/FolderId
- 支持文件名参数
- 支持描述参数(可选)
- 使用 @Valid 注解进行参数验证
- 返回统一的响应格式
- 支持三种文件对象类型Attachment、ContentDocument、Document
- 提供详细的错误信息
- 提供清晰的 API 文档
- **依赖关系**:
- 依赖于 REQ-011-1 的基础设施
- 依赖于 REQ-011-2、REQ-011-3、REQ-011-4 的文件上传下载 Service
- **实现建议**:
- 使用策略模式根据文件对象类型调用不同的 Service
- 使用 @Valid 注解进行参数验证
- 使用统一响应格式
- 使用 Swagger/OpenAPI 注解生成 API 文档
- 提供详细的错误信息
#### 3. 文件下载接口
- **需求描述**: 提供文件下载接口,支持三种文件对象类型
- **优先级**: 高
- **验收标准**:
- 定义 downloadFile 方法
- 使用 @GetMapping 注解
- 接口路径:/files/download
- 支持文件对象类型参数FileObjectType
- 支持组织配置 ID 参数
- 支持文件 ID 参数AttachmentId/ContentVersionId/DocumentId
- 支持保存路径参数
- 使用 @Valid 注解进行参数验证
- 返回文件流或文件信息
- 支持三种文件对象类型Attachment、ContentDocument、Document
- 提供详细的错误信息
- 提供清晰的 API 文档
- **依赖关系**:
- 依赖于 REQ-011-1 的基础设施
- 依赖于 REQ-011-2、REQ-011-3、REQ-011-4 的文件上传下载 Service
- **实现建议**:
- 使用策略模式根据文件对象类型调用不同的 Service
- 使用 @Valid 注解进行参数验证
- 使用统一响应格式
- 使用 Swagger/OpenAPI 注解生成 API 文档
- 提供详细的错误信息
#### 4. 参数验证和响应封装
- **需求描述**: 提供参数验证和响应封装,确保 API 接口的健壮性
- **优先级**: 高
- **验收标准**:
- 使用 @Valid 注解进行参数验证
- 提供自定义验证注解
- 提供统一的响应格式
- 提供详细的错误信息
- 提供清晰的 API 文档
- **依赖关系**:
- 依赖于 REQ-011-1 的基础设施
- **实现建议**:
- 使用 JSR-303 验证注解
- 使用自定义验证注解
- 使用统一响应格式
- 使用 Swagger/OpenAPI 注解生成 API 文档
## 约束
- **技术栈限制**: 必须基于现有的 Spring Boot 3 技术栈
- **架构约束**: 必须遵循 Authentication.canvas 中定义的架构和调用关系
- **模块约束**: 必须在 datai-salesforce-integration 模块下实现
- **认证约束**: 必须使用 SessionManager 进行会话管理和自动重新登录
- **API约束**: 必须遵循 RESTful 设计规范
- **文档约束**: 必须遵循 SSOT 方法论
- **设计模式约束**: 必须使用策略模式封装三种文件对象的上传下载逻辑
## Rule Set
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
**具体规则**
- 必须使用 Canvas 中定义的类名和方法名
- 必须遵循 Canvas 中定义的调用关系
- 必须参考 Canvas 中的流程图逻辑
- 必须使用 SessionManager 进行会话管理和自动重新登录
- 必须使用现有的认证模块进行 OAuth 认证
- 必须遵循现有的异常处理机制
- 必须遵循现有的日志记录规范
- 必须遵循 RESTful 设计规范
- 必须使用策略模式封装三种文件对象的上传下载逻辑
## 验收标准
- **功能完整性**: 文件上传下载 API 接口能够正常工作,支持三种文件对象类型
- **性能指标**:
- API 接口响应时间符合要求
- 文件上传下载不影响系统响应
- **代码规范性**:
- 代码符合项目编码规范,有清晰的注释
- 遵循 RESTful 设计规范
- 提供清晰的 API 文档
- **可维护性**:
- 代码结构清晰,易于扩展和维护
- 配置与代码分离,易于调整
- **可测试性**:
- 代码易于单元测试和集成测试
- 提供完整的测试用例覆盖
## 风险
- **API 设计风险**: API 接口设计可能不够完善
- **参数验证风险**: 参数验证可能不够严格
- **响应封装风险**: 响应封装可能不够统一
- **并发风险**: 并发上传下载可能导致资源竞争
- **文档风险**: API 文档可能不够清晰
## 需求变更记录
| 日期 | 变更内容 | 变更原因 | 变更人 | 审核人 | 状态 |
|------|---------|---------|--------|--------|------|
| 2026-01-19 | 创建需求文档 | 从 REQ-011 拆分 | 系统管理员 | - | 待审核 |
## 相关人员
- **需求提出人**: 系统管理员 - 联系方式
- **需求负责人**: 系统管理员 - 联系方式
- **技术负责人**: 开发工程师 - 联系方式
- **测试负责人**: 测试工程师 - 联系方式
- **其他相关人员**: - 联系方式
## 评审信息
- **评审日期**: -
- **评审人员**: -
- **评审结果**: -
- **评审意见**: -
- **修改建议**: -