package com.datacenter.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.datacenter.entity.stat.StatTodayOverview;

import java.time.LocalDate;

public interface StatTodayOverviewService extends IService<StatTodayOverview> {

    /**
     * 计算指定日期、指定内部账户模式的统计并写入（upsert）。
     *
     * @param date            目标日期
     * @param includeInternal 是否包含 member.is_internal=1 的内部账户
     * @return 写入后的统计记录
     */
    StatTodayOverview computeAndSave(LocalDate date, boolean includeInternal);

    /**
     * 便捷方法：同时计算两个变体（不含内部 + 含内部）。
     */
    void computeAndSaveBoth(LocalDate date);

    /**
     * 查询指定日期、指定模式的统计记录（可能为 null）。
     */
    StatTodayOverview getByDate(LocalDate date, boolean includeInternal);

    /**
     * 补算过去 N 天的历史概览数据（含充值提现），从昨天往前推 days 天。
     */
    void backfill(int days);
}
