using System; using System.Collections.Generic; using NPP.SmartSchedue.Api.Contracts.Services.Integration.Output; namespace NPP.SmartSchedue.Api.Contracts.Services.Integration.Input { /// /// 处理任务变更输入 /// 用于检测和处理发布后的任务变更,触发智能重新分配 /// public class ProcessTaskChangesInput { /// /// 变更的任务ID列表 /// 指定需要处理变更的任务 /// public List ChangedTaskIds { get; set; } = new(); /// /// 整合记录ID /// 指定要更新的整合记录 /// public long IntegrationRecordId { get; set; } /// /// 变更触发源 /// TaskModification-任务修改, ResourceUnavailable-资源不可用, ConflictDetected-冲突检测, UserRequest-用户请求 /// public string ChangeTriggerSource { get; set; } = "TaskModification"; /// /// 处理策略 /// AutoReallocation-自动重新分配, ManualReview-手动审核, CreateNewVersion-创建新版本 /// public string ProcessingStrategy { get; set; } = "AutoReallocation"; /// /// 操作员用户ID /// public long OperatorUserId { get; set; } /// /// 操作员用户名 /// public string OperatorUserName { get; set; } = string.Empty; /// /// 操作员真实姓名 /// public string OperatorRealName { get; set; } = string.Empty; /// /// 变更原因说明 /// public string ChangeReason { get; set; } = string.Empty; /// /// 是否强制重新分配 /// 即使影响评分较低也强制执行重新分配 /// public bool ForceReallocation { get; set; } = false; /// /// 是否保持现有分配 /// 尽量保持当前的人员和设备分配,只调整有问题的部分 /// public bool PreserveExistingAllocations { get; set; } = true; /// /// 重新分配范围 /// ChangedOnly-仅重新分配变更的任务, Affected-重新分配受影响的任务, All-重新分配所有任务 /// public string ReallocationScope { get; set; } = "Affected"; /// /// 优先级调整策略 /// None-不调整, Boost-提升变更任务优先级, Balance-平衡所有任务优先级 /// public string PriorityAdjustmentStrategy { get; set; } = "None"; /// /// 通知相关人员 /// 变更处理完成后是否通知受影响的人员 /// public bool NotifyAffectedPersonnel { get; set; } = true; /// /// 创建变更日志 /// 是否详细记录变更处理过程 /// public bool CreateChangeLog { get; set; } = true; /// /// 允许的最大处理时间(分钟) /// 超时则转为手动处理 /// public int MaxProcessingTimeMinutes { get; set; } = 30; /// /// 业务备注 /// public string Remarks { get; set; } = string.Empty; /// /// 分析深度 /// 指定变更分析的深度级别 /// public TaskChangeAnalysisDepth AnalysisDepth { get; set; } = TaskChangeAnalysisDepth.Standard; /// /// 版本创建原因 /// 当处理策略为CreateNewVersion时使用 /// public string VersionReason { get; set; } = string.Empty; /// /// 是否发送通知 /// 处理完成后是否发送通知给相关人员 /// public bool SendNotifications { get; set; } = true; } /// /// 智能重新分配输入 /// 用于触发智能重新分配算法 /// public class SmartReallocationInput { /// /// 整合记录ID(根版本ID) /// public long RootIntegrationRecordId { get; set; } /// /// 需要重新分配的任务ID列表 /// 为空则表示重新分配所有任务 /// public List TaskIdsToReallocate { get; set; } = new(); /// /// 重新分配策略配置 /// 可以重用原策略或指定新策略 /// public SmartReallocationStrategyConfig Strategy { get; set; } = new(); /// /// 约束条件 /// 指定重新分配时需要遵守的约束条件 /// public List Constraints { get; set; } = new(); /// /// 操作员用户ID /// public long OperatorUserId { get; set; } /// /// 操作员用户名 /// public string OperatorUserName { get; set; } = string.Empty; /// /// 操作员真实姓名 /// public string OperatorRealName { get; set; } = string.Empty; /// /// 重新分配原因 /// public string ReallocationReason { get; set; } = string.Empty; /// /// 是否创建新版本 /// true-创建新版本保留历史, false-更新当前版本 /// public bool CreateNewVersion { get; set; } = true; /// /// 预期完成时间 /// 指定重新分配的预期完成时间 /// public DateTime? ExpectedCompletionTime { get; set; } /// /// 质量优先级 /// 分配时的质量要求优先级:Low, Medium, High, Critical /// public string QualityPriority { get; set; } = "Medium"; /// /// 成本控制要求 /// 是否需要考虑成本控制 /// public bool ConsiderCostControl { get; set; } = false; /// /// 最大成本预算 /// public decimal? MaxBudget { get; set; } /// /// 业务备注 /// public string Remarks { get; set; } = string.Empty; /// /// 整合记录ID /// 相关的整合记录标识 /// public long IntegrationRecordId { get; set; } /// /// 变更的任务ID列表 /// 需要进行重新分配的任务 /// public List ChangedTaskIds { get; set; } = new(); /// /// 版本创建原因 /// 重新分配时创建版本的原因说明 /// public string VersionReason { get; set; } = string.Empty; /// /// 受影响的任务ID列表 /// 可能受到变更影响的任务 /// public List AffectedTaskIds { get; set; } = new(); /// /// 是否重新分配人员 /// public bool ReallocatePersonnel { get; set; } = true; /// /// 是否重新分配设备 /// public bool ReallocateEquipment { get; set; } = true; } /// /// 智能重新分配策略配置 /// public class SmartReallocationStrategyConfig { /// /// 是否使用原策略 /// public bool UseOriginalStrategy { get; set; } = true; /// /// 人员分配策略 /// public string PersonnelStrategy { get; set; } = string.Empty; /// /// 设备分配策略 /// public string EquipmentStrategy { get; set; } = string.Empty; /// /// 强制执行班次规则 /// public bool EnforceShiftRules { get; set; } = true; /// /// 优化目标 /// Efficiency-效率优先, Fairness-公平优先, Balance-平衡, Quality-质量优先 /// public string OptimizationTarget { get; set; } = "Balance"; /// /// 变更影响最小化 /// 尽量减少对现有分配的影响 /// public bool MinimizeChangeImpact { get; set; } = true; /// /// 允许跨班次调整 /// public bool AllowCrossShiftAdjustment { get; set; } = false; /// /// 允许跨项目资源共享 /// public bool AllowCrossProjectSharing { get; set; } = false; /// /// 高级配置参数 /// public Dictionary AdvancedSettings { get; set; } = new(); } /// /// 重新分配约束条件 /// public class ReallocationConstraint { /// /// 约束类型 /// Personnel-人员约束, Equipment-设备约束, Time-时间约束, Cost-成本约束 /// public string ConstraintType { get; set; } = string.Empty; /// /// 约束目标ID /// 人员ID、设备ID等 /// public long? TargetId { get; set; } /// /// 约束操作 /// MustInclude-必须包含, MustExclude-必须排除, Prefer-优先选择, Avoid-尽量避免 /// public string ConstraintOperation { get; set; } = string.Empty; /// /// 约束值 /// 具体的约束值或条件 /// public string ConstraintValue { get; set; } = string.Empty; /// /// 约束优先级 /// 1-9,9为最高优先级 /// public int Priority { get; set; } = 5; /// /// 约束说明 /// public string Description { get; set; } = string.Empty; /// /// 是否为硬约束 /// true-硬约束(必须满足), false-软约束(尽量满足) /// public bool IsHardConstraint { get; set; } = false; } /// /// 版本历史查询输入 /// public class IntegrationVersionHistoryInput { /// /// 整合记录ID /// public long IntegrationRecordId { get; set; } /// /// 根版本ID /// public long RootVersionId { get; set; } /// /// 需要比较的版本ID列表 /// public List CompareVersionIds { get; set; } = new(); /// /// 查询开始时间 /// public DateTime? StartTime { get; set; } /// /// 查询结束时间 /// public DateTime? EndTime { get; set; } /// /// 版本状态过滤 /// Active-活跃版本, Inactive-非活跃版本, All-所有版本 /// public string VersionStatusFilter { get; set; } = "All"; /// /// 变更类型过滤 /// public List ChangeTypeFilter { get; set; } = new(); /// /// 操作员过滤 /// public List OperatorFilter { get; set; } = new(); /// /// 是否包含快照数据 /// public bool IncludeSnapshotData { get; set; } = false; /// /// 是否包含变更详情 /// public bool IncludeChangeDetails { get; set; } = true; /// /// 页码 /// public int PageIndex { get; set; } = 1; /// /// 页大小 /// public int PageSize { get; set; } = 20; /// /// 排序字段 /// CreatedTime, Version, ImpactScore /// public string SortBy { get; set; } = "CreatedTime"; /// /// 排序方向 /// Asc, Desc /// public string SortDirection { get; set; } = "Desc"; /// /// 是否包含性能指标 /// public bool IncludePerformanceMetrics { get; set; } = false; } }