package jnpf.attendance.service;

import jnpf.exception.HandleException;
import jnpf.exception.QueryException;
import jnpf.model.attendance.dto.scheduling.PreScheduleTableQueryDto;
import jnpf.model.attendance.vo.scheduling.PreScheduleTableVo;

/**
 * AI 智能排班确认：预排班主表生成与整包保存。
 *
 * @author xiaofeng
 * @create 2026-05-13
 */
public interface SmartPreScheduleService {

    /**
     * 按日期范围与人效目标生成预排班主表（含行内预览）。
     *
     * @param dto 查询条件
     * @return 主表数据
     */
    PreScheduleTableVo buildPreScheduleTable(PreScheduleTableQueryDto dto);

    /**
     * 按提交主表过滤 Redis 中 byEmployee 并写回，返回 Redis key 可变片段供后续确认落库。
     *
     * @param vo 含 groupId、rows，与生成接口 data 结构一致
     * @return redisKeySuffix：考勤组:yyyy-MM-dd_yyyy-MM-dd（不含租户与固定前缀）
     */
    String savePreScheduleTable(PreScheduleTableVo vo) throws HandleException, QueryException;
}
