YD_WeChatApplet.Api/WeChatApplet/Dto/Teacher/PostureReportContentDto.cs
2026-10-16 09:11:15 +08:00

521 lines
16 KiB
C#

using Newtonsoft.Json;
namespace YD_WeChatApplet.Api.Dto.Teacher
{
/// <summary>
/// fitcamp365 /api/evaluate 接口响应
/// </summary>
public class PostureReportContentDto
{
[JsonProperty("schemaVersion")]
public string? SchemaVersion { get; set; }
[JsonProperty("success")]
public bool Success { get; set; }
/// <summary>
/// 保留接口返回的 ISO-8601 原始时间格式
/// </summary>
[JsonProperty("generatedAt")]
public string? GeneratedAt { get; set; }
[JsonProperty("rule")]
public PostureReportRuleDto? Rule { get; set; }
[JsonProperty("inputNormalized")]
public PostureReportInputDto? InputNormalized { get; set; }
[JsonProperty("result")]
public PostureReportResultDto? Result { get; set; }
[JsonProperty("evaluationSnapshot")]
public PostureReportEvaluationSnapshotDto? EvaluationSnapshot { get; set; }
[JsonProperty("metrics")]
public List<PostureReportMetricDto>? Metrics { get; set; }
[JsonProperty("structuredRules")]
public PostureReportStructuredRulesDto? StructuredRules { get; set; }
[JsonProperty("references")]
public List<PostureReportReferenceDto>? References { get; set; }
[JsonProperty("warnings")]
public List<PostureReportWarningDto>? Warnings { get; set; }
[JsonProperty("dataQuality")]
public PostureReportDataQualityDto? DataQuality { get; set; }
[JsonProperty("longitudinalComparison")]
public PostureReportLongitudinalComparisonDto? LongitudinalComparison { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportRuleDto
{
[JsonProperty("name")]
public string? Name { get; set; }
[JsonProperty("version")]
public string? Version { get; set; }
[JsonProperty("updatedAt")]
public string? UpdatedAt { get; set; }
[JsonProperty("disclaimer")]
public string? Disclaimer { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportInputDto
{
[JsonProperty("id")]
public string? Id { get; set; }
[JsonProperty("assessmentType")]
public string? AssessmentType { get; set; }
[JsonProperty("studentName")]
public string? StudentName { get; set; }
[JsonProperty("studentId")]
public string? StudentId { get; set; }
[JsonProperty("birthDate")]
public string? BirthDate { get; set; }
[JsonProperty("testDate")]
public string? TestDate { get; set; }
[JsonProperty("sex")]
public string? Sex { get; set; }
[JsonProperty("grade")]
public string? Grade { get; set; }
[JsonProperty("className")]
public string? ClassName { get; set; }
[JsonProperty("customMetrics")]
public Dictionary<string, object?>? CustomMetrics { get; set; }
[JsonProperty("heightCm")]
public double? HeightCm { get; set; }
[JsonProperty("weightKg")]
public double? WeightKg { get; set; }
[JsonProperty("waistCm")]
public double? WaistCm { get; set; }
[JsonProperty("bodyComposition")]
public PostureReportBodyCompositionInputDto? BodyComposition { get; set; }
[JsonProperty("postureScreening")]
public PostureReportPostureScreeningDto? PostureScreening { get; set; }
[JsonProperty("ropeSkillCurrentLevel")]
public string? RopeSkillCurrentLevel { get; set; }
[JsonProperty("screening")]
public Dictionary<string, object?>? Screening { get; set; }
[JsonProperty("tests")]
public PostureReportTestsDto? Tests { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportBodyCompositionInputDto
{
[JsonProperty("bodyFatPercent")]
public double? BodyFatPercent { get; set; }
[JsonProperty("muscleMassKg")]
public double? MuscleMassKg { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportPostureScreeningDto
{
[JsonProperty("headNeck")]
public string? HeadNeck { get; set; }
[JsonProperty("shoulderBack")]
public string? ShoulderBack { get; set; }
[JsonProperty("trunkSymmetry")]
public string? TrunkSymmetry { get; set; }
[JsonProperty("forwardBend")]
public string? ForwardBend { get; set; }
[JsonProperty("lowerLimb")]
public string? LowerLimb { get; set; }
[JsonProperty("observer")]
public string? Observer { get; set; }
[JsonProperty("note")]
public string? Note { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportTestsDto
{
[JsonProperty("sprint50mSeconds")]
public double? Sprint50mSeconds { get; set; }
[JsonProperty("standingLongJumpCm")]
public double? StandingLongJumpCm { get; set; }
[JsonProperty("plankSeconds")]
public double? PlankSeconds { get; set; }
[JsonProperty("gripStrengthKg")]
public double? GripStrengthKg { get; set; }
[JsonProperty("ropeSkipCount")]
public double? RopeSkipCount { get; set; }
[JsonProperty("ropeSkip30SecCount")]
public double? RopeSkip30SecCount { get; set; }
[JsonProperty("vitalCapacityMl")]
public double? VitalCapacityMl { get; set; }
[JsonProperty("restingHeartRateBpm")]
public double? RestingHeartRateBpm { get; set; }
[JsonProperty("stepTestHeartRateBpm")]
public double? StepTestHeartRateBpm { get; set; }
[JsonProperty("obstacleRun15mSeconds")]
public double? ObstacleRun15mSeconds { get; set; }
[JsonProperty("quadrantJumpSeconds")]
public double? QuadrantJumpSeconds { get; set; }
[JsonProperty("reactionTimeSeconds")]
public double? ReactionTimeSeconds { get; set; }
[JsonProperty("balanceBeamSeconds")]
public double? BalanceBeamSeconds { get; set; }
[JsonProperty("singleLegStandSeconds")]
public double? SingleLegStandSeconds { get; set; }
[JsonProperty("sitReachCm")]
public double? SitReachCm { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
/// <summary>
/// 评价结果中的评分、技能和处方会随规则版本扩展,因此使用键值结构完整保留。
/// </summary>
public class PostureReportResultDto
{
[JsonProperty("inputMode")]
public Dictionary<string, object?>? InputMode { get; set; }
[JsonProperty("age")]
public int? Age { get; set; }
[JsonProperty("bmi")]
public double? Bmi { get; set; }
[JsonProperty("weight")]
public Dictionary<string, object?>? Weight { get; set; }
[JsonProperty("labels")]
public PostureReportLabelsDto? Labels { get; set; }
[JsonProperty("bodyComposition")]
public Dictionary<string, object?>? BodyComposition { get; set; }
[JsonProperty("scores")]
public Dictionary<string, object?>? Scores { get; set; }
[JsonProperty("skills")]
public Dictionary<string, object?>? Skills { get; set; }
[JsonProperty("messages")]
public Dictionary<string, object?>? Messages { get; set; }
[JsonProperty("prescription")]
public Dictionary<string, object?>? Prescription { get; set; }
[JsonProperty("reportNotes")]
public List<string>? ReportNotes { get; set; }
[JsonProperty("flags")]
public Dictionary<string, object?>? Flags { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportLabelsDto
{
[JsonProperty("W")]
public string? W { get; set; }
[JsonProperty("D")]
public string? D { get; set; }
[JsonProperty("T")]
public string? T { get; set; }
[JsonProperty("A")]
public string? A { get; set; }
[JsonProperty("S")]
public string? S { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportEvaluationSnapshotDto
{
[JsonProperty("schemaVersion")]
public string? SchemaVersion { get; set; }
[JsonProperty("evaluatedAt")]
public string? EvaluatedAt { get; set; }
[JsonProperty("ruleName")]
public string? RuleName { get; set; }
[JsonProperty("ruleVersion")]
public string? RuleVersion { get; set; }
[JsonProperty("ruleUpdatedAt")]
public string? RuleUpdatedAt { get; set; }
[JsonProperty("settingsSnapshot")]
public Dictionary<string, object?>? SettingsSnapshot { get; set; }
[JsonProperty("items")]
public List<Dictionary<string, object?>>? Items { get; set; }
[JsonProperty("summary")]
public Dictionary<string, object?>? Summary { get; set; }
[JsonProperty("sources")]
public List<Dictionary<string, object?>>? Sources { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportMetricDto
{
[JsonProperty("key")]
public string? Key { get; set; }
[JsonProperty("name")]
public string? Name { get; set; }
[JsonProperty("category")]
public string? Category { get; set; }
[JsonProperty("unit")]
public string? Unit { get; set; }
[JsonProperty("direction")]
public string? Direction { get; set; }
[JsonProperty("inputFields")]
public List<string>? InputFields { get; set; }
[JsonProperty("sourceKey")]
public string? SourceKey { get; set; }
[JsonProperty("required")]
public bool? Required { get; set; }
[JsonProperty("label")]
public string? Label { get; set; }
[JsonProperty("currentValue")]
public object? CurrentValue { get; set; }
[JsonProperty("sourceName")]
public string? SourceName { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportStructuredRulesDto
{
[JsonProperty("version")]
public string? Version { get; set; }
[JsonProperty("updatedAt")]
public string? UpdatedAt { get; set; }
[JsonProperty("status")]
public string? Status { get; set; }
[JsonProperty("metrics")]
public List<Dictionary<string, object?>>? Metrics { get; set; }
[JsonProperty("posture")]
public object? Posture { get; set; }
[JsonProperty("aggregatedFindings")]
public List<Dictionary<string, object?>>? AggregatedFindings { get; set; }
[JsonProperty("aggregatedAdvice")]
public List<Dictionary<string, object?>>? AggregatedAdvice { get; set; }
[JsonProperty("topicSummary")]
public Dictionary<string, object?>? TopicSummary { get; set; }
[JsonProperty("domainSummary")]
public Dictionary<string, object?>? DomainSummary { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportReferenceDto
{
[JsonProperty("key")]
public string? Key { get; set; }
[JsonProperty("name")]
public string? Name { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportWarningDto
{
[JsonProperty("code")]
public string? Code { get; set; }
[JsonProperty("metricKey")]
public string? MetricKey { get; set; }
[JsonProperty("message")]
public string? Message { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportDataQualityDto
{
[JsonProperty("status")]
public string? Status { get; set; }
[JsonProperty("summary")]
public PostureReportDataQualitySummaryDto? Summary { get; set; }
[JsonProperty("items")]
public List<PostureReportDataQualityItemDto>? Items { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportDataQualitySummaryDto
{
[JsonProperty("errorCount")]
public int? ErrorCount { get; set; }
[JsonProperty("warningCount")]
public int? WarningCount { get; set; }
[JsonProperty("infoCount")]
public int? InfoCount { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportDataQualityItemDto
{
[JsonProperty("severity")]
public string? Severity { get; set; }
[JsonProperty("code")]
public string? Code { get; set; }
[JsonProperty("field")]
public string? Field { get; set; }
[JsonProperty("message")]
public string? Message { get; set; }
[JsonProperty("value")]
public object? Value { get; set; }
[JsonProperty("expectedRange")]
public object? ExpectedRange { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportLongitudinalComparisonDto
{
[JsonProperty("status")]
public string? Status { get; set; }
[JsonProperty("baseline")]
public Dictionary<string, object?>? Baseline { get; set; }
[JsonProperty("periodDays")]
public int? PeriodDays { get; set; }
[JsonProperty("metricComparisons")]
public List<Dictionary<string, object?>>? MetricComparisons { get; set; }
[JsonProperty("topicComparisons")]
public List<Dictionary<string, object?>>? TopicComparisons { get; set; }
[JsonProperty("topicSummary")]
public Dictionary<string, object?>? TopicSummary { get; set; }
[JsonProperty("summary")]
public PostureReportLongitudinalSummaryDto? Summary { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
public class PostureReportLongitudinalSummaryDto
{
[JsonProperty("improvedCount")]
public int? ImprovedCount { get; set; }
[JsonProperty("declinedCount")]
public int? DeclinedCount { get; set; }
[JsonProperty("stableCount")]
public int? StableCount { get; set; }
[JsonProperty("changedCount")]
public int? ChangedCount { get; set; }
[JsonExtensionData]
public IDictionary<string, object?> ExtensionData { get; set; } = new Dictionary<string, object?>();
}
}