Skip to content

Feat: Add Alibaba Cloud Storage Configuration#949

Merged
lyingbug merged 20 commits intoTencent:mainfrom
peterchan2020:feat_oss
Apr 14, 2026
Merged

Feat: Add Alibaba Cloud Storage Configuration#949
lyingbug merged 20 commits intoTencent:mainfrom
peterchan2020:feat_oss

Conversation

@peterchan2020
Copy link
Copy Markdown
Contributor

Pull Request

描述 (Description)

本 PR 为 WeKnora 项目添加阿里云 OSS(对象存储服务)作为新的存储引擎支持。用户可以通过 OSS 存储引擎上传、下载和管理知识库文件,同时提供完整的配置界面、连通性测试和状态报告功能。

主要变更包括:

后端 (Go)

  • 实现基于 S3 兼容模式的 OSS FileService(internal/application/service/file/oss.go
  • 注册 OSS Provider 到存储工厂和容器初始化
  • 添加 OSS 状态报告和连通性检查 Handler
  • 添加 OSS 单元测试(oss_test.go
  • 更新 knowledgebase.gotenant.go 类型定义以支持 OSS 配置

文档解析服务 (Python)

  • 新增 OssStorage 类(docreader/parser/storage.py
  • 添加 oss2 依赖到 pyproject.tomluv.lock

前端

  • 添加 OSS TypeScript 类型定义(storage engine config
  • 新增 OSS 配置 UI 组件和连通性测试功能(StorageEngineSettings.vue
  • 更新安全工具函数以处理 OSS 相关逻辑
  • 添加 OSS 本地化支持(中文、英文、韩语、俄语)

文档

  • 更新 Swagger API 文档以反映新增的 OSS 相关接口

变更类型 (Type of Change)

  • 🐛 Bug 修复 (Bug fix)
  • ✨ 新功能 (New feature)
  • 💥 破坏性变更 (Breaking change)
  • 📚 文档更新 (Documentation update)
  • 🎨 代码重构 (Code refactoring)
  • ⚡ 性能优化 (Performance improvement)
  • 🧪 测试相关 (Test related)
  • 🔧 配置变更 (Configuration change)
  • 🐳 Docker 相关 (Docker related)
  • 🎨 前端 UI/UX (Frontend UI/UX)

影响范围 (Scope)

  • 后端 API (Backend API)
  • 前端界面 (Frontend UI)
  • 数据库 (Database)
  • 文档解析服务 (Document Reader Service)
  • MCP 服务器 (MCP Server)
  • Docker 配置 (Docker Configuration)
  • 配置文件 (Configuration)
  • 其他 (Other):

测试 (Testing)

  • 单元测试 (Unit tests)
  • 集成测试 (Integration tests)
  • 手动测试 (Manual testing)
  • 前端测试 (Frontend testing)
  • API 测试 (API testing)

测试步骤 (Test Steps)

  1. 在系统设置中添加阿里云 OSS 存储引擎配置(AccessKey、SecretKey、Endpoint、Bucket)
  2. 点击"测试连接"按钮验证连通性
  3. 在知识库设置中将存储引擎切换为 OSS,上传文件并验证上传/下载功能正常
  4. 验证 OSS 状态报告页面显示正确的存储使用信息
  5. 使用不同语言(中文、英文、韩语、俄语)验证界面文本翻译正确

检查清单 (Checklist)

  • 代码遵循项目的编码规范
  • 已进行自我代码审查
  • 代码变更已添加适当的注释
  • 相关文档已更新
  • 变更不会产生新的警告
  • 已添加测试用例证明修复有效或功能正常
  • 新功能和变更已更新到相关文档
  • 破坏性变更已在描述中明确说明

相关 Issue

Fixes #

截图/录屏 (Screenshots/Recordings)

image image image cd7ea13b-efb2-4fd5-af73-79e5da363034

数据库迁移 (Database Migration)

  • 需要数据库迁移
  • 不需要数据库迁移

配置变更 (Configuration Changes)

用户需要在系统设置中配置以下 OSS 参数:

  • oss_access_key - 阿里云 AccessKey ID
  • oss_secret_key - 阿里云 AccessKey Secret
  • oss_endpoint - OSS Endpoint(如 oss-cn-hangzhou.aliyuncs.com
  • oss_bucket - Bucket 名称
  • oss_region - 区域(如 cn-hangzhou

部署说明 (Deployment Notes)

  • 确保 docreader 服务已安装 oss2 Python 依赖包(已通过 uv.lock 更新)
  • Go 后端无需额外依赖
  • 需要确保服务器网络可以访问阿里云 OSS 服务

其他信息 (Additional Information)

变更统计

  • 21 个文件变更,+1041 行,-26 行
  • 新增 Go 源文件 2 个(oss.go, oss_test.go
  • 新增 Python 存储类 OssStorage
  • 支持 4 种语言的 i18n

技术说明

  • OSS 实现采用 S3 兼容 API 模式,通过 MinIO SDK 的 S3 客户端与阿里云 OSS 交互
  • 禁用了自动校验和计算以避免签名不匹配问题
  • 使用路径样式(path-style)URL 格式以确保兼容性

bingxiang.cheng and others added 20 commits April 13, 2026 15:34
Add oss.go with full FileService implementation (SaveFile, SaveBytes,
GetFile, DeleteFile, GetFileURL, CheckConnectivity) using aws-sdk-go-v2
with path-style addressing for Aliyun OSS. Includes temp bucket support
and unit tests for parseOssFilePath and client creation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 添加判断oss2是否安装,未安装时打印错误日志
- 修改OSS桶不存在时不自动创建,避免误创建公共读桶
- OSS下载URL改为虚拟主机风格,提升兼容性
- OSS初始化错误、缺失配置时添加详细日志提示
- 其他存储类代码重排统一风格,提升可维护性
@peterchan2020 peterchan2020 marked this pull request as draft April 14, 2026 02:57
@lyingbug lyingbug marked this pull request as ready for review April 14, 2026 03:07
@lyingbug lyingbug merged commit 1af90e8 into Tencent:main Apr 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants