package cn.nianxx.thhotel.platform.message.common.result;

import com.fasterxml.jackson.annotation.JsonProperty;
import java.time.OffsetDateTime;
import java.util.List;

/**
 * 邮件会话中的单封邮件详情。该结果会返回完整 text/html 和媒体外链，只能用于受控会话详情场景。
 *
 * @param id 内部 SourceMessage Inbox ID
 * @param externalMessageId 外部单封邮件 ID
 * @param externalConversationId 外部邮件会话 ID
 * @param senderSummary 发件人展示值，当前不打码
 * @param subject 邮件主题摘要
 * @param receivedAt 邮件来源接收时间，UTC；缺失时回退本系统接收时间
 * @param sourceSentAt 邮件来源发送时间，UTC
 * @param textBody 完整纯文本正文
 * @param htmlBody 完整 HTML 正文，前端展示前必须 sanitize
 * @param htmlBodySanitized 后端第一版清洗后的 HTML，前端生产展示应优先使用
 * @param htmlSanitizeRequired 是否要求前端 sanitize HTML
 * @param htmlRenderMode HTML 渲染建议模式，例如 SANITIZED_HTML 或 TEXT_ONLY
 * @param inlineImages 内联图片外链
 * @param attachments 附件外链
 * @param relatedOrders 关联订单摘要
 * @param relatedTasks 关联任务摘要
 */
public record SourceMessageConversationMessageResult(
        String id,
        @JsonProperty("external_message_id")
        String externalMessageId,
        @JsonProperty("external_conversation_id")
        String externalConversationId,
        @JsonProperty("sender_summary")
        String senderSummary,
        String subject,
        @JsonProperty("received_at")
        OffsetDateTime receivedAt,
        @JsonProperty("source_sent_at")
        OffsetDateTime sourceSentAt,
        @JsonProperty("text_body")
        String textBody,
        @JsonProperty("html_body")
        String htmlBody,
        @JsonProperty("html_body_sanitized")
        String htmlBodySanitized,
        @JsonProperty("html_sanitize_required")
        Boolean htmlSanitizeRequired,
        @JsonProperty("html_render_mode")
        String htmlRenderMode,
        @JsonProperty("inline_images")
        List<SourceMessageOriginalMediaResponse> inlineImages,
        List<SourceMessageOriginalMediaResponse> attachments,
        @JsonProperty("related_orders")
        List<SourceMessageRelatedOrderResult> relatedOrders,
        @JsonProperty("related_tasks")
        List<SourceMessageRelatedTaskResult> relatedTasks
) {
}
