package com.emotion.service;

import com.emotion.dto.request.AiConfigCallStatsRequest;
import com.emotion.dto.response.AiConfigCallStatsResponse;
import com.emotion.dto.response.DashboardStatsResponse;
import java.util.List;

/**
 * 仪表盘服务接口
 * 
 * @author system
 * @date 2025-10-31
 */
public interface DashboardService {

    /**
     * 获取仪表盘统计数据
     * 
     * @return 仪表盘统计数据
     */
    DashboardStatsResponse getDashboardStats();

    /**
     * 获取用户统计数据
     * 
     * @return 用户统计数据
     */
    DashboardStatsResponse.UserStats getUserStats();

    /**
     * 获取内容统计数据
     * 
     * @return 内容统计数据
     */
    DashboardStatsResponse.ContentStats getContentStats();

    /**
     * 获取AI服务统计数据
     * 
     * @return AI服务统计数据
     */
    DashboardStatsResponse.AiServiceStats getAiServiceStats();

    /**
     * 获取系统统计数据
     * 
     * @return 系统统计数据
     */
    DashboardStatsResponse.SystemStats getSystemStats();

    /**
     * 获取用户增长趋势数据
     * 
     * @param days 天数，默认7天
     * @return 用户增长趋势数据
     */
    List<DashboardStatsResponse.UserGrowthTrend> getUserGrowthTrends(int days);

    /**
     * 获取最近登录用户
     * 
     * @param limit 限制数量，默认10个
     * @return 最近登录用户列表
     */
    List<DashboardStatsResponse.RecentLogin> getRecentLogins(int limit);

    /**
     * 获取 AI 配置调用次数统计（按调用次数倒序）
     *
     * @param request 统计请求
     * @return AI配置调用次数统计响应
     */
    AiConfigCallStatsResponse getAiConfigCallStats(AiConfigCallStatsRequest request);
}