package tech.easyflow.ai.enums;

import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;

/**
 * 知识库分享动作范围。
 */
public enum KnowledgeShareActionScope {

    VIEW,
    SEARCH,
    CONTENT_CREATE,
    CONTENT_UPDATE,
    CONTENT_DELETE,
    IMPORT_EXPORT,
    CONFIG_UPDATE;

    /**
     * 解析前端提交的动作范围集合。
     *
     * @param values 原始动作范围
     * @return 规范化后的动作范围集合
     */
    public static Set<String> normalize(Iterable<String> values) {
        Set<String> scopes = new LinkedHashSet<>();
        if (values == null) {
            return scopes;
        }
        for (String value : values) {
            if (value == null || value.isBlank()) {
                continue;
            }
            scopes.add(KnowledgeShareActionScope.valueOf(value.trim().toUpperCase()).name());
        }
        return scopes;
    }

    /**
     * 获取默认 URL 分享授权范围。
     *
     * @return 默认授权范围
     */
    public static Set<String> defaultUrlScopes() {
        return new LinkedHashSet<>(Arrays.asList(
            VIEW.name(),
            SEARCH.name(),
            CONTENT_CREATE.name(),
            CONTENT_UPDATE.name(),
            CONTENT_DELETE.name(),
            IMPORT_EXPORT.name(),
            CONFIG_UPDATE.name()
        ));
    }

    /**
     * 获取默认 API 分享授权范围。
     *
     * <p>产品上固定开放查看、检索、新增、更新、导入导出，不提供删除能力。</p>
     *
     * @return 默认 API 授权范围
     */
    public static Set<String> defaultApiScopes() {
        return new LinkedHashSet<>(Arrays.asList(
            VIEW.name(),
            SEARCH.name(),
            CONTENT_CREATE.name(),
            CONTENT_UPDATE.name(),
            IMPORT_EXPORT.name()
        ));
    }
}
