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

207 lines
7.9 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 - Attachment 文件上传下载功能
## 需求信息
- **需求名称**: Attachment 文件上传下载功能
- **需求类型**: 功能需求
- **需求编号**: REQ-011-2
- **父需求**: [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) - 基础设施和枚举定义
- [Attachment文件上传.md](../reference-code/data-dump/Attachment文件上传.md) - Salesforce Attachment 上传实现逻辑
- [Attachment文件下载.md](../reference-code/data-dump/Attachment文件下载.md) - Salesforce Attachment 下载实现逻辑
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
## Context Maps
强制列出本次需求依赖的 Canvas 文件:
- [Authentication.canvas](../Authentication.canvas) - 项目架构视觉化展示
- **相关节点**: [集成核心](node_integration_core) - 提供与Salesforce的各种连接方式
- **相关节点**: [SessionManager](node_session_manager_detail) - 会话管理,提供登录服务
## 需求目标
在 datai-salesforce-integration 模块实现 Salesforce Attachment 对象的文件上传下载功能,使用 REST API + Base64 编码方式,支持最大 50MB 文件。
## 需求描述
### 概述
本需求旨在实现 Salesforce Attachment 对象的文件上传下载功能。Attachment 是 Salesforce 的传统附件对象(已弃用,但需兼容旧系统),使用 REST API + Base64 编码方式进行文件上传下载,最大支持 50MB 文件。
### Attachment 对象特性
| 特性 | 说明 |
|------|------|
| **主要用途** | 传统附件(已弃用) |
| **单文件限制** | 50MBBase64编码后约33MB |
| **版本管理** | 不支持 |
| **关联方式** | 绑定到ParentId |
| **上传方式** | REST API (JSON + Base64) |
| **推荐等级** | 仅兼容旧系统 |
| **必填字段** | ParentId, Name, Body |
### 详细需求
#### 1. Attachment 上传策略
- **需求描述**: 实现 Attachment 上传策略,使用 REST API + Base64 编码方式
- **优先级**: 高
- **验收标准**:
- 定义 AttachmentUploadStrategy 类,实现 FileUploadStrategy 接口
- 能够成功上传本地文件到 Salesforce Attachment 对象
- 支持指定组织配置 ID
- 支持指定 ParentId关联的记录 ID
- 支持指定文件名
- 文件内容使用 Base64 编码
- 上传成功返回 Attachment ID
- 支持文件大小限制(建议不超过 50MB
- 支持文件类型验证
- 支持文件大小验证
- 提供详细的错误信息
- **依赖关系**:
- 依赖于 REQ-011-1 的基础设施
- 依赖于 datai-salesforce-integration 模块的 SessionManager
- 依赖于 datai-salesforce-integration 模块的 RESTConnection
- **实现建议**:
- 使用 HttpClient 发送 POST 请求到 Salesforce REST API
- 使用 Base64 编码文件内容
- 使用 SessionManager 获取 Access Token
- 使用 @Valid 注解进行参数验证
- 参考参考代码中的实现逻辑
#### 2. Attachment 下载策略
- **需求描述**: 实现 Attachment 下载策略,使用 REST API + 流式处理方式
- **优先级**: 高
- **验收标准**:
- 定义 AttachmentDownloadStrategy 类,实现 FileDownloadStrategy 接口
- 能够成功从 Salesforce Attachment 对象下载文件到本地
- 支持指定组织配置 ID
- 支持指定 Attachment ID
- 支持指定保存路径
- 使用流式处理避免内存溢出
- 下载成功返回文件信息
- 支持大文件下载
- 提供详细的错误信息
- **依赖关系**:
- 依赖于 REQ-011-1 的基础设施
- 依赖于 datai-salesforce-integration 模块的 SessionManager
- 依赖于 datai-salesforce-integration 模块的 RESTConnection
- **实现建议**:
- 使用 HttpClient 发送 GET 请求到 Salesforce REST API
- 使用 InputStream 流式处理文件内容
- 使用 SessionManager 获取 Access Token
- 使用 FileOutputStream 保存文件到本地
- 使用 @Valid 注解进行参数验证
- 参考参考代码中的实现逻辑
#### 3. Attachment 上传下载 Service
- **需求描述**: 实现 Attachment 上传下载 Service封装策略调用逻辑
- **优先级**: 高
- **验收标准**:
- 定义 AttachmentFileService 接口
- 定义 AttachmentFileServiceImpl 实现类
- 提供 uploadAttachment 方法
- 提供 downloadAttachment 方法
- 使用策略模式封装上传下载逻辑
- 提供参数验证
- 提供异常处理
- 提供日志记录
- **依赖关系**:
- 依赖于 REQ-011-1 的基础设施
- 依赖于 Attachment 上传下载策略
- 依赖于 datai-salesforce-integration 模块的 SessionManager
- **实现建议**:
- 使用策略模式封装上传下载逻辑
- 使用 @Autowired 注入策略
- 使用 @Slf4j 记录日志
- 使用 @Transactional 管理事务
## 约束
- **技术栈限制**: 必须基于现有的 Spring Boot 3 技术栈
- **架构约束**: 必须遵循 Authentication.canvas 中定义的架构和调用关系
- **模块约束**: 必须在 datai-salesforce-integration 模块下实现
- **认证约束**: 必须使用 SessionManager 进行会话管理和自动重新登录
- **API约束**: 必须使用 Salesforce REST API
- **文件大小约束**: 单个文件大小建议不超过 50MB
- **内存约束**: 必须使用流式处理避免内存溢出
- **文档约束**: 必须遵循 SSOT 方法论
- **设计模式约束**: 必须使用策略模式封装上传下载逻辑
## Rule Set
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
**具体规则**
- 必须使用 Canvas 中定义的类名和方法名
- 必须遵循 Canvas 中定义的调用关系
- 必须参考 Canvas 中的流程图逻辑
- 必须使用 SessionManager 进行会话管理和自动重新登录
- 必须使用现有的认证模块进行 OAuth 认证
- 必须遵循现有的异常处理机制
- 必须遵循现有的日志记录规范
- 必须使用 RESTConnection 处理 REST API 调用
- 必须使用策略模式封装上传下载逻辑
## 验收标准
- **功能完整性**: Attachment 文件上传下载功能能够正常工作,支持指定组织配置 ID
- **性能指标**:
- 文件上传下载不影响系统响应
- 大文件处理性能良好
- 流式处理有效避免内存溢出
- **代码规范性**:
- 代码符合项目编码规范,有清晰的注释
- 使用策略模式封装上传下载逻辑
- 遵循单一职责原则和开闭原则
- **可维护性**:
- 代码结构清晰,易于扩展和维护
- 配置与代码分离,易于调整
- **可测试性**:
- 代码易于单元测试和集成测试
- 提供完整的测试用例覆盖
## 风险
- **文件大小风险**: 大文件上传下载可能导致内存溢出
- **API 限流风险**: 频繁的 API 调用可能导致 Salesforce API 限流
- **认证失效风险**: Access Token 失效可能导致文件上传下载失败
- **网络异常风险**: 网络异常可能导致文件上传下载失败
- **并发风险**: 并发上传下载可能导致资源竞争
- **弃用风险**: Attachment 已被 Salesforce 弃用,未来可能被移除
## 需求变更记录
| 日期 | 变更内容 | 变更原因 | 变更人 | 审核人 | 状态 |
|------|---------|---------|--------|--------|------|
| 2026-01-19 | 创建需求文档 | 从 REQ-011 拆分 | 系统管理员 | - | 待审核 |
## 相关人员
- **需求提出人**: 系统管理员 - 联系方式
- **需求负责人**: 系统管理员 - 联系方式
- **技术负责人**: 开发工程师 - 联系方式
- **测试负责人**: 测试工程师 - 联系方式
- **其他相关人员**: - 联系方式
## 评审信息
- **评审日期**: -
- **评审人员**: -
- **评审结果**: -
- **评审意见**: -
- **修改建议**: -