package com.jeesharp.business.modules.contentsecurity.api;

import com.jeesharp.business.modules.contentsecurity.dto.ContentCheckRequest;
import com.jeesharp.business.modules.contentsecurity.dto.ContentCheckResult;

import java.util.List;

/**
 * 内容安全跨模块 API：评价、反馈等 UGC 入口仅依赖本接口，不感知微信等具体厂商。
 *
 * @author jeesharp
 * @since 2026-06-27
 */
public interface ContentSecurityApi {

    /**
     * 文本同步检测。
     */
    ContentCheckResult checkText(ContentCheckRequest request);

    /**
     * 单张图片检测（可同步 img_sec_check 或异步 mediaCheckAsync）。
     */
    ContentCheckResult checkMedia(ContentCheckRequest request);

    /**
     * 多图批量：任一 REJECT 则整体 REJECT；存在 PENDING 则整体 PENDING。
     */
    ContentCheckResult checkMediaBatch(List<ContentCheckRequest> requests);

    /**
     * 业务落库后，将异步任务 trace_id 绑定到业务主键。
     */
    default void bindPendingTasks(String bizModule, String bizId, List<String> traceIds) {
        bindPendingTasks(bizModule, bizId, traceIds, null);
    }

    /**
     * 业务落库后绑定：异步 trace_id + 同步检测流水 auditLogId(s) 均回写到业务主键。
     */
    void bindPendingTasks(String bizModule, String bizId, List<String> traceIds, List<String> auditLogIds);

    /**
     * 处理微信 {@code wxa_media_check} 消息推送（原始 JSON 字符串）。
     */
    void handleWechatMediaCallback(String rawJson);

    /**
     * 检测不通过时抛出业务异常（decision=REJECT）。
     */
    void assertPass(ContentCheckResult result);
}
