package tech.easyflow.ai.document.support;

import org.springframework.util.StringUtils;
import tech.easyflow.ai.utils.DocUtil;

/**
 * 统一文档解析桥接支持的源文件类型。
 *
 * @author Codex
 * @since 2026-04-17
 */
public enum DocumentParseSourceType {

    PDF,
    DOCX,
    PPTX,
    XLSX,
    UNSUPPORTED;

    /**
     * 根据文件名与内容类型推断文档类型。
     *
     * @param fileName 文件名
     * @param contentType MIME 类型
     * @return 文档类型
     */
    public static DocumentParseSourceType resolve(String fileName, String contentType) {
        if (StringUtils.hasText(contentType)) {
            String normalizedContentType = contentType.toLowerCase();
            if (normalizedContentType.contains("pdf")) {
                return PDF;
            }
            if (normalizedContentType.contains("wordprocessingml.document")) {
                return DOCX;
            }
            if (normalizedContentType.contains("presentationml.presentation")) {
                return PPTX;
            }
            if (normalizedContentType.contains("spreadsheetml.sheet")) {
                return XLSX;
            }
        }
        if (!StringUtils.hasText(fileName) || !fileName.contains(".")) {
            return UNSUPPORTED;
        }
        String suffix = DocUtil.normalizeSuffix(DocUtil.getSuffix(fileName));
        if ("pdf".equals(suffix)) {
            return PDF;
        }
        if ("docx".equals(suffix)) {
            return DOCX;
        }
        if ("pptx".equals(suffix)) {
            return PPTX;
        }
        if ("xlsx".equals(suffix)) {
            return XLSX;
        }
        return UNSUPPORTED;
    }

    /**
     * 判断是否属于 Office 首版接入类型。
     *
     * @return 是否是本次 Office 类型
     */
    public boolean isOffice() {
        return this == PPTX || this == XLSX;
    }
}
