package domain import "time" // GamePlayer is a local game identity and is never a platform console user. type GamePlayer struct { ID string ServerInstanceID string GamePlayerID string DisplayName string FirstSeenAt time.Time LastSeenAt time.Time LastEventAt time.Time CreatedAt time.Time UpdatedAt time.Time } type GamePlayerFilter struct { ServerInstanceID string Search string Limit int } // GamePlayerAlias preserves a bounded name history for one local game player. type GamePlayerAlias struct { ID string GamePlayerRecordID string ServerInstanceID string Alias string FirstSeenAt time.Time LastSeenAt time.Time } type GamePlayerAliasFilter struct { GamePlayerRecordID string ServerInstanceID string Limit int } // GamePlayerSession records a successful, bounded SCUM session. No raw network data is present. type GamePlayerSession struct { ID string GamePlayerRecordID string ServerInstanceID string SourceSessionID string StartedAt time.Time EndedAt time.Time EndReason string LastEventAt time.Time } type GamePlayerSessionFilter struct { GamePlayerRecordID string ServerInstanceID string OpenOnly bool Limit int } // GameAccessAttempt is review evidence. NetworkCorrelationKey is an irreversible server-local HMAC output. type GameAccessAttempt struct { ID string ServerInstanceID string GamePlayerRecordID string EventID string OccurredAt time.Time Outcome string Reason string NetworkCorrelationKey string ExpiresAt time.Time } type GameAccessAttemptFilter struct { ServerInstanceID string GamePlayerRecordID string Limit int } type GameSecuritySignalStatus string const ( GameSecuritySignalOpen GameSecuritySignalStatus = "open" GameSecuritySignalReviewRequired GameSecuritySignalStatus = "review-required" GameSecuritySignalExpired GameSecuritySignalStatus = "expired" ) // GameSecuritySignal is evidence for manual review; it carries no enforcement action. type GameSecuritySignal struct { ID string ServerInstanceID string GamePlayerRecordID string RuleKey string Status GameSecuritySignalStatus EvidenceCount int Summary string FirstObservedAt time.Time LastObservedAt time.Time ExpiresAt time.Time } type GameSecuritySignalFilter struct { ServerInstanceID string GamePlayerRecordID string Limit int } type GamePlayerProfile struct { Player GamePlayer Aliases []GamePlayerAlias Sessions []GamePlayerSession AccessAttempts []GameAccessAttempt SecuritySignals []GameSecuritySignal } func CopyGamePlayer(v GamePlayer) GamePlayer { return v } func CopyGamePlayerAlias(v GamePlayerAlias) GamePlayerAlias { return v } func CopyGamePlayerSession(v GamePlayerSession) GamePlayerSession { return v } func CopyGameAccessAttempt(v GameAccessAttempt) GameAccessAttempt { return v } func CopyGameSecuritySignal(v GameSecuritySignal) GameSecuritySignal { return v }