using Newtonsoft.Json;
namespace YD_WeChatApplet.Api.Dto.Teacher
{
///
/// fitcamp365 /api/evaluate 接口响应
///
public class PostureReportContentDto
{
[JsonProperty("schemaVersion")]
public string? SchemaVersion { get; set; }
[JsonProperty("success")]
public bool Success { get; set; }
///
/// 保留接口返回的 ISO-8601 原始时间格式
///
[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? Metrics { get; set; }
[JsonProperty("structuredRules")]
public PostureReportStructuredRulesDto? StructuredRules { get; set; }
[JsonProperty("references")]
public List? References { get; set; }
[JsonProperty("warnings")]
public List? Warnings { get; set; }
[JsonProperty("dataQuality")]
public PostureReportDataQualityDto? DataQuality { get; set; }
[JsonProperty("longitudinalComparison")]
public PostureReportLongitudinalComparisonDto? LongitudinalComparison { get; set; }
[JsonExtensionData]
public IDictionary ExtensionData { get; set; } = new Dictionary();
}
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 ExtensionData { get; set; } = new Dictionary();
}
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? 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? Screening { get; set; }
[JsonProperty("tests")]
public PostureReportTestsDto? Tests { get; set; }
[JsonExtensionData]
public IDictionary ExtensionData { get; set; } = new Dictionary();
}
public class PostureReportBodyCompositionInputDto
{
[JsonProperty("bodyFatPercent")]
public double? BodyFatPercent { get; set; }
[JsonProperty("muscleMassKg")]
public double? MuscleMassKg { get; set; }
[JsonExtensionData]
public IDictionary ExtensionData { get; set; } = new Dictionary();
}
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 ExtensionData { get; set; } = new Dictionary();
}
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 ExtensionData { get; set; } = new Dictionary();
}
///
/// 评价结果中的评分、技能和处方会随规则版本扩展,因此使用键值结构完整保留。
///
public class PostureReportResultDto
{
[JsonProperty("inputMode")]
public Dictionary? InputMode { get; set; }
[JsonProperty("age")]
public int? Age { get; set; }
[JsonProperty("bmi")]
public double? Bmi { get; set; }
[JsonProperty("weight")]
public Dictionary? Weight { get; set; }
[JsonProperty("labels")]
public PostureReportLabelsDto? Labels { get; set; }
[JsonProperty("bodyComposition")]
public Dictionary? BodyComposition { get; set; }
[JsonProperty("scores")]
public Dictionary? Scores { get; set; }
[JsonProperty("skills")]
public Dictionary? Skills { get; set; }
[JsonProperty("messages")]
public Dictionary? Messages { get; set; }
[JsonProperty("prescription")]
public Dictionary? Prescription { get; set; }
[JsonProperty("reportNotes")]
public List? ReportNotes { get; set; }
[JsonProperty("flags")]
public Dictionary? Flags { get; set; }
[JsonExtensionData]
public IDictionary ExtensionData { get; set; } = new Dictionary();
}
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 ExtensionData { get; set; } = new Dictionary();
}
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? SettingsSnapshot { get; set; }
[JsonProperty("items")]
public List>? Items { get; set; }
[JsonProperty("summary")]
public Dictionary? Summary { get; set; }
[JsonProperty("sources")]
public List>? Sources { get; set; }
[JsonExtensionData]
public IDictionary ExtensionData { get; set; } = new Dictionary();
}
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? 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 ExtensionData { get; set; } = new Dictionary();
}
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>? Metrics { get; set; }
[JsonProperty("posture")]
public object? Posture { get; set; }
[JsonProperty("aggregatedFindings")]
public List>? AggregatedFindings { get; set; }
[JsonProperty("aggregatedAdvice")]
public List>? AggregatedAdvice { get; set; }
[JsonProperty("topicSummary")]
public Dictionary? TopicSummary { get; set; }
[JsonProperty("domainSummary")]
public Dictionary? DomainSummary { get; set; }
[JsonExtensionData]
public IDictionary ExtensionData { get; set; } = new Dictionary();
}
public class PostureReportReferenceDto
{
[JsonProperty("key")]
public string? Key { get; set; }
[JsonProperty("name")]
public string? Name { get; set; }
[JsonExtensionData]
public IDictionary ExtensionData { get; set; } = new Dictionary();
}
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 ExtensionData { get; set; } = new Dictionary();
}
public class PostureReportDataQualityDto
{
[JsonProperty("status")]
public string? Status { get; set; }
[JsonProperty("summary")]
public PostureReportDataQualitySummaryDto? Summary { get; set; }
[JsonProperty("items")]
public List? Items { get; set; }
[JsonExtensionData]
public IDictionary ExtensionData { get; set; } = new Dictionary();
}
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 ExtensionData { get; set; } = new Dictionary();
}
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 ExtensionData { get; set; } = new Dictionary();
}
public class PostureReportLongitudinalComparisonDto
{
[JsonProperty("status")]
public string? Status { get; set; }
[JsonProperty("baseline")]
public Dictionary? Baseline { get; set; }
[JsonProperty("periodDays")]
public int? PeriodDays { get; set; }
[JsonProperty("metricComparisons")]
public List>? MetricComparisons { get; set; }
[JsonProperty("topicComparisons")]
public List>? TopicComparisons { get; set; }
[JsonProperty("topicSummary")]
public Dictionary? TopicSummary { get; set; }
[JsonProperty("summary")]
public PostureReportLongitudinalSummaryDto? Summary { get; set; }
[JsonExtensionData]
public IDictionary ExtensionData { get; set; } = new Dictionary();
}
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 ExtensionData { get; set; } = new Dictionary();
}
}