namespace OrpaonVision.Core.Production.Contracts; /// /// 实时生产状态。 /// public sealed class RealtimeProductionStatusDto { /// /// 工位ID。 /// public Guid WorkstationId { get; init; } /// /// 工位名称。 /// public string WorkstationName { get; init; } = string.Empty; /// /// 当前状态。 /// public string CurrentStatus { get; init; } = string.Empty; /// /// 当前产品序列号。 /// public string? CurrentProductSerialNumber { get; init; } /// /// 当前机种编码。 /// public string? CurrentProductTypeCode { get; init; } /// /// 当前层级名称。 /// public string? CurrentLayerName { get; init; } /// /// 当前层级序号。 /// public int? CurrentLayerSequence { get; init; } /// /// 当前操作员姓名。 /// public string? CurrentOperatorName { get; init; } /// /// 当前班次。 /// public string? CurrentShift { get; init; } /// /// 今日OK数量。 /// public long TodayOkCount { get; init; } /// /// 今日NG数量。 /// public long TodayNgCount { get; init; } /// /// 今日良率。 /// public decimal TodayYieldRate { get; init; } /// /// 当前班次OK数量。 /// public long ShiftOkCount { get; init; } /// /// 当前班次NG数量。 /// public long ShiftNgCount { get; init; } /// /// 当前班次良率。 /// public decimal ShiftYieldRate { get; init; } /// /// 平均节拍(秒)。 /// public decimal AverageCycleTimeSeconds { get; init; } /// /// 设备运行状态。 /// public string DeviceStatus { get; init; } = string.Empty; /// /// 最后更新时间(UTC)。 /// public DateTime LastUpdatedAtUtc { get; init; } /// /// 连续正常生产数量。 /// public int ConsecutiveOkCount { get; init; } /// /// 最近一次NG时间(UTC)。 /// public DateTime? LastNgAtUtc { get; init; } /// /// 最近一次NG类型。 /// public string? LastNgType { get; init; } } /// /// 质量分析报告。 /// public sealed class QualityAnalysisReportDto { /// /// 报告时间范围开始(UTC)。 /// public DateTime StartTimeUtc { get; init; } /// /// 报告时间范围结束(UTC)。 /// public DateTime EndTimeUtc { get; init; } /// /// 工位名称。 /// public string WorkstationName { get; init; } = string.Empty; /// /// 总体质量指标。 /// public OverallQualityMetricsDto OverallMetrics { get; init; } = new(); /// /// NG类型分析。 /// public IReadOnlyList NgTypeAnalysis { get; init; } = []; /// /// 机种质量对比。 /// public IReadOnlyList ProductTypeQuality { get; init; } = []; /// /// 层级质量分析。 /// public IReadOnlyList LayerQualityAnalysis { get; init; } = []; /// /// 操作员质量分析。 /// public IReadOnlyList OperatorQualityAnalysis { get; init; } = []; /// /// 时间趋势分析。 /// public IReadOnlyList QualityTrends { get; init; } = []; /// /// 改进建议。 /// public IReadOnlyList ImprovementSuggestions { get; init; } = []; } /// /// 总体质量指标。 /// public sealed class OverallQualityMetricsDto { /// /// 总产品数量。 /// public long TotalProducts { get; init; } /// /// OK产品数量。 /// public long OkProducts { get; init; } /// /// NG产品数量。 /// public long NgProducts { get; init; } /// /// 良率。 /// public decimal YieldRate { get; init; } /// /// 目标良率。 /// public decimal TargetYieldRate { get; init; } /// /// 良率达成率。 /// public decimal YieldRateAchievement { get; init; } /// /// 平均节拍(秒)。 /// public decimal AverageCycleTimeSeconds { get; init; } /// /// 目标节拍(秒)。 /// public decimal TargetCycleTimeSeconds { get; init; } /// /// 节拍达成率。 /// public decimal CycleTimeAchievement { get; init; } /// /// 质量评分(0-100)。 /// public decimal QualityScore { get; init; } /// /// 质量等级。 /// public string QualityGrade { get; init; } = string.Empty; } /// /// NG类型分析。 /// public sealed class NgTypeAnalysisDto { /// /// NG类型。 /// public string NgType { get; init; } = string.Empty; /// /// NG类型描述。 /// public string Description { get; init; } = string.Empty; /// /// NG数量。 /// public long Count { get; init; } /// /// 占比。 /// public decimal Percentage { get; init; } /// /// 严重程度。 /// public string Severity { get; init; } = string.Empty; /// /// 主要发生层级。 /// public string MainLayer { get; init; } = string.Empty; /// /// 趋势(上升/下降/稳定)。 /// public string Trend { get; init; } = string.Empty; /// /// 趋势变化率。 /// public decimal TrendChangeRate { get; init; } } /// /// 机种质量对比。 /// public sealed class ProductTypeQualityDto { /// /// 机种编码。 /// public string ProductTypeCode { get; init; } = string.Empty; /// /// 机种名称。 /// public string ProductTypeName { get; init; } = string.Empty; /// /// 产品数量。 /// public long ProductCount { get; init; } /// /// 良率。 /// public decimal YieldRate { get; init; } /// /// 平均节拍(秒)。 /// public decimal AverageCycleTimeSeconds { get; init; } /// /// 质量排名。 /// public int QualityRanking { get; init; } /// /// 效率排名。 /// public int EfficiencyRanking { init; get; } } /// /// 层级质量分析。 /// public sealed class LayerQualityAnalysisDto { /// /// 层级名称。 /// public string LayerName { get; init; } = string.Empty; /// /// 层级序号。 /// public int LayerSequence { get; init; } /// /// 检测次数。 /// public long DetectionCount { get; init; } /// /// NG次数。 /// public long NgCount { get; init; } /// /// NG率。 /// public decimal NgRate { get; init; } /// /// 平均检测时间(毫秒)。 /// public decimal AverageDetectionTimeMs { get; init; } /// /// 风险等级。 /// public string RiskLevel { get; init; } = string.Empty; } /// /// 操作员质量分析。 /// public sealed class OperatorQualityAnalysisDto { /// /// 操作员姓名。 /// public string OperatorName { get; init; } = string.Empty; /// /// 班次。 /// public string Shift { get; init; } = string.Empty; /// /// 产品数量。 /// public long ProductCount { get; init; } /// /// 良率。 /// public decimal YieldRate { get; init; } /// /// 平均节拍(秒)。 /// public decimal AverageCycleTimeSeconds { get; init; } /// /// 技能等级。 /// public string SkillLevel { get; init; } = string.Empty; /// /// 绩效评分。 /// public decimal PerformanceScore { get; init; } } /// /// 质量趋势。 /// public sealed class QualityTrendDto { /// /// 时间点(UTC)。 /// public DateTime TimePointUtc { get; init; } /// /// 良率。 /// public decimal YieldRate { get; init; } /// /// 产品数量。 /// public long ProductCount { get; init; } /// /// 移动平均良率。 /// public decimal MovingAverageYieldRate { get; init; } } /// /// 改进建议。 /// public sealed class ImprovementSuggestionDto { /// /// 建议类型。 /// public string SuggestionType { get; init; } = string.Empty; /// /// 建议标题。 /// public string Title { get; init; } = string.Empty; /// /// 建议描述。 /// public string Description { get; init; } = string.Empty; /// /// 优先级。 /// public string Priority { get; init; } = string.Empty; /// /// 预期效果。 /// public string ExpectedImpact { get; init; } = string.Empty; /// /// 实施难度。 /// public string ImplementationDifficulty { get; init; } = string.Empty; /// /// 相关数据支持。 /// public string SupportingData { get; init; } = string.Empty; }