xigau
This commit is contained in:
174
OrpaonVision.Model/Production/RunLayerSessionModel.cs
Normal file
174
OrpaonVision.Model/Production/RunLayerSessionModel.cs
Normal file
@@ -0,0 +1,174 @@
|
||||
namespace OrpaonVision.Model.Production;
|
||||
|
||||
/// <summary>
|
||||
/// 运行层级会话模型。
|
||||
/// </summary>
|
||||
public sealed class RunLayerSessionModel
|
||||
{
|
||||
/// <summary>
|
||||
/// 层级会话ID。
|
||||
/// </summary>
|
||||
public Guid LayerSessionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 产品会话ID。
|
||||
/// </summary>
|
||||
public Guid SessionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 层级序号。
|
||||
/// </summary>
|
||||
public int LayerNumber { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 层级名称。
|
||||
/// </summary>
|
||||
public string LayerName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 层级编码。
|
||||
/// </summary>
|
||||
public string LayerCode { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 开始时间(UTC)。
|
||||
/// </summary>
|
||||
public DateTime StartedAtUtc { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 结束时间(UTC)。
|
||||
/// </summary>
|
||||
public DateTime? EndedAtUtc { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 层级状态。
|
||||
/// </summary>
|
||||
public RunLayerSessionStatus Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 检测到的部件数量。
|
||||
/// </summary>
|
||||
public int DetectedPartsCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 合格部件数量。
|
||||
/// </summary>
|
||||
public int QualifiedPartsCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// NG部件数量。
|
||||
/// </summary>
|
||||
public int NgPartsCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 处理的图像数量。
|
||||
/// </summary>
|
||||
public int ProcessedImageCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 首张截图路径。
|
||||
/// </summary>
|
||||
public string? FirstScreenshotPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 末张截图路径。
|
||||
/// </summary>
|
||||
public string? LastScreenshotPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 层级结果。
|
||||
/// </summary>
|
||||
public RunLayerSessionResult Result { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// NG原因描述。
|
||||
/// </summary>
|
||||
public string? NgReason { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 处理耗时(毫秒)。
|
||||
/// </summary>
|
||||
public long ProcessingTimeMs { 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 RunLayerSessionStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// 未开始。
|
||||
/// </summary>
|
||||
NotStarted = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 进行中。
|
||||
/// </summary>
|
||||
InProgress = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 已完成(OK)。
|
||||
/// </summary>
|
||||
CompletedOk = 2,
|
||||
|
||||
/// <summary>
|
||||
/// 已完成(NG)。
|
||||
/// </summary>
|
||||
CompletedNg = 3,
|
||||
|
||||
/// <summary>
|
||||
/// 已跳过。
|
||||
/// </summary>
|
||||
Skipped = 4,
|
||||
|
||||
/// <summary>
|
||||
/// 异常终止。
|
||||
/// </summary>
|
||||
Error = 5
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 运行层级会话结果。
|
||||
/// </summary>
|
||||
public enum RunLayerSessionResult
|
||||
{
|
||||
/// <summary>
|
||||
/// 待定。
|
||||
/// </summary>
|
||||
Pending = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 合格。
|
||||
/// </summary>
|
||||
Ok = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 不合格。
|
||||
/// </summary>
|
||||
Ng = 2,
|
||||
|
||||
/// <summary>
|
||||
/// 跳过。
|
||||
/// </summary>
|
||||
Skipped = 3
|
||||
}
|
||||
229
OrpaonVision.Model/Production/RunPartJudgmentModel.cs
Normal file
229
OrpaonVision.Model/Production/RunPartJudgmentModel.cs
Normal file
@@ -0,0 +1,229 @@
|
||||
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
|
||||
}
|
||||
133
OrpaonVision.Model/Production/RunStateTransitionLogModel.cs
Normal file
133
OrpaonVision.Model/Production/RunStateTransitionLogModel.cs
Normal file
@@ -0,0 +1,133 @@
|
||||
namespace OrpaonVision.Model.Production;
|
||||
|
||||
/// <summary>
|
||||
/// 运行状态转换日志模型。
|
||||
/// </summary>
|
||||
public sealed class RunStateTransitionLogModel
|
||||
{
|
||||
/// <summary>
|
||||
/// 日志ID。
|
||||
/// </summary>
|
||||
public Guid LogId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 产品会话ID。
|
||||
/// </summary>
|
||||
public Guid SessionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 层级会话ID(可选)。
|
||||
/// </summary>
|
||||
public Guid? LayerSessionId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 转换前状态。
|
||||
/// </summary>
|
||||
public string FromState { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 转换后状态。
|
||||
/// </summary>
|
||||
public string ToState { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 触发事件。
|
||||
/// </summary>
|
||||
public string TriggerEvent { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 转换原因。
|
||||
/// </summary>
|
||||
public string Reason { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 转换类型。
|
||||
/// </summary>
|
||||
public RunStateTransitionType TransitionType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作者ID。
|
||||
/// </summary>
|
||||
public string? OperatorId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作者姓名。
|
||||
/// </summary>
|
||||
public string? OperatorName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否人工干预。
|
||||
/// </summary>
|
||||
public bool IsManualIntervention { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 关联数据(JSON格式)。
|
||||
/// </summary>
|
||||
public string? ContextJson { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 截图路径(可选)。
|
||||
/// </summary>
|
||||
public string? ScreenshotPath { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 转换时间(UTC)。
|
||||
/// </summary>
|
||||
public DateTime TransitionAtUtc { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 处理耗时(毫秒)。
|
||||
/// </summary>
|
||||
public long ProcessingTimeMs { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 错误信息(如果有)。
|
||||
/// </summary>
|
||||
public string? ErrorMessage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间(UTC)。
|
||||
/// </summary>
|
||||
public DateTime CreatedAtUtc { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建人。
|
||||
/// </summary>
|
||||
public string CreatedBy { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 运行状态转换类型。
|
||||
/// </summary>
|
||||
public enum RunStateTransitionType
|
||||
{
|
||||
/// <summary>
|
||||
/// 自动转换。
|
||||
/// </summary>
|
||||
Automatic = 0,
|
||||
|
||||
/// <summary>
|
||||
/// 人工干预。
|
||||
/// </summary>
|
||||
Manual = 1,
|
||||
|
||||
/// <summary>
|
||||
/// 系统触发。
|
||||
/// </summary>
|
||||
System = 2,
|
||||
|
||||
/// <summary>
|
||||
/// 错误恢复。
|
||||
/// </summary>
|
||||
ErrorRecovery = 3,
|
||||
|
||||
/// <summary>
|
||||
/// 超时处理。
|
||||
/// </summary>
|
||||
Timeout = 4,
|
||||
|
||||
/// <summary>
|
||||
/// 异常终止。
|
||||
/// </summary>
|
||||
Exception = 5
|
||||
}
|
||||
Reference in New Issue
Block a user