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(); } }