package com.gxwebsoft.ai.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gxwebsoft.ai.entity.AiHistory;
import com.gxwebsoft.ai.param.AiHistoryParam;
import com.gxwebsoft.common.core.web.PageResult;

import java.util.List;

/**
 * AI审计历史记录表Service
 *
 * @author yc
 */
public interface AiHistoryService extends IService<AiHistory> {

    /**
     * 分页关联查询
     *
     * @param param 查询参数
     * @return PageResult<AiHistory>
     */
    PageResult<AiHistory> pageRel(AiHistoryParam param);

    /**
     * 关联查询全部
     *
     * @param param 查询参数
     * @return List<AiHistory>
     */
    List<AiHistory> listRel(AiHistoryParam param);

    /**
     * 根据id查询
     *
     * @param id ID
     * @return AiHistory
     */
    AiHistory getByIdRel(Long id);
    
    /**
     * 获取有效的历史记录
     *
     * @param requestHash 请求哈希值
     * @param interfaceName 接口名称
     * @param minutes 有效时间（分钟）
     * @return AiHistory
     */
    AiHistory getValidHistory(String requestHash, String interfaceName, int minutes);
    
    /**
     * 保存历史记录
     *
     * @param projectId 项目 ID
     * @param requestHash 请求哈希值
     * @param interfaceName 接口名称
     * @param requestData 请求数据
     * @param responseData 响应数据
     * @param userId 用户 ID
     * @param username 用户名
     */
    void saveHistory(Long projectId, String requestHash, String interfaceName, String requestData, String responseData, Integer userId, String username, Integer tenantId);
    
    /**
     * 根据接口名称和项目 ID 查询最新的历史记录
     *
     * @param interfaceName 接口名称
     * @param projectId 项目 ID
     * @return AiHistory
     */
    AiHistory getLatestHistory(String interfaceName, Long projectId);
}