sequenceDiagram participant Mini as 小程序(五维详情页) participant Ctrl as DimensionAssessmentController participant MS as DimensionMeasureService participant LG as cfc-langgraph(AI) participant DSS as DimensionScoreService participant NS as NormService participant SA as ScoringAlgorithm participant HIS as HealthIndexService participant ES as EnergyService participant VO as HealthDimensionVO Note over Mini,LG: ① 采集(L1 行为 / L2 机器提取) Mini->>Mini: 玩游戏/拍舌/拍脸(game-wrapper 记录反应时、hits/false-alarms) Mini->>LG: 上传舌象/人脸(POST /api/v1/tongue|emotion) LG-->>Mini: 结构化结果(概率/质量评分/帧数) Mini->>Ctrl: POST /api/assessment/measure/submit (含 rawValue/quality/modelVersion/measureTime) Ctrl->>MS: submit(request) MS->>MS: 校验时间戳(防补填)+质量门禁(不达标拒收) MS-->>Ctrl: Result (落 DimensionMeasure) Note over Ctrl,HIS: ② 计分 → 维度分 Mini->>Ctrl: POST /api/assessment/dimension-score/get {childId, dimension} Ctrl->>DSS: compute(childId, dimension) DSS->>MS: list(measures of dimension) loop 每个指标 metric DSS->>NS: getNorm(metricCode, gender, ageMonths) NS-->>DSS: AssessmentMetricNorm(mean, sd) DSS->>SA: tScore(raw, mean, sd, direction) %% 负向(反应时/错误)取100-T DSS->>SA: dPrime(hits, fa) / beta(hr, far) %% 游戏类用 d′,β 异常降权 end DSS->>SA: aggregateDimension(items) %% Σ(w·c·T)/Σ(w·c),缺失源重归一化 SA->>SA: icc(sources) → 一致性系数(1/0.8/0.6) SA->>SA: confidence(完整度均值 × 一致性) DSS->>DSS: 落 DimensionScore 快照(含 confidence/sampleSize/dataSources) DSS-->>Ctrl: DimensionScoreVO Ctrl-->>Mini: Result Note over Mini,VO: ③ 维度分 → 五维健康指数 → getOverview Mini->>Ctrl: POST /api/assessment/health-index/get {childId} Ctrl->>HIS: compute(childId) HIS->>DSS: 取五维 DimensionScore HIS->>SA: 总健康指数 = Σ(维度分×权重)/Σ(权重) %% 默认等权,配置表可调 HIS->>HIS: 落 HealthIndexSnapshot HIS-->>Ctrl: HealthIndexVO Ctrl-->>Mini: Result Note over Mini,VO: ④ 五维概览页(对接现有 getOverview) Mini->>ES: getOverview(memberId) ES->>HIS: getLatest(childId) %% 替换原 healthIndex=0 HIS-->>ES: 各维 score + confidence ES->>VO: 组装 HealthDimensionVO(DimensionItem.healthIndex/confidence/dataSources) ES-->>Mini: 五维概览(分数+置信度随报告展示)