using System;
using System.Collections.Generic;
using NPP.SmartSchedue.Api.Contracts.Core.Enums;

namespace NPP.SmartSchedue.Api.Contracts.Services.Work.Input;

/// <summary>
/// 任务分析输入参数
/// </summary>
public class TaskAnalysisInput
{
    /// <summary>
    /// 分析时间范围开始
    /// </summary>
    public DateTime? StartDate { get; set; }
    
    /// <summary>
    /// 分析时间范围结束
    /// </summary>
    public DateTime? EndDate { get; set; }
    
    /// <summary>
    /// 人员ID列表（可选，只分析指定人员的任务）
    /// </summary>
    public List<long> PersonnelIds { get; set; } = new List<long>();
    
    /// <summary>
    /// 任务状态列表（可选，只分析指定状态的任务）
    /// </summary>
    public List<WorkOrderStatusEnum> Statuses { get; set; } = new List<WorkOrderStatusEnum>();
    
    /// <summary>
    /// 工序ID列表（可选，只分析指定工序的任务）
    /// </summary>
    public List<long> ProcessIds { get; set; } = new List<long>();
    
    /// <summary>
    /// 是否分析工作负载分布
    /// </summary>
    public bool AnalyzeWorkloadDistribution { get; set; } = true;
    
    /// <summary>
    /// 是否分析技能匹配情况
    /// </summary>
    public bool AnalyzeSkillMatch { get; set; } = true;
    
    /// <summary>
    /// 是否分析时间利用率
    /// </summary>
    public bool AnalyzeTimeUtilization { get; set; } = true;
    
    /// <summary>
    /// 是否分析冲突情况
    /// </summary>
    public bool AnalyzeConflicts { get; set; } = true;

    /// <summary>
    /// 任务状态
    /// </summary>
    public WorkOrderStatusEnum? Status { get; set; }
}