package tech.easyflow.ai.easyagentsflow.upload;

import org.springframework.util.StringUtils;

import java.io.Serializable;

/**
 * Public Workflow API 已准备或已写入的临时文件。
 *
 * @param filePath 工作流运行时读取 URL；物理写入完成前为空
 * @param storageLocator 可恢复文件存储定位符
 */
public record WorkflowApiStoredFile(
        String filePath,
        String storageLocator) implements Serializable {

    /**
     * 创建临时文件记录。
     *
     * @throws IllegalArgumentException 恢复定位符为空时抛出
     */
    public WorkflowApiStoredFile {
        if (!StringUtils.hasText(storageLocator)) {
            throw new IllegalArgumentException(
                    "工作流临时文件恢复定位符不能为空");
        }
    }

    /**
     * 返回写入完成后的临时文件记录。
     *
     * @param resolvedFilePath 文件读取 URL
     * @return 包含原恢复定位符的新记录
     */
    public WorkflowApiStoredFile withFilePath(
            String resolvedFilePath) {
        return new WorkflowApiStoredFile(
                resolvedFilePath,
                storageLocator);
    }
}
