using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using NPP.SmartSchedue.Api.Contracts.Domain.Time;
using ZhonTai.Admin.Core.Repositories;
namespace NPP.SmartSchedue.Api.Contracts;
///
/// 班次规则关联仓储接口
///
public interface IShiftRuleMappingRepository : IRepositoryBase
{
///
/// 根据班次ID获取有效的班次规则列表
/// 深度业务思考:通过映射表关联,获取班次对应的所有有效规则
///
/// 班次ID
/// 目标日期(用于生效时间判断)
/// 有效的班次规则列表
Task> GetEffectiveShiftRulesAsync(long shiftId, DateTime? targetDate = null);
///
/// 批量获取多个班次的规则映射
/// 深度业务思考:批量查询优化,避免N+1查询问题
///
/// 班次ID列表
/// 目标日期(用于生效时间判断)
/// 班次ID到规则列表的映射
Task>> GetBatchShiftRulesAsync(List shiftIds, DateTime? targetDate = null);
}