package shop.alien.storeplatform.feign;

import com.fasterxml.jackson.databind.JsonNode;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@FeignClient(url = "${feign.alienAI.url}", name = "alien-AI")
public interface AlienAIFeign {

    /**
     * 登录接口 - 获取access_token
     *
     * @param username 用户名
     * @param password 密码
     * @return JsonNode 响应体，包含access_token
     */
    @PostMapping(value = "/ai/user-auth-core/api/v1/auth/login",
            consumes = MediaType.MULTIPART_FORM_DATA_VALUE,
            produces = MediaType.APPLICATION_JSON_VALUE)
    JsonNode login(@RequestBody MultiValueMap<String, String> formData);

    /**
     * 生成促销图片。请求体格式：{"text": "图片描述内容"}
     *
     * @param authorization Bearer token，格式为 "Bearer {access_token}"
     * @param requestBody 请求体，需包含 key "text"，值为图片描述。例如：Map.of("text", "描述内容")
     * @return JsonNode 响应体，可以灵活解析
     */
    @PostMapping(value = "/ai/life-manager/api/v1/promotion_image/generate",
            consumes = MediaType.APPLICATION_JSON_VALUE,
            produces = MediaType.APPLICATION_JSON_VALUE)
    JsonNode generatePromotionImage(@RequestHeader("Authorization") String authorization, @RequestBody Map<String, String> requestBody);

//    /**
//     * 使用 JsonNode 灵活调用接口 - 发起AI审核(多模态)
//     *
//     * @param authorization Bearer token，格式为 "Bearer {access_token}"
//     * @param requestBody JsonNode 请求体，可以灵活构建
//     * @return JsonNode 响应体，可以灵活解析
//     */
//    @PostMapping(value = "/ai/auto-review/api/v1/multimodal_audit_task/submit",
//            consumes = MediaType.APPLICATION_JSON_VALUE,
//            produces = MediaType.APPLICATION_JSON_VALUE)
//    JsonNode multiModelAudit(@RequestHeader("Authorization") String authorization, @RequestBody JsonNode requestBody);
//
//
//    /**
//     * 获取 AI审核(多模态) 结果
//     *
//     * @param authorization Bearer token，格式为 "Bearer {access_token}"
//     * @param taskId 任务ID
//     * @return JsonNode 响应体，包含审核结果
//     */
//    @GetMapping(value = "/ai/auto-review/api/v1/multimodal_audit_task/getResult",
//            produces = MediaType.APPLICATION_JSON_VALUE)
//    JsonNode getMultiModelAuditResult(@RequestHeader("Authorization") String authorization, @RequestParam("task_id") String taskId);

    /**
     * 获取 AI审核(多模态) 结果
     *
     * @param authorization Bearer token，格式为 "Bearer {access_token}"
     * @param requestBody
     * @return JsonNode 响应体，包含审核结果
     */
    @GetMapping(value = "/api/v1/moderate",
            produces = MediaType.APPLICATION_JSON_VALUE)
    JsonNode syncAudit(@RequestHeader("Authorization") String authorization, @RequestBody JsonNode requestBody);
}
