using System.ComponentModel.DataAnnotations; using Hua.Todo.Application.Models; using Hua.Todo.Core.Entities; namespace Hua.Todo.Application.Services.Meeting.Models; /// /// 保存会议纪要请求。 /// public class SaveNotesRequest { /// /// 待办项 ID。 /// [Required] public Guid TaskId { get; set; } /// /// 会议纪要/转写文字内容。 /// [Required] [MaxLength(20000)] public string Notes { get; set; } = string.Empty; } /// /// 保存会议纪要响应。 /// public class SaveNotesResponse { /// /// 待办项 ID。 /// public Guid TaskId { get; set; } /// /// 保存后的会议纪要内容。 /// public string MeetingNotes { get; set; } = string.Empty; } /// /// 会议详情响应(不含子任务递归)。 /// public class MeetingDetailResponse { /// /// 待办项 ID。 /// public Guid TaskId { get; set; } /// /// 会议标题。 /// public string Title { get; set; } = string.Empty; /// /// 会议纪要/转写文字。 /// public string? MeetingNotes { get; set; } /// /// 录音时长(秒)。 /// public double? AudioDuration { get; set; } /// /// 是否已完成。 /// public bool IsCompleted { get; set; } } /// /// 会议任务拆分建议(LLM 输出)。 /// public class MeetingTaskSuggestion { /// 建议的待办项标题 public string Title { get; set; } = string.Empty; /// 建议优先级 public TaskPriority Priority { get; set; } = TaskPriority.Medium; /// 拆分原因(LLM 输出,用于 UI 展示) public string Reason { get; set; } = string.Empty; } /// /// AI 拆分请求。 /// public class BreakdownRequest { /// 待办项 ID [Required] public Guid TaskId { get; set; } /// 会议纪要文字(可选,不传则使用已保存的 meetingNotes) public string? Notes { get; set; } } /// /// AI 拆分响应。 /// public class BreakdownResponse { /// 待办项 ID public Guid TaskId { get; set; } /// 拆分建议列表 public List Suggestions { get; set; } = new(); } /// /// 批量创建请求中的单个子任务项。 /// public class SubTaskCreateItem { /// 子任务标题 [Required] public string Title { get; set; } = string.Empty; /// 子任务优先级 public TaskPriority Priority { get; set; } = TaskPriority.Medium; } /// /// 批量确认拆分请求。 /// public class ConfirmBreakdownRequest { /// 待办项 ID [Required] public Guid TaskId { get; set; } /// 要创建的子任务列表 [Required] public List SubTasks { get; set; } = new(); } /// /// 批量创建结果。 /// public class BatchCreateResult { /// 成功创建数量 public int CreatedCount { get; set; } /// 创建后的子任务 DTO 列表 public List SubTasks { get; set; } = new(); } /// /// 语音转写请求。 /// 音频数据以 Base64 编码在 JSON 中传输,避免 DynamicApi 中间件处理 multipart/form-data 的兼容问题。 /// public class TranscribeRequest { /// /// 待办项 ID。 /// [Required] public Guid TaskId { get; set; } /// /// Base64 编码的音频数据。 /// [Required] public string AudioBase64 { get; set; } = string.Empty; /// /// 音频格式,例如 "webm"、"mp4"、"wav"。 /// [Required] public string Format { get; set; } = string.Empty; /// /// 音频时长(秒),由前端录制时计算。 /// public double AudioDuration { get; set; } } /// /// 语音转写响应。 /// public class TranscribeResponse { /// /// 待办项 ID。 /// public Guid TaskId { get; set; } /// /// 转写后的文字内容。 /// public string Transcript { get; set; } = string.Empty; /// /// 音频时长(秒)。 /// public double AudioDuration { get; set; } }