package com.agileboot.codegen.service;

import com.agileboot.codegen.entity.TemplateUsageLog;

import java.util.Date;
import java.util.List;

/**
 * 模板使用日志 Service接口
 * 
 * @author system
 * @date 2025-09-26
 */
public interface ITemplateUsageLogService {

    /**
     * 记录模板使用日志
     *
     * @param userId         使用者ID
     * @param templateSource 模板来源
     * @param templateId     模板ID
     * @param templateName   模板名称
     * @param templateGroup  模板分组
     * @param ipAddress      IP地址
     */
    void logTemplateUsage(Long userId, String templateSource, String templateId, 
                         String templateName, String templateGroup, String ipAddress);

    /**
     * 查询用户的模板使用历史
     *
     * @param userId    用户ID
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param limit     限制数量
     * @return 使用日志列表
     */
    List<TemplateUsageLog> getUserUsageHistory(Long userId, Date startTime, Date endTime, Integer limit);

    /**
     * 查询模板使用统计
     *
     * @param templateSource 模板来源
     * @param templateId     模板ID
     * @param startTime      开始时间
     * @param endTime        结束时间
     * @return 使用次数
     */
    int getTemplateUsageCount(String templateSource, String templateId, Date startTime, Date endTime);

    /**
     * 查询热门模板统计
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @param limit     限制数量
     * @return 热门模板列表
     */
    List<TemplateUsageLog> getPopularTemplates(Date startTime, Date endTime, Integer limit);
}

