package tech.easyflow.agent.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

import java.time.Duration;

/**
 * Agent 图片上传、草稿和对象存储配置。
 */
@ConfigurationProperties(prefix = "easyflow.agent.media")
public class AgentMediaProperties {

    /** x-file-storage 中的私有 Agent 媒体平台。 */
    private String platform = "minio-agent-media";
    /** 单次对话最多图片数。 */
    private int maxImageCount = 5;
    /** 单张图片最大字节数。 */
    private long maxImageBytes = 10L * 1024L * 1024L;
    /** 单张图片最大像素数。 */
    private long maxImagePixels = 40_000_000L;
    /** 临时图片有效期。 */
    private Duration uploadTtl = Duration.ofHours(24);
    /** 输入草稿有效期。 */
    private Duration composerDraftTtl = Duration.ofHours(24);
    /** 过期对象清理周期。 */
    private Duration cleanupInterval = Duration.ofMinutes(10);

    /** @return 私有媒体平台名称 */
    public String getPlatform() { return platform; }
    /** @param platform 私有媒体平台名称 */
    public void setPlatform(String platform) { this.platform = platform; }
    /** @return 单次图片上限 */
    public int getMaxImageCount() { return maxImageCount; }
    /** @param maxImageCount 单次图片上限 */
    public void setMaxImageCount(int maxImageCount) { this.maxImageCount = maxImageCount; }
    /** @return 单图字节上限 */
    public long getMaxImageBytes() { return maxImageBytes; }
    /** @param maxImageBytes 单图字节上限 */
    public void setMaxImageBytes(long maxImageBytes) { this.maxImageBytes = maxImageBytes; }
    /** @return 单图像素上限 */
    public long getMaxImagePixels() { return maxImagePixels; }
    /** @param maxImagePixels 单图像素上限 */
    public void setMaxImagePixels(long maxImagePixels) { this.maxImagePixels = maxImagePixels; }
    /** @return 临时图片 TTL */
    public Duration getUploadTtl() { return uploadTtl; }
    /** @param uploadTtl 临时图片 TTL */
    public void setUploadTtl(Duration uploadTtl) { this.uploadTtl = uploadTtl; }
    /** @return 草稿 TTL */
    public Duration getComposerDraftTtl() { return composerDraftTtl; }
    /** @param composerDraftTtl 草稿 TTL */
    public void setComposerDraftTtl(Duration composerDraftTtl) { this.composerDraftTtl = composerDraftTtl; }
    /** @return 清理周期 */
    public Duration getCleanupInterval() { return cleanupInterval; }
    /** @param cleanupInterval 清理周期 */
    public void setCleanupInterval(Duration cleanupInterval) { this.cleanupInterval = cleanupInterval; }
}
