package models import "time" const ( RolePlayer = "player" RoleCreator = "creator" RoleAdmin = "admin" ScriptSourceBuiltin = "builtin" ScriptSourceAIGenerated = "ai_generated" ScriptSourceUploaded = "uploaded" ScriptSourceCreator = "creator" ScriptStatusDraft = "draft" ScriptStatusPublished = "published" ScriptStatusDisabled = "disabled" GameStatusWaiting = "waiting" GameStatusPlaying = "playing" GameStatusPaused = "paused" GameStatusCompleted = "completed" PlayerStatusActive = "active" PlayerStatusLeft = "left" PlayerStatusEliminated = "eliminated" MessageTypePublic = "public" MessageTypePrivate = "private" MessageTypeSystem = "system" MessageTypeClue = "clue" ) type User struct { ID string Email *string Nickname *string AvatarURL *string PasswordHash *string Role string IsGuest bool GameCount int TokenVersion int CreatedAt time.Time } type GameSession struct { ID string ScriptID string Status string Phase string PhaseIndex int StartedAt *time.Time CompletedAt *time.Time Config string CreatedAt time.Time } type SessionPlayer struct { ID string SessionID string UserID *string RoleID string RoleName string IsHuman bool IsReady bool AvatarURL *string Status string JoinedAt time.Time } type ChatMessage struct { ID string SessionID string SenderRoleID string SenderName string MessageType string Content string TargetRoleID *string ClueID *string PhaseIndex int CreatedAt time.Time } type ClueState struct { ID string SessionID string ClueID string Status string RevealedBy *string ReleasedAt *time.Time CreatedAt time.Time } type Vote struct { ID string SessionID string Round int VoterID string TargetID string Reason *string CreatedAt time.Time }