67 lines
2.7 KiB
C#
67 lines
2.7 KiB
C#
|
|
namespace SSPCTester.Logic.Models;
|
|||
|
|
|
|||
|
|
using System.Collections.ObjectModel;
|
|||
|
|
|
|||
|
|
/// <summary>被测件 / 测试信息。</summary>
|
|||
|
|
public sealed class DutInfo
|
|||
|
|
{
|
|||
|
|
public string ProductName { get; set; } = "";
|
|||
|
|
public string Model { get; set; } = "";
|
|||
|
|
public string SerialNumber { get; set; } = "";
|
|||
|
|
public string Manufacturer { get; set; } = "";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public sealed class TestSiteInfo
|
|||
|
|
{
|
|||
|
|
public string Tester { get; set; } = "";
|
|||
|
|
public DateTime TestDate { get; set; } = DateTime.Today;
|
|||
|
|
public double TemperatureC { get; set; } = 25.0;
|
|||
|
|
public double HumidityPct { get; set; } = 60.0;
|
|||
|
|
public double PressureKpa { get; set; } = 101.3;
|
|||
|
|
public string Remark { get; set; } = "";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>一个测试项目:信息 + 选择 + 各模块结果。</summary>
|
|||
|
|
public sealed class Project
|
|||
|
|
{
|
|||
|
|
public string Name { get; set; } = "新项目";
|
|||
|
|
public DateTime CreatedAt { get; set; } = DateTime.Now;
|
|||
|
|
public DateTime LastTestedAt { get; set; }
|
|||
|
|
|
|||
|
|
public DutInfo Dut { get; set; } = new();
|
|||
|
|
public TestSiteInfo Site { get; set; } = new();
|
|||
|
|
public TestSelection Selection { get; set; } = new();
|
|||
|
|
public ReportSelection Report { get; set; } = new();
|
|||
|
|
public TestFunctionNotes TestFunction { get; set; } = new();
|
|||
|
|
public CurveThresholds CurveThresholds { get; set; } = new();
|
|||
|
|
|
|||
|
|
public ObservableCollection<ChannelResult> BasicResults { get; set; } = new();
|
|||
|
|
public ObservableCollection<CurveResultRow> CurveResults { get; set; } = new();
|
|||
|
|
public ObservableCollection<PowerLossRow> PowerResults { get; set; } = new();
|
|||
|
|
public ObservableCollection<ProtectRow> ProtectResults { get; set; } = new();
|
|||
|
|
|
|||
|
|
/// <summary>项目根目录(含 project.json、curves/、report.pdf)。运行时填充,不持久化。</summary>
|
|||
|
|
[System.Text.Json.Serialization.JsonIgnore]
|
|||
|
|
public string FolderPath { get; set; } = "";
|
|||
|
|
|
|||
|
|
/// <summary>综合判定(取所有结果中最差状态)。</summary>
|
|||
|
|
public TestStatus OverallStatus
|
|||
|
|
{
|
|||
|
|
get
|
|||
|
|
{
|
|||
|
|
var all = BasicResults.Select(r => r.Status)
|
|||
|
|
.Concat(CurveResults.Select(r => r.Status))
|
|||
|
|
.Concat(PowerResults.Select(r => r.Status))
|
|||
|
|
.Concat(ProtectResults.Select(r => r.Status))
|
|||
|
|
.ToList();
|
|||
|
|
if (all.Count == 0) return TestStatus.Untested;
|
|||
|
|
if (all.Any(s => s == TestStatus.Fail)) return TestStatus.Fail;
|
|||
|
|
if (all.Any(s => s == TestStatus.Running)) return TestStatus.Running;
|
|||
|
|
if (all.All(s => s == TestStatus.Pass)) return TestStatus.Pass;
|
|||
|
|
if (all.All(s => s is TestStatus.Pass or TestStatus.Measured) &&
|
|||
|
|
all.Any(s => s == TestStatus.Measured)) return TestStatus.Measured;
|
|||
|
|
return TestStatus.Untested;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|