package tech.easyflow.agent.runtime.artifact;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * Artifact Tool、AG-UI 与管理端共用的安全视图。
 *
 * @param schemaVersion 结构版本
 * @param artifactId 稳定产物 ID
 * @param fileName 安全文件名
 * @param mimeType MIME 类型
 * @param size 文件字节数
 * @param sha256 文件 SHA-256
 * @param downloadUrl 鉴权下载地址
 * @param status 可公开状态
 */
public record AgentArtifactView(int schemaVersion,
                                String artifactId,
                                String fileName,
                                String mimeType,
                                long size,
                                String sha256,
                                String downloadUrl,
                                String status) {

    /**
     * 转换为稳定字段顺序的安全 Map。
     *
     * @return 不含对象存储定位信息的 Map
     */
    public Map<String, Object> toMap() {
        Map<String, Object> result = new LinkedHashMap<>();
        result.put("schemaVersion", schemaVersion);
        result.put("artifactId", artifactId);
        result.put("fileName", fileName);
        result.put("mimeType", mimeType);
        result.put("size", size);
        result.put("sha256", sha256);
        result.put("downloadUrl", downloadUrl);
        result.put("status", status);
        return result;
    }
}
