package com.ruoyi.jarvis.service;

/**
 * 指令执行服务
 */
public interface IInstructionService {
    /**
     * 执行文本指令，返回结果文本
     * @param command 指令内容
     * @return 执行结果文本列表（可能为单条或多条）
     */
    java.util.List<String> execute(String command);
    
    /**
     * 执行文本指令，返回结果文本（支持强制生成参数）
     * @param command 指令内容
     * @param forceGenerate 是否强制生成表单（跳过地址重复检查）
     * @return 执行结果文本列表（可能为单条或多条）
     */
    java.util.List<String> execute(String command, boolean forceGenerate);
    
    /**
     * 执行文本指令，返回结果文本（支持强制生成参数和控制台入口标识）
     * @param command 指令内容
     * @param forceGenerate 是否强制生成表单（跳过地址重复检查）
     * @param isFromConsole 是否来自控制台入口（控制台入口跳过订单查询校验）
     * @return 执行结果文本列表（可能为单条或多条）
     */
    java.util.List<String> execute(String command, boolean forceGenerate, boolean isFromConsole);

    /**
     * 执行文本指令（支持传入企微成员 UserID，用于「京」统计按绑定联盟过滤）
     * @param wecomUserId 企业微信成员 UserID；控制台等非企微入口传 null（按全局规则统计）
     */
    java.util.List<String> execute(String command, boolean forceGenerate, boolean isFromConsole, String wecomUserId);

    /**
     * 获取历史消息记录
     * @param type 消息类型：request(请求) 或 response(响应)
     * @param limit 获取数量，默认100条
     * @return 历史消息列表
     */
    java.util.List<String> getHistory(String type, Integer limit);

    /**
     * 获取历史消息记录（支持关键词搜索，在全部数据中匹配）
     * @param type 消息类型：request(请求) 或 response(响应)
     * @param limit 返回数量上限，默认200条
     * @param keyword 搜索关键词，为空则按 limit 取最近 N 条
     * @return 历史消息列表
     */
    java.util.List<String> getHistory(String type, Integer limit, String keyword);
}


