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;
}