188 lines
6.5 KiB
C#
188 lines
6.5 KiB
C#
namespace OrpaonVision.Core.Testing;
|
|
|
|
/// <summary>
|
|
/// 测试数据工厂。
|
|
/// </summary>
|
|
public static class TestDataFactory
|
|
{
|
|
/// <summary>
|
|
/// 创建测试用户。
|
|
/// </summary>
|
|
/// <param name="id">用户ID。</param>
|
|
/// <param name="userName">用户名。</param>
|
|
/// <param name="displayName">显示名称。</param>
|
|
/// <returns>测试用户。</returns>
|
|
public static Security.Contracts.UserDetailDto CreateUser(
|
|
Guid id = default,
|
|
string userName = "testuser",
|
|
string displayName = "Test User")
|
|
{
|
|
return new Security.Contracts.UserDetailDto
|
|
{
|
|
UserId = id == default ? Guid.NewGuid() : id,
|
|
UserName = userName,
|
|
DisplayName = displayName,
|
|
Email = $"{userName}@example.com",
|
|
Status = "Active",
|
|
IsActive = true,
|
|
Roles = ["Operator"],
|
|
Permissions = ["production.view", "training.view"],
|
|
CreatedAtUtc = DateTime.UtcNow.AddDays(-30),
|
|
LastLoginAtUtc = DateTime.UtcNow.AddHours(-2)
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建测试产品会话。
|
|
/// </summary>
|
|
/// <param name="id">会话ID。</param>
|
|
/// <returns>测试产品会话。</returns>
|
|
public static Production.Contracts.ProductSessionDetailDto CreateProductSession(
|
|
Guid id = default)
|
|
{
|
|
return new Production.Contracts.ProductSessionDetailDto
|
|
{
|
|
SessionId = id == default ? Guid.NewGuid() : id,
|
|
ProductSerialNumber = "PSN-001",
|
|
ProductTypeId = Guid.NewGuid(),
|
|
ProductTypeCode = "PT-A100",
|
|
ProductTypeName = "变频器 A100",
|
|
WorkstationId = Guid.NewGuid(),
|
|
WorkstationName = "Station-01",
|
|
OperatorName = "张三",
|
|
Shift = "白班",
|
|
StartedAtUtc = DateTime.UtcNow.AddMinutes(-30),
|
|
EndedAtUtc = DateTime.UtcNow.AddMinutes(-5),
|
|
TotalDurationSeconds = 1500,
|
|
FinalResult = "OK",
|
|
ModelVersion = "v1.0.0",
|
|
RuleVersion = "v1.0.0",
|
|
LayerResults = [],
|
|
AbnormalRecords = [],
|
|
KeyScreenshots = []
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建测试训练任务。
|
|
/// </summary>
|
|
/// <param name="id">任务ID。</param>
|
|
/// <param name="name">任务名称。</param>
|
|
/// <param name="status">状态。</param>
|
|
/// <returns>测试训练任务。</returns>
|
|
public static Training.Contracts.TrainingJobDetailDto CreateTrainingJob(
|
|
Guid id = default,
|
|
string name = "Test Training Job",
|
|
string status = "Running")
|
|
{
|
|
return new Training.Contracts.TrainingJobDetailDto
|
|
{
|
|
TrainingJobId = id == default ? Guid.NewGuid() : id,
|
|
Name = name,
|
|
Description = "Test training job description",
|
|
DatasetVersionId = Guid.NewGuid(),
|
|
DatasetVersionNo = "Dataset-v1.0",
|
|
ProductTypeId = Guid.NewGuid(),
|
|
ProductTypeCode = "PT-A100",
|
|
AlgorithmType = "YOLOv8",
|
|
TrainingParametersJson = "{}",
|
|
Status = status,
|
|
ProgressPercentage = status == "Completed" ? 100 : 50,
|
|
CurrentEpoch = status == "Completed" ? 100 : 50,
|
|
TotalEpochs = 100,
|
|
CurrentLoss = status == "Completed" ? 0.1m : 0.5m,
|
|
BestLoss = 0.1m,
|
|
EstimatedRemainingSeconds = status == "Completed" ? 0 : 1800,
|
|
StartedAtUtc = DateTime.UtcNow.AddHours(-2),
|
|
CompletedAtUtc = status == "Completed" ? DateTime.UtcNow.AddMinutes(-30) : null,
|
|
CreatedBy = "testuser",
|
|
CreatedAtUtc = DateTime.UtcNow.AddDays(-1),
|
|
ErrorMessage = string.Empty,
|
|
OutputPath = "outputs/train-001",
|
|
LogPath = "logs/train-001.log"
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建测试审计日志。
|
|
/// </summary>
|
|
/// <param name="id">日志ID。</param>
|
|
/// <param name="action">操作类型。</param>
|
|
/// <param name="module">模块。</param>
|
|
/// <returns>测试审计日志。</returns>
|
|
public static Audit.Contracts.AuditLogDetailDto CreateAuditLog(
|
|
Guid id = default,
|
|
string action = "CREATE",
|
|
string module = "UserManagement")
|
|
{
|
|
return new Audit.Contracts.AuditLogDetailDto
|
|
{
|
|
AuditLogId = id == default ? Guid.NewGuid() : id,
|
|
ActionType = action,
|
|
Module = module,
|
|
Description = "测试审计日志",
|
|
OperatorUserName = "testuser",
|
|
OperatorIpAddress = "127.0.0.1",
|
|
OperatorUserAgent = "UnitTest",
|
|
TargetResourceType = "User",
|
|
TargetResourceId = Guid.NewGuid().ToString(),
|
|
Result = "Success",
|
|
RiskLevel = "Low",
|
|
DurationMs = 150,
|
|
OperatedAtUtc = DateTime.UtcNow.AddMinutes(-10),
|
|
RequestParametersJson = "{}",
|
|
ResponseDataJson = "{}",
|
|
ErrorMessage = string.Empty,
|
|
ExceptionStackTrace = string.Empty,
|
|
SessionId = Guid.NewGuid().ToString("N"),
|
|
TraceId = Guid.NewGuid().ToString("N"),
|
|
BusinessContextJson = "{}"
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建测试相机帧。
|
|
/// </summary>
|
|
/// <param name="id">帧ID。</param>
|
|
/// <param name="width">宽度。</param>
|
|
/// <param name="height">高度。</param>
|
|
/// <returns>测试相机帧。</returns>
|
|
public static object CreateCameraFrame(
|
|
Guid id = default,
|
|
int width = 1920,
|
|
int height = 1080)
|
|
{
|
|
return new
|
|
{
|
|
FrameId = id == default ? Guid.NewGuid() : id,
|
|
CameraId = "Camera-01",
|
|
TimestampUtc = DateTime.UtcNow,
|
|
Width = width,
|
|
Height = height,
|
|
Format = "RGB",
|
|
FrameNumber = 12345
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 创建测试推理结果。
|
|
/// </summary>
|
|
/// <param name="id">结果ID。</param>
|
|
/// <param name="confidence">置信度。</param>
|
|
/// <returns>测试推理结果。</returns>
|
|
public static object CreateInferenceResult(
|
|
Guid id = default,
|
|
double confidence = 0.95)
|
|
{
|
|
return new
|
|
{
|
|
ResultId = id == default ? Guid.NewGuid() : id,
|
|
ModelVersion = "v1.0.0",
|
|
ModelName = "YOLOv8",
|
|
InferenceTimeMs = 150,
|
|
Confidence = confidence,
|
|
TimestampUtc = DateTime.UtcNow
|
|
};
|
|
}
|
|
}
|