package com.ycwl.basic.puzzle.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 拼图生成响应DTO
 *
 * @author Claude
 * @since 2025-01-17
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PuzzleGenerateResponse {

    /**
     * 生成的图片URL
     */
    private String imageUrl;

    /**
     * 文件大小（字节）
     */
    private Long fileSize;

    /**
     * 图片宽度
     */
    private Integer width;

    /**
     * 图片高度
     */
    private Integer height;

    /**
     * 生成耗时（毫秒）
     */
    private Integer generationDuration;

    /**
     * 生成记录ID
     */
    private Long recordId;

    /**
     * 是否为复用历史记录
     * true-复用历史图片(未重新渲染), false-新生成
     */
    private Boolean isDuplicate;

    /**
     * 原始记录ID
     * 当isDuplicate=true时,记录被复用的原始记录ID
     */
    private Long originalRecordId;

    /**
     * 创建成功响应(新生成)
     */
    public static PuzzleGenerateResponse success(String imageUrl, Long fileSize, Integer width, Integer height, Integer duration, Long recordId) {
        return new PuzzleGenerateResponse(imageUrl, fileSize, width, height, duration, recordId, false, null);
    }

    /**
     * 创建成功响应(支持去重标记)
     */
    public static PuzzleGenerateResponse success(String imageUrl, Long fileSize, Integer width, Integer height, Integer duration, Long recordId, Boolean isDuplicate, Long originalRecordId) {
        return new PuzzleGenerateResponse(imageUrl, fileSize, width, height, duration, recordId, isDuplicate, originalRecordId);
    }
}
