package com.lesingle.edu.service;

import com.lesingle.edu.dto.response.TeacherActivityRankResponse;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * School Statistics Service Interface
 */
public interface SchoolStatsService {

    /**
     * Get school statistics (teacher count, student count, class count)
     */
    Map<String, Object> getSchoolStats(Long tenantId);

    /**
     * 获取活跃教师排行（自然月统计）
     *
     * @param tenantId 租户 ID
     * @param startDate 开始日期（可选，默认本月 1 号）
     * @param endDate 结束日期（可选，默认今天）
     * @param limit    返回数量限制
     * @return 教师活跃度排行列表
     */
    List<TeacherActivityRankResponse> getActiveTeachers(Long tenantId, LocalDate startDate, LocalDate endDate, int limit);

    /**
     * Get course usage statistics
     * @param tenantId 租户 ID
     * @param startDate 开始日期（可选，默认本月 1 号）
     * @param endDate 结束日期（可选，默认今天）
     */
    List<Map<String, Object>> getCourseUsageStats(Long tenantId, LocalDate startDate, LocalDate endDate);

    /**
     * Get lesson trend by date range
     * @param tenantId 租户 ID
     * @param startDate 开始日期（可选，默认 7 天前）
     * @param endDate 结束日期（可选，默认今天）
     */
    List<Map<String, Object>> getLessonTrend(Long tenantId, LocalDate startDate, LocalDate endDate);

    /**
     * Get course distribution
     */
    List<Map<String, Object>> getCourseDistribution(Long tenantId);
}
