package com.ruoyi.jarvis.service;

import java.util.Map;

/**
 * 小红书/抖音内容生成Service接口
 * 
 * @author ruoyi
 * @date 2025-01-XX
 */
public interface ISocialMediaService 
{
    /**
     * 提取商品标题关键词
     * 
     * @param productName 商品名称
     * @return 关键词结果
     */
    Map<String, Object> extractKeywords(String productName);

    /**
     * 生成文案
     * 
     * @param productName 商品名称
     * @param originalPrice 原价
     * @param finalPrice 到手价
     * @param keywords 关键词
     * @param style 文案风格
     * @return 生成的文案
     */
    Map<String, Object> generateContent(String productName, Object originalPrice, 
                                        Object finalPrice, String keywords, String style);

    /**
     * 一键生成完整内容（关键词 + 文案 + 图片）
     * 
     * @param productImageUrl 商品主图URL
     * @param productName 商品名称
     * @param originalPrice 原价
     * @param finalPrice 到手价
     * @param style 文案风格
     * @return 完整内容
     */
    Map<String, Object> generateCompleteContent(String productImageUrl, String productName,
                                                Object originalPrice, Object finalPrice, String style);

    /**
     * 获取提示词模板列表
     */
    com.ruoyi.common.core.domain.AjaxResult listPromptTemplates();

    /**
     * 获取单个提示词模板
     */
    com.ruoyi.common.core.domain.AjaxResult getPromptTemplate(String key);

    /**
     * 保存提示词模板
     */
    com.ruoyi.common.core.domain.AjaxResult savePromptTemplate(Map<String, Object> request);

    /**
     * 删除提示词模板（恢复默认）
     */
    com.ruoyi.common.core.domain.AjaxResult deletePromptTemplate(String key);

    /**
     * 生成闲鱼文案（代下单、教你下单），并可选生成种草文案。
     *
     * request 常用字段：
     * - title/remark（兼容旧版手动入口）
     * - generateSeedNote(boolean) 是否额外生成种草文案
     * - goods_title/goods_model/goods_type（种草文案必传）
     * - goods_brand/channel_source/official_price/sell_price/warranty/delivery_install（可选）
     *
     * @return 包含代下单、教你下单，以及可选 seedNote 的 Map
     */
    Map<String, Object> generateXianyuWenan(Map<String, Object> request);

    /** 列出多套大模型接入配置及当前激活的 id（与 Jarvis 共用 Redis） */
    com.ruoyi.common.core.domain.AjaxResult listLlmProfiles();

    /** 获取单套配置（编辑用，密钥脱敏） */
    com.ruoyi.common.core.domain.AjaxResult getLlmProfile(String id);

    /** 新增一套配置 */
    com.ruoyi.common.core.domain.AjaxResult createLlmProfile(Map<String, Object> request);

    /** 更新一套配置 */
    com.ruoyi.common.core.domain.AjaxResult updateLlmProfile(String id, Map<String, Object> request);

    /** 删除一套配置 */
    com.ruoyi.common.core.domain.AjaxResult deleteLlmProfile(String id);

    /** 激活指定 id，Jarvis 调用时使用该套 */
    com.ruoyi.common.core.domain.AjaxResult setActiveLlmProfile(String id);

    /** 取消激活（Jarvis 回退 yml 默认 Ollama） */
    com.ruoyi.common.core.domain.AjaxResult clearActiveLlmProfile();

    /** 清空所有套及旧版单键，Jarvis 回退默认 */
    com.ruoyi.common.core.domain.AjaxResult resetAllLlmConfig();

    /** 转发 Jarvis 做一次 LLM 连通测试（可指定 profileId 与自定义问题） */
    com.ruoyi.common.core.domain.AjaxResult testLlmProfile(Map<String, Object> request);
}

