datai/datai-scenes/datai-scene-salesforce/docs/requirements/REQ-011.md
Kris 8287b5e2c2 docs: 创建REQ-011(Salesforce文件上传下载功能)需求文档
- 阶段1:需求定义与入库 - 创建需求文档 REQ-011.md
- 需求描述:在 datai-salesforce-integration 模块新增一个 controller,实现 Salesforce 的文件指定 org 上传下载功能
- 详细需求包括:
  - 文件上传功能:实现本地文件上传到 Salesforce Attachment 对象
  - 文件下载功能:实现从 Salesforce Attachment 对象下载文件到本地
  - 指定组织配置:支持用户指定组织配置 ID
  - 错误处理机制:实现完善的错误处理机制
- 参考 Attachment文件上传.md、Attachment文件下载.md、CommonServiceImpl.java 中的实现逻辑
- 更新 index.md,将新需求添加到需求文档表格
- 所有文档均按照SSOT方法论创建
2026-01-19 11:18:19 +08:00

177 lines
7.1 KiB
Markdown
Raw 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 - Salesforce文件上传下载功能
## 需求信息
- **需求名称**: Salesforce文件上传下载功能
- **需求类型**: 功能需求
- **需求编号**: REQ-011
- **父需求**: 无
- **创建日期**: 2026-01-19
- **需求版本**: v1.0.0
- **需求提出人**: 系统管理员
- **需求状态**: 已完成
## 输入引用
引用相关的 docs 文档链接:
- [Attachment文件上传.md](../reference-code/data-dump/Attachment文件上传.md) - Salesforce Attachment 上传实现逻辑
- [Attachment文件下载.md](../reference-code/data-dump/Attachment文件下载.md) - Salesforce Attachment 下载实现逻辑
- [CommonServiceImpl.java](../reference-code/data-dump/CommonServiceImpl.java) - 现有的 Attachment 上传下载实现逻辑
## Context Maps
强制列出本次需求依赖的 Canvas 文件:
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
- **相关节点**: [集成核心](node_integration_core) - 提供与Salesforce的各种连接方式
- **相关节点**: [SessionManager](node_session_manager_detail) - 会话管理,提供登录服务
## 需求目标
在 datai-salesforce-integration 模块新增一个 controller实现 Salesforce 的文件指定 org 上传下载功能,支持用户通过指定组织配置 ID 上传和下载 Salesforce Attachment 文件。
## 需求描述
### 概述
本需求旨在在 datai-salesforce-integration 模块新增一个 controller实现 Salesforce 的文件上传下载功能。用户可以通过指定组织配置 ID将本地文件上传到 Salesforce Attachment 对象,或从 Salesforce Attachment 对象下载文件到本地。
### 详细需求
#### 1. 文件上传功能
- **需求描述**: 实现将本地文件上传到 Salesforce Attachment 对象的功能
- **优先级**: 高
- **验收标准**:
- 能够成功上传本地文件到 Salesforce Attachment 对象
- 支持指定组织配置 ID
- 支持指定 ParentId关联的记录 ID
- 支持指定文件名
- 文件内容使用 Base64 编码
- 上传成功返回 Attachment ID
- API 接口符合 RESTful 规范
- 支持文件大小限制(建议不超过 50MB
- **依赖关系**: 依赖于 datai-salesforce-integration 模块的 SessionManager
- **实现建议**:
- 使用 HttpClient 发送 POST 请求到 Salesforce REST API
- 使用 Base64 编码文件内容
- 使用 SessionManager 获取 Access Token
- 使用 @Valid 注解进行参数验证
#### 2. 文件下载功能
- **需求描述**: 实现从 Salesforce Attachment 对象下载文件到本地的功能
- **优先级**: 高
- **验收标准**:
- 能够成功从 Salesforce Attachment 对象下载文件到本地
- 支持指定组织配置 ID
- 支持指定 Attachment ID
- 支持指定保存路径
- 使用流式处理避免内存溢出
- 下载成功返回文件信息
- API 接口符合 RESTful 规范
- 支持大文件下载
- **依赖关系**: 依赖于 datai-salesforce-integration 模块的 SessionManager
- **实现建议**:
- 使用 HttpClient 发送 GET 请求到 Salesforce REST API
- 使用 InputStream 流式处理文件内容
- 使用 SessionManager 获取 Access Token
- 使用 FileOutputStream 保存文件到本地
- 使用 @Valid 注解进行参数验证
#### 3. 指定组织配置
- **需求描述**: 支持用户指定组织配置 ID使用指定的组织配置进行文件上传下载
- **优先级**: 高
- **验收标准**:
- 能够根据指定的组织配置 ID 获取对应的 Access Token
- 支持多个组织配置的文件上传下载
- 组织配置 ID 参数验证
- 组织配置不存在时返回错误信息
- **依赖关系**: 依赖于 datai-salesforce-integration 模块的 SessionManager
- **实现建议**:
- 使用 SessionManager 根据组织配置 ID 获取 Access Token
- 使用 @Valid 注解进行参数验证
- 使用自定义异常处理组织配置不存在的情况
#### 4. 错误处理机制
- **需求描述**: 实现完善的错误处理机制,包括文件上传下载失败、组织配置不存在、文件不存在等错误
- **优先级**: 高
- **验收标准**:
- 文件上传失败时返回详细的错误信息
- 文件下载失败时返回详细的错误信息
- 组织配置不存在时返回错误信息
- 文件不存在时返回错误信息
- 使用统一的异常处理机制
- 错误信息清晰易懂
- **依赖关系**: 依赖于文件上传下载功能
- **实现建议**:
- 使用自定义异常类封装错误信息
- 使用 GlobalExceptionHandler 统一处理异常
- 使用 Slf4j 记录错误日志
## 约束
- **技术栈限制**: 必须基于现有的 Spring Boot 3 技术栈
- **架构约束**: 必须遵循 Authentication.canvas 中定义的架构和调用关系
- **模块约束**: 必须在 datai-salesforce-integration 模块下实现
- **认证约束**: 必须使用 SessionManager 进行会话管理和自动重新登录
- **API约束**: 必须使用 Salesforce REST API 进行文件上传下载
- **文件大小约束**: 单个文件大小建议不超过 50MB
- **内存约束**: 必须使用流式处理避免内存溢出
- **文档约束**: 必须遵循 SSOT 方法论
## Rule Set
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
**具体规则**
- 必须使用 Canvas 中定义的类名和方法名
- 必须遵循 Canvas 中定义的调用关系
- 必须参考 Canvas 中的流程图逻辑
- 必须使用 SessionManager 进行会话管理和自动重新登录
- 必须使用现有的认证模块进行 OAuth 认证
- 必须遵循现有的异常处理机制
- 必须遵循现有的日志记录规范
## 验收标准
- **功能完整性**: 文件上传下载功能能够正常工作,支持指定组织配置 ID
- **性能指标**: 文件上传下载不影响系统响应,大文件处理性能良好
- **代码规范性**: 代码符合项目编码规范,有清晰的注释
- **可维护性**: 代码结构清晰,易于扩展和维护
- **可测试性**: 代码易于单元测试和集成测试
## 风险
- **文件大小风险**: 大文件上传下载可能导致内存溢出
- **API 限流风险**: 频繁的 API 调用可能导致 Salesforce API 限流
- **认证失效风险**: Access Token 失效可能导致文件上传下载失败
- **网络异常风险**: 网络异常可能导致文件上传下载失败
- **并发风险**: 并发上传下载可能导致资源竞争
## 需求变更记录
| 日期 | 变更内容 | 变更原因 | 变更人 | 审核人 | 状态 |
|------|---------|---------|--------|--------|------|
| 2026-01-19 | 创建需求文档 | 初始需求 | 系统管理员 | - | 待审核 |
| 2026-01-19 | 完成需求实现 | 完成6个阶段的开发流程 | Datai Team | - | 已完成 |
## 相关人员
- **需求提出人**: 系统管理员 - 联系方式
- **需求负责人**: 系统管理员 - 联系方式
- **技术负责人**: 开发工程师 - 联系方式
- **测试负责人**: 测试工程师 - 联系方式
- **其他相关人员**: - 联系方式
## 评审信息
- **评审日期**: -
- **评审人员**: -
- **评审结果**: -
- **评审意见**: -
- **修改建议**: -