feat: 完整游戏运维功能

This commit is contained in:
npc0-hue
2026-07-18 09:04:01 +08:00
parent f3b14b7945
commit 48b8ad8d6c
187 changed files with 16607 additions and 1140 deletions
+350
View File
@@ -0,0 +1,350 @@
package domain
import "time"
type ClientManagerLifecycleStatus string
const (
ClientManagerLifecycleRequested ClientManagerLifecycleStatus = "requested"
ClientManagerLifecycleBuilding ClientManagerLifecycleStatus = "building"
ClientManagerLifecycleAvailable ClientManagerLifecycleStatus = "available"
ClientManagerLifecycleDeploying ClientManagerLifecycleStatus = "deploying"
ClientManagerLifecycleInstalled ClientManagerLifecycleStatus = "installed"
ClientManagerLifecycleRegistering ClientManagerLifecycleStatus = "registering"
ClientManagerLifecycleOnline ClientManagerLifecycleStatus = "online"
ClientManagerLifecycleDegraded ClientManagerLifecycleStatus = "degraded"
ClientManagerLifecycleOffline ClientManagerLifecycleStatus = "offline"
ClientManagerLifecycleUpdating ClientManagerLifecycleStatus = "updating"
ClientManagerLifecycleRollingBack ClientManagerLifecycleStatus = "rolling_back"
ClientManagerLifecycleStopping ClientManagerLifecycleStatus = "stopping"
ClientManagerLifecycleUninstalled ClientManagerLifecycleStatus = "uninstalled"
ClientManagerLifecycleFailed ClientManagerLifecycleStatus = "failed"
)
type ClientManagerHealthStatus string
const (
ClientManagerHealthUnknown ClientManagerHealthStatus = "unknown"
ClientManagerHealthHealthy ClientManagerHealthStatus = "healthy"
ClientManagerHealthDegraded ClientManagerHealthStatus = "degraded"
ClientManagerHealthUnhealthy ClientManagerHealthStatus = "unhealthy"
ClientManagerHealthOffline ClientManagerHealthStatus = "offline"
)
type ClientManagerLifecycleOperation string
const (
ClientManagerOperationDeploy ClientManagerLifecycleOperation = "deploy"
ClientManagerOperationStart ClientManagerLifecycleOperation = "start"
ClientManagerOperationStop ClientManagerLifecycleOperation = "stop"
ClientManagerOperationRestart ClientManagerLifecycleOperation = "restart"
ClientManagerOperationStatus ClientManagerLifecycleOperation = "status"
ClientManagerOperationUpdate ClientManagerLifecycleOperation = "update"
ClientManagerOperationRollback ClientManagerLifecycleOperation = "rollback"
ClientManagerOperationUninstall ClientManagerLifecycleOperation = "uninstall"
)
const (
JobCapabilityClientManagerDeploy = "client-manager.deploy"
JobCapabilityClientManagerControl = "client-manager.control"
JobCapabilityClientManagerUpdate = "client-manager.update"
JobCapabilityClientManagerRollback = "client-manager.rollback"
JobCapabilityClientManagerUninstall = "client-manager.uninstall"
)
type ClientManagerSessionStatus string
const (
ClientManagerSessionActive ClientManagerSessionStatus = "active"
ClientManagerSessionRevoked ClientManagerSessionStatus = "revoked"
ClientManagerSessionExpired ClientManagerSessionStatus = "expired"
)
type RuntimeClientManagerDeployment struct {
Mode string
ExecutableRef string
Arguments []string
AutoStart bool
RequiredRunCapabilities []string
}
type RuntimeClientManagerLifecycle struct {
Actions []string
StartupTimeoutSeconds int
StopTimeoutSeconds int
}
type RuntimeClientManagerHealth struct {
Mode string
IntervalSeconds int
DegradedAfterSeconds int
OfflineAfterSeconds int
RequiredCapabilities []string
}
type RuntimeClientManagerCompatibility struct {
MinimumVersion string
MaximumVersion string
AllowDowngrade bool
}
type RuntimeClientManagerUpdatePolicy struct {
Strategy string
RequireApproval bool
HealthConfirmationSeconds int
RetainPrevious bool
}
type ClientManagerInstallation struct {
ID string
ServerInstanceID string
PluginID string
ProfileKey string
RunEndpointID string
TargetOS string
TargetArch string
Status ClientManagerLifecycleStatus
Phase string
DesiredVersion string
ActiveVersion string
PreviousVersion string
DesiredRevision string
ActiveRevision string
PreviousRevision string
DesiredArtifactID string
ActiveArtifactID string
PreviousArtifactID string
Checksum string
KeyGeneration int
DeploymentGeneration int
CurrentJobID string
LastSuccessfulJobID string
LastOperation ClientManagerLifecycleOperation
Health ClientManagerHealthStatus
HealthReason string
LastSeenAt time.Time
LastHeartbeatSequence uint64
Retryable bool
RequiresRedeploy bool
CreatedAt time.Time
UpdatedAt time.Time
InstalledAt time.Time
UninstalledAt time.Time
}
type ClientManagerSession struct {
ID string
InstallationID string
ServerInstanceID string
ProfileKey string
RunEndpointID string
ArtifactID string
KeyGeneration int
DeploymentGeneration int
TokenHash string
Capabilities []string
Status ClientManagerSessionStatus
LastHeartbeatSequence uint64
LastSeenAt time.Time
ExpiresAt time.Time
CreatedAt time.Time
UpdatedAt time.Time
RevokedAt time.Time
}
type ClientManagerRegistrationNonce struct {
ID string
InstallationID string
ExpiresAt time.Time
CreatedAt time.Time
}
type ClientManagerLifecycleActionAvailability struct {
Operation ClientManagerLifecycleOperation
Available bool
Reason string
}
type ClientManagerLifecycleView struct {
Installation ClientManagerInstallation
Distribution ClientManagerDistribution
Job Job
Actions []ClientManagerLifecycleActionAvailability
}
type ClientManagerDeployRequest struct {
ServerInstanceID string
ProfileKey string
DistributionID string
ExpectedDeploymentGeneration int
IdempotencyKey string
}
type ClientManagerControlRequest struct {
ServerInstanceID string
ProfileKey string
Operation ClientManagerLifecycleOperation
ExpectedDeploymentGeneration int
IdempotencyKey string
}
type ClientManagerUpdateRequest struct {
ServerInstanceID string
ProfileKey string
DistributionID string
ExpectedDeploymentGeneration int
Approved bool
IdempotencyKey string
}
type ClientManagerUninstallRequest struct {
ServerInstanceID string
ProfileKey string
ExpectedDeploymentGeneration int
Confirmed bool
IdempotencyKey string
}
type ClientManagerRetryRequest struct {
ServerInstanceID string
ProfileKey string
ExpectedDeploymentGeneration int
IdempotencyKey string
}
type ClientManagerRevokeSessionRequest struct {
ServerInstanceID string
ProfileKey string
Reason string
}
type ClientManagerLifecycleInputRequest struct {
RunEndpointID string
SessionToken string
JobID string
LeaseToken string
Attempt int
}
type ClientManagerLifecycleInput struct {
InstallationID string
ServerInstanceID string
ProfileKey string
Operation ClientManagerLifecycleOperation
ArtifactID string
Checksum string
TargetOS string
TargetArch string
Version string
SourceRevision string
KeyGeneration int
DeploymentGeneration int
ExecutableRef string
Arguments []string
AutoStart bool
StartupTimeoutSeconds int
StopTimeoutSeconds int
HealthConfirmationSeconds int
IdempotencyKey string
}
type ClientManagerRegisterRequest struct {
InstallationID string
ServerInstanceID string
ProfileKey string
ArtifactID string
Version string
SourceRevision string
TargetOS string
TargetArch string
KeyGeneration int
DeploymentGeneration int
Capabilities []string
Timestamp time.Time
Nonce string
Signature string
}
type ClientManagerRegisterResult struct {
Accepted bool
InstallationID string
SessionToken string
ExpiresAt time.Time
HeartbeatEvery int
ServerTime time.Time
}
type ClientManagerHeartbeat struct {
InstallationID string
SessionToken string
Sequence uint64
Health ClientManagerHealthStatus
HealthReason string
Capabilities []string
SentAt time.Time
}
type ClientManagerHeartbeatResult struct {
Accepted bool
InstallationID string
Status ClientManagerLifecycleStatus
Health ClientManagerHealthStatus
NextHeartbeat int
SessionExpiresAt time.Time
ServerTime time.Time
}
type ClientManagerInstallationFilter struct {
ServerInstanceID string
ProfileKey string
RunEndpointID string
Status ClientManagerLifecycleStatus
}
type ClientManagerSessionFilter struct {
InstallationID string
ServerInstanceID string
ProfileKey string
Status ClientManagerSessionStatus
}
type ClientManagerNonceFilter struct {
InstallationID string
ExpiresBefore time.Time
}
func CopyClientManagerInstallation(value ClientManagerInstallation) ClientManagerInstallation {
return value
}
func CopyClientManagerSession(value ClientManagerSession) ClientManagerSession {
value.Capabilities = CopyStringSlice(value.Capabilities)
return value
}
func CopyClientManagerRegistrationNonce(value ClientManagerRegistrationNonce) ClientManagerRegistrationNonce {
return value
}
func CopyClientManagerLifecycleView(value ClientManagerLifecycleView) ClientManagerLifecycleView {
value.Installation = CopyClientManagerInstallation(value.Installation)
value.Distribution = CopyClientManagerDistribution(value.Distribution)
value.Job = CopyJob(value.Job)
value.Actions = append([]ClientManagerLifecycleActionAvailability(nil), value.Actions...)
return value
}
func CopyClientManagerLifecycleInput(value ClientManagerLifecycleInput) ClientManagerLifecycleInput {
value.Arguments = CopyStringSlice(value.Arguments)
return value
}
func CopyClientManagerRegisterRequest(value ClientManagerRegisterRequest) ClientManagerRegisterRequest {
value.Capabilities = CopyStringSlice(value.Capabilities)
return value
}
func CopyClientManagerHeartbeat(value ClientManagerHeartbeat) ClientManagerHeartbeat {
value.Capabilities = CopyStringSlice(value.Capabilities)
return value
}