namespace MiaoJiZhang.Api.Contracts; // ---- Auth(当前仅用户名密码;快捷登录接口预留不实现)---- public record RegisterRequest(string Username, string Password, bool AgreedToTerms = false); public record LoginRequest(string Username, string Password); public record AuthResponse(long UserId, string Username, string Token, DateTime ExpiresAt, bool AccountClosureCancelled = false); // ---- Onboarding ---- public record OnboardingRequest(string AppMode, string AvatarKey, string PersonaKey, string? CustomName); public record SwitchModeRequest(string AppMode); public record UpdateCompanionRequest(string? AvatarKey, string? PersonaKey, string? CustomName, int? RoastLevel, int? StickerFrequency, int? ProactiveLevel); // ---- User profile ---- public record AiCompanionDto(string AvatarKey, string PersonaKey, string? CustomName, int RoastLevel, int StickerFrequency, int ProactiveLevel); public record UserPermissionsDto(bool Ai); public record AiChatQuotaDto(int Limit, int Used, int Remaining, string Period, DateTime ResetAt); public record UserProfileResponse(long UserId, string Username, string? Nickname, string AppMode, AiCompanionDto? AiCompanion, bool OnboardingDone, UserPermissionsDto Permissions, AiChatQuotaDto AiChatQuota); public record UpdateProfileRequest(string? Nickname); public record ChangePasswordRequest(string CurrentPassword, string NewPassword); public record DeleteAccountRequest(string Password, string? ConfirmationText = null); public record AccountClosureResponse(DateTime RequestedAt, DateTime ScheduledAt); public record UpdateUserPermissionsRequest(bool Ai); public record UpdateAiChatQuotaRequest(int Limit, string Period, bool ResetUsage = false); // ---- 通用 ---- public record ApiError(string Code, string Message);