using System.ComponentModel.DataAnnotations; namespace FutureMailAPI.DTOs { public class WritingAssistantRequestDto { [Required(ErrorMessage = "提示内容是必填项")] [StringLength(1000, ErrorMessage = "提示内容长度不能超过1000个字符")] public string Prompt { get; set; } = string.Empty; [Required(ErrorMessage = "辅助类型是必填项")] [EnumDataType(typeof(WritingAssistantType), ErrorMessage = "无效的辅助类型")] public WritingAssistantType Type { get; set; } [EnumDataType(typeof(WritingTone), ErrorMessage = "无效的语气类型")] public WritingTone Tone { get; set; } = WritingTone.CASUAL; [EnumDataType(typeof(WritingLength), ErrorMessage = "无效的长度类型")] public WritingLength Length { get; set; } = WritingLength.MEDIUM; [StringLength(500, ErrorMessage = "上下文信息长度不能超过500个字符")] public string? Context { get; set; } } public class WritingAssistantResponseDto { public string Content { get; set; } = string.Empty; public List Suggestions { get; set; } = new(); public int EstimatedTime { get; set; } // 预计写作时间(分钟) } public class SentimentAnalysisRequestDto { [Required(ErrorMessage = "内容是必填项")] [StringLength(2000, ErrorMessage = "内容长度不能超过2000个字符")] public string Content { get; set; } = string.Empty; } public class SentimentAnalysisResponseDto { public SentimentType Sentiment { get; set; } public double Confidence { get; set; } // 0-1 置信度 public List Emotions { get; set; } = new(); public List Keywords { get; set; } = new(); public string Summary { get; set; } = string.Empty; } public class EmotionScore { public EmotionType Type { get; set; } public double Score { get; set; } } public class FuturePredictionRequestDto { [Required(ErrorMessage = "预测内容是必填项")] [StringLength(1000, ErrorMessage = "预测内容长度不能超过1000个字符")] public string Content { get; set; } = string.Empty; [Required(ErrorMessage = "预测类型是必填项")] [EnumDataType(typeof(PredictionType), ErrorMessage = "无效的预测类型")] public PredictionType Type { get; set; } [Range(1, 365, ErrorMessage = "预测天数必须在1-365之间")] public int DaysAhead { get; set; } = 30; } public class FuturePredictionResponseDto { public string Prediction { get; set; } = string.Empty; public double Confidence { get; set; } // 0-1 置信度 public List Factors { get; set; } = new(); public List Suggestions { get; set; } = new(); } // 枚举定义 public enum WritingAssistantType { OUTLINE = 0, DRAFT = 1, COMPLETE = 2 } public enum WritingTone { FORMAL = 0, CASUAL = 1, EMOTIONAL = 2, INSPIRATIONAL = 3 } public enum WritingLength { SHORT = 0, MEDIUM = 1, LONG = 2 } public enum SentimentType { POSITIVE = 0, NEUTRAL = 1, NEGATIVE = 2, MIXED = 3 } public enum EmotionType { HAPPY = 0, SAD = 1, HOPEFUL = 2, NOSTALGIC = 3, EXCITED = 4, ANXIOUS = 5, GRATEFUL = 6, CONFUSED = 7 } public enum PredictionType { CAREER = 0, RELATIONSHIP = 1, HEALTH = 2, FINANCIAL = 3, PERSONAL_GROWTH = 4 } }