版本260406
This commit is contained in:
187
OrpaonVision.Core/Testing/TestDataFactory.cs
Normal file
187
OrpaonVision.Core/Testing/TestDataFactory.cs
Normal file
@@ -0,0 +1,187 @@
|
||||
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
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user