fix(storage): 按提供方选择整库对象寻址方式
build / build (push) Successful in 1m23s

This commit is contained in:
姚章浩
2026-10-31 06:22:20 +08:00
parent ee9d078794
commit d0c6d57283
3 changed files with 28 additions and 1 deletions
+6
View File
@@ -1,5 +1,11 @@
# Changelog
## 开发快照(云对象存储寻址兼容)
### Fixed
- 整库发布与恢复按存储提供方选择寻址方式:MinIO 保留路径式,OSS/S3 使用虚拟主机式,不再因强制路径式而被 OSS 拒绝资源上传。
## 开发快照(跨库分块序列分配)
### Fixed
+1 -1
View File
@@ -83,7 +83,7 @@ func scopeConfigOf(config appconfig.Config, scope string) (scopeConfig, error) {
Region: config.LibraryProductionS3Region, Bucket: config.LibraryProductionS3Bucket,
AccessKeyID: config.LibraryProductionS3AccessKey, SecretAccessKey: config.LibraryProductionS3SecretKey,
Secure: strings.HasPrefix(config.LibraryProductionS3Endpoint, "https://"),
ForcePathStyle: true, MaxObjectBytes: 256 * 1024 * 1024,
ForcePathStyle: config.LibraryProductionS3Provider == "minio", MaxObjectBytes: 256 * 1024 * 1024,
},
}, nil
}
+21
View File
@@ -0,0 +1,21 @@
package librarystack
import (
"knowledge-governance/internal/appconfig"
"testing"
)
func TestObjectAddressingMatchesProvider(t *testing.T) {
for _, provider := range []string{"oss", "s3", "minio"} {
t.Run(provider, func(t *testing.T) {
config := appconfig.Config{LibraryProductionDatabaseURL: "configured", LibraryProductionElasticURL: "configured", LibraryProductionTenantID: 1, LibraryProductionInternalKB: "kb-target", LibraryProductionS3Endpoint: "https://storage.example", LibraryProductionS3Bucket: "test-bucket", LibraryProductionS3AccessKey: "fixture", LibraryProductionS3SecretKey: "fixture", LibraryProductionS3Provider: provider}
scope, err := scopeConfigOf(config, "internal")
if err != nil {
t.Fatal(err)
}
if scope.s3.ForcePathStyle != (provider == "minio") {
t.Fatalf("provider %s: ForcePathStyle=%v", provider, scope.s3.ForcePathStyle)
}
})
}
}