feat(acceptance): 建立同构验收与弹性容量体系

实现本地三节点 K3s 同构环境、脱敏生产快照、Gemini 图片和多参考图视频协议模拟、统一验收报告及故障注入。\n\n新增 Worker 容量控制器、资源与连接预算、任务恢复保护,并将生产验收拆分为 validation 执行和人工 CAS 放量。\n\n验证包括 Go 全量测试、PostgreSQL HTTP 集成测试、go vet、OpenAPI、ShellCheck、前端检查、迁移及发布脚本测试。
This commit is contained in:
2026-07-31 18:02:24 +08:00
parent 93d36d0e55
commit e05922b0f4
94 changed files with 12379 additions and 826 deletions
+7 -1
View File
@@ -163,7 +163,13 @@ func ApplyManifest(revision Revision, input ManifestApplication) (Revision, erro
revision.SchemaVersion = input.Manifest.SchemaVersion
revision.Issuer = strings.TrimRight(input.Manifest.Issuer, "/")
revision.TenantID = input.Manifest.TenantID
revision.TenantMode = input.Manifest.TenantMode
if input.Manifest.SchemaVersion == 1 {
// Manifest V1 intentionally omits tenant_mode on the wire, but the
// persisted revision uses the explicit single-tenant discriminator.
revision.TenantMode = "single_tenant"
} else {
revision.TenantMode = input.Manifest.TenantMode
}
revision.ApplicationID = input.Manifest.ApplicationID
revision.Audience = input.Manifest.Audience
revision.Scopes = append([]string(nil), input.Manifest.Scopes...)
@@ -226,3 +226,27 @@ func TestApplyManifestV2RemovesFixedTenantMappingWhileV1StillRequiresIt(t *testi
t.Fatal("Manifest V1 without a fixed local tenant mapping was accepted")
}
}
func TestApplyManifestV1PersistsSingleTenantMode(t *testing.T) {
draft, err := NewDraft(PairingInput{
AuthCenterURL: "https://auth.example.com", PublicBaseURL: "https://api.example.com",
WebBaseURL: "https://gateway.example.com", LocalTenantKey: "default",
}, "production")
if err != nil {
t.Fatal(err)
}
applied, err := ApplyManifest(draft, ManifestApplication{
AppEnv: "production",
Manifest: ManifestV1{
SchemaVersion: 1, Issuer: "https://auth.example.com/issuer/default",
TenantID: "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", ApplicationID: "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
Capabilities: []string{}, Scopes: []string{}, Clients: ManifestClients{},
},
})
if err != nil {
t.Fatal(err)
}
if applied.TenantMode != "single_tenant" {
t.Fatalf("Manifest V1 should persist the explicit single-tenant discriminator: %#v", applied)
}
}