521 lines
16 KiB
C#
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?>();
|
|
}
|
|
}
|