fix(sync): 固化 release flow 状态码

This commit is contained in:
2026-07-31 15:57:07 +08:00
parent 99e6b3a23a
commit 4cc143f66d
12 changed files with 619 additions and 36 deletions
+16 -5
View File
@@ -558,11 +558,15 @@ func TestDiscoverCallsStatusBeforeDoctor(t *testing.T) {
b := uint64(info.Size())
_ = bytes
catalogObj := map[string]any{
"available": true,
"app_version": "1.70.0",
"bundle_version": "s8tloc7lo3",
"connection_group_name": "Prod",
"addressables_root": "https://prod-clientpatch.bluearchiveyostar.com/r93_fixture",
"available": true,
"status": "published",
"status_code": "official.published",
"distribution_status": "ready",
"distribution_status_code": "distribution.ready",
"app_version": "1.70.0",
"bundle_version": "s8tloc7lo3",
"connection_group_name": "Prod",
"addressables_root": "https://prod-clientpatch.bluearchiveyostar.com/r93_fixture",
"version": map[string]any{
"id": "v1",
"resource_root": root,
@@ -603,6 +607,13 @@ func TestDiscoverCallsStatusBeforeDoctor(t *testing.T) {
if result.DoctorHealthy == nil || !*result.DoctorHealthy {
t.Fatal("doctor healthy expected")
}
summary := result.Index.Summary()
if summary.Snapshot.Status != "published" || summary.Snapshot.StatusCode != "official.published" {
t.Fatalf("snapshot status=%q code=%q", summary.Snapshot.Status, summary.Snapshot.StatusCode)
}
if summary.Snapshot.DistributionStatusCode != "distribution.ready" {
t.Fatalf("distribution status code=%q", summary.Snapshot.DistributionStatusCode)
}
}
func TestLoadEnvFileDoesNotOverride(t *testing.T) {
+12 -8
View File
@@ -22,14 +22,18 @@ type ResourceEntry struct {
// SnapshotSummary is a subset of official-sync-snapshot.json / catalog.status.
type SnapshotSummary struct {
AppVersion string `json:"app_version,omitempty"`
BundleVersion string `json:"bundle_version,omitempty"`
ConnectionGroupName string `json:"connection_group_name,omitempty"`
AddressablesRoot string `json:"addressables_root,omitempty"`
VersionID string `json:"version_id,omitempty"`
CompletedUnixSeconds *uint64 `json:"completed_unix_seconds,omitempty"`
LauncherMetadata *LauncherMetadataSummary `json:"launcher_metadata,omitempty"`
GameMainConfig *GameMainConfigSummary `json:"game_main_config,omitempty"`
Status string `json:"status,omitempty"`
StatusCode string `json:"status_code,omitempty"`
DistributionStatus string `json:"distribution_status,omitempty"`
DistributionStatusCode string `json:"distribution_status_code,omitempty"`
AppVersion string `json:"app_version,omitempty"`
BundleVersion string `json:"bundle_version,omitempty"`
ConnectionGroupName string `json:"connection_group_name,omitempty"`
AddressablesRoot string `json:"addressables_root,omitempty"`
VersionID string `json:"version_id,omitempty"`
CompletedUnixSeconds *uint64 `json:"completed_unix_seconds,omitempty"`
LauncherMetadata *LauncherMetadataSummary `json:"launcher_metadata,omitempty"`
GameMainConfig *GameMainConfigSummary `json:"game_main_config,omitempty"`
}
// LauncherMetadataSummary mirrors the resource-relevant part of Rust's launcher metadata snapshot.
+22 -14
View File
@@ -195,14 +195,18 @@ func parseCatalogStatus(raw json.RawMessage) (*SnapshotSummary, string, bool) {
return nil, "", false
}
var payload struct {
Available bool `json:"available"`
AppVersion string `json:"app_version"`
BundleVersion string `json:"bundle_version"`
ConnectionGroupName string `json:"connection_group_name"`
AddressablesRoot string `json:"addressables_root"`
LauncherMetadata *LauncherMetadataSummary `json:"launcher_metadata"`
GameMainConfig *GameMainConfigSummary `json:"game_main_config"`
Version *struct {
Available bool `json:"available"`
Status string `json:"status"`
StatusCode string `json:"status_code"`
DistributionStatus string `json:"distribution_status"`
DistributionStatusCode string `json:"distribution_status_code"`
AppVersion string `json:"app_version"`
BundleVersion string `json:"bundle_version"`
ConnectionGroupName string `json:"connection_group_name"`
AddressablesRoot string `json:"addressables_root"`
LauncherMetadata *LauncherMetadataSummary `json:"launcher_metadata"`
GameMainConfig *GameMainConfigSummary `json:"game_main_config"`
Version *struct {
ID string `json:"id"`
CompletedUnixSeconds *uint64 `json:"completed_unix_seconds"`
ResourceRoot string `json:"resource_root"`
@@ -212,12 +216,16 @@ func parseCatalogStatus(raw json.RawMessage) (*SnapshotSummary, string, bool) {
return nil, "", false
}
snap := &SnapshotSummary{
AppVersion: payload.AppVersion,
BundleVersion: payload.BundleVersion,
ConnectionGroupName: payload.ConnectionGroupName,
AddressablesRoot: payload.AddressablesRoot,
LauncherMetadata: payload.LauncherMetadata,
GameMainConfig: payload.GameMainConfig,
Status: payload.Status,
StatusCode: payload.StatusCode,
DistributionStatus: payload.DistributionStatus,
DistributionStatusCode: payload.DistributionStatusCode,
AppVersion: payload.AppVersion,
BundleVersion: payload.BundleVersion,
ConnectionGroupName: payload.ConnectionGroupName,
AddressablesRoot: payload.AddressablesRoot,
LauncherMetadata: payload.LauncherMetadata,
GameMainConfig: payload.GameMainConfig,
}
root := ""
if payload.Version != nil {