# 变更记录:文件上传下载基础设施实现 ## 变更信息 - **版本号**: v1.0.0 - **发布日期**: 2026-01-19 - **变更类型**: [特性更新] ## 变更摘要 本次变更实现了Salesforce文件上传下载的基础设施,包括文件对象类型枚举、错误代码枚举、异常类、参数类、响应类和验证工具类。这些基础设施为后续实现Attachment、ContentDocument、Document三种文件对象类型的上传下载功能提供了统一的架构支持。 ## 详细变更 ### 特性更新 - **FileObjectType枚举** - 定义了Attachment、ContentDocument、Document三种文件对象类型,包含API名称、描述、文件大小限制、推荐等级、上传方式和必填字段等元数据 - **FileErrorCode枚举** - 定义了10个文件相关的错误代码,包括FILE_UPLOAD_FAILED、FILE_DOWNLOAD_FAILED、FILE_SIZE_EXCEEDED、FILE_TYPE_NOT_SUPPORTED等 - **FileUploadException异常类** - 文件上传异常,继承自RuntimeException,包含错误代码和错误消息 - **FileDownloadException异常类** - 文件下载异常,继承自RuntimeException,包含错误代码和错误消息 - **FileSizeExceededException异常类** - 文件大小超限异常,包含实际大小和最大限制 - **FileTypeNotSupportedException异常类** - 文件类型不支持异常,包含实际类型和支持的类型列表 - **FileObjectNotFoundException异常类** - 文件对象不存在异常,包含对象ID和对象类型 - **OrgConfigNotFoundException异常类** - 组织配置不存在异常,包含配置ID - **FileValidationException异常类** - 文件验证异常,包含验证类型 - **FileUploadRequest参数类** - 文件上传请求参数,包含组织配置ID、文件对象类型、文件、关联记录ID、文件名和描述,使用Lombok注解和JSR-303验证注解 - **FileDownloadRequest参数类** - 文件下载请求参数,包含组织配置ID、文件对象类型、文件ID和保存路径,使用Lombok注解和JSR-303验证注解 - **FileUploadResponse响应类** - 文件上传响应,包含文件ID、文件名、文件大小、文件类型、上传时间、状态和消息 - **FileDownloadResponse响应类** - 文件下载响应,包含文件名、文件大小、保存路径、下载时间、状态和消息 - **FileValidationUtils工具类** - 文件验证工具类,提供文件大小验证、文件类型验证、文件名验证、文件扩展名获取、文件MIME类型获取等功能,支持13种文件类型白名单和13种危险扩展名黑名单 ## 影响范围 ### 受影响的模块 - **datai-salesforce-common模块** - 新增文件上传下载基础设施 - **枚举包** - 新增FileObjectType枚举 - **异常包** - 新增8个文件相关异常类 - **参数包** - 新增2个文件请求参数类和2个文件响应类 - **工具包** - 新增FileValidationUtils验证工具类 ### 兼容性说明 - **向后兼容** - 本次变更不影响现有功能 - **API兼容性** - 新增的基础设施提供独立的API接口 ## 升级指南 ### 升级步骤 1. **引入依赖** - 确保项目已引入Lombok和Spring Boot 3.5.7(包含JSR-303验证) 2. **代码集成** - 在需要使用文件上传下载功能的模块中引入新增的基础设施类 3. **配置验证** - 根据实际需求调整FileValidationUtils中的ALLOWED_FILE_TYPES和DANGEROUS_EXTENSIONS ### 注意事项 - **文件大小限制** - 不同文件对象类型有不同的文件大小限制(Attachment: 50MB、ContentDocument: 2048MB、Document: 25MB) - **文件类型限制** - 默认支持13种文件类型,可根据实际需求调整ALLOWED_FILE_TYPES - **安全考虑** - 已实现路径遍历攻击防护和危险文件上传防护 - **MIME类型检测** - 使用Java内置的Files.probeContentType()方法,不依赖Apache Tika ## 测试信息 ### 测试环境 - **开发环境** - 本地开发环境 - **测试环境** - 待定 ### 测试结果 - **编译检查** - 通过IDE诊断检查,无编译错误 - **单元测试** - 待完成(目标测试覆盖率 ≥ 90%) - **代码质量检查** - 待完成(SonarQube、Checkstyle、SpotBugs) ## 相关链接 - [需求文档](../requirements/REQ-011.md) - Salesforce文件上传下载功能 - [子需求文档](../requirements/REQ-011-1.md) - 基础设施和枚举定义 - [架构决策](../decisions/adr/0027-file-infrastructure-enums.md) - 文件上传下载基础设施架构决策 - [执行提示词](../prompts/028-file-infrastructure-enums.md) - 文件上传下载基础设施执行提示词 - [会话记录](../sessions/20260119-req-011-1-file-infrastructure-enums.md) - REQ-011-1执行会话记录 ## 发布人员 - **开发人员** - SSOT架构师 ## 审核信息 - **审核人员**: 待定 - **审核日期**: 待定 - **审核状态**: [待审核] - **审核意见**: 待审核