Files
OrpaonVision/OrpaonVision.Model/Production/RunPartJudgmentModel.cs
2026-04-06 22:38:23 +08:00

230 lines
4.5 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace OrpaonVision.Model.Production;
/// <summary>
/// 运行部件判定模型。
/// </summary>
public sealed class RunPartJudgmentModel
{
/// <summary>
/// 判定ID。
/// </summary>
public Guid JudgmentId { get; set; }
/// <summary>
/// 产品会话ID。
/// </summary>
public Guid SessionId { get; set; }
/// <summary>
/// 层级会话ID。
/// </summary>
public Guid LayerSessionId { get; set; }
/// <summary>
/// 部件序号(在层级中的序号)。
/// </summary>
public int PartSequence { get; set; }
/// <summary>
/// 部件编码。
/// </summary>
public string PartCode { get; set; } = string.Empty;
/// <summary>
/// 部件名称。
/// </summary>
public string PartName { get; set; } = string.Empty;
/// <summary>
/// 检测到的类别。
/// </summary>
public string DetectedClass { get; set; } = string.Empty;
/// <summary>
/// 置信度。
/// </summary>
public decimal Confidence { get; set; }
/// <summary>
/// 边界框X坐标。
/// </summary>
public float BoundingBoxX { get; set; }
/// <summary>
/// 边界框Y坐标。
/// </summary>
public float BoundingBoxY { get; set; }
/// <summary>
/// 边界框宽度。
/// </summary>
public float BoundingBoxWidth { get; set; }
/// <summary>
/// 边界框高度。
/// </summary>
public float BoundingBoxHeight { get; set; }
/// <summary>
/// 实际中心点X坐标。
/// </summary>
public float ActualCenterX { get; set; }
/// <summary>
/// 实际中心点Y坐标。
/// </summary>
public float ActualCenterY { get; set; }
/// <summary>
/// 期望中心点X坐标。
/// </summary>
public float ExpectedCenterX { get; set; }
/// <summary>
/// 期望中心点Y坐标。
/// </summary>
public float ExpectedCenterY { get; set; }
/// <summary>
/// 位置偏差(像素)。
/// </summary>
public float PositionDeviation { get; set; }
/// <summary>
/// 判定状态。
/// </summary>
public RunPartJudgmentStatus Status { get; set; }
/// <summary>
/// 判定结果。
/// </summary>
public RunPartJudgmentResult Result { get; set; }
/// <summary>
/// 判定规则ID。
/// </summary>
public Guid? RuleId { get; set; }
/// <summary>
/// 判定规则名称。
/// </summary>
public string? RuleName { get; set; }
/// <summary>
/// NG原因。
/// </summary>
public string? NgReason { get; set; }
/// <summary>
/// 截图路径。
/// </summary>
public string? ScreenshotPath { get; set; }
/// <summary>
/// 判定时间UTC
/// </summary>
public DateTime JudgedAtUtc { get; set; }
/// <summary>
/// 推理耗时(毫秒)。
/// </summary>
public long InferenceTimeMs { get; set; }
/// <summary>
/// 创建时间UTC
/// </summary>
public DateTime CreatedAtUtc { get; set; }
/// <summary>
/// 更新时间UTC
/// </summary>
public DateTime UpdatedAtUtc { get; set; }
/// <summary>
/// 创建人。
/// </summary>
public string CreatedBy { get; set; } = string.Empty;
/// <summary>
/// 更新人。
/// </summary>
public string UpdatedBy { get; set; } = string.Empty;
}
/// <summary>
/// 运行部件判定状态。
/// </summary>
public enum RunPartJudgmentStatus
{
/// <summary>
/// 待检测。
/// </summary>
Pending = 0,
/// <summary>
/// 检测中。
/// </summary>
Detecting = 1,
/// <summary>
/// 已检测。
/// </summary>
Detected = 2,
/// <summary>
/// 判定中。
/// </summary>
Judging = 3,
/// <summary>
/// 已判定。
/// </summary>
Judged = 4,
/// <summary>
/// 异常。
/// </summary>
Error = 5
}
/// <summary>
/// 违行部件判定结果。
/// </summary>
public enum RunPartJudgmentResult
{
/// <summary>
/// 待定。
/// </summary>
Pending = 0,
/// <summary>
/// 合格。
/// </summary>
Ok = 1,
/// <summary>
/// 不合格。
/// </summary>
Ng = 2,
/// <summary>
/// 缺失。
/// </summary>
Missing = 3,
/// <summary>
/// 位置错误。
/// </summary>
PositionError = 4,
/// <summary>
/// 禁装。
/// </summary>
Forbidden = 5,
/// <summary>
/// 重复。
/// </summary>
Duplicate = 6
}