工程细化 · 规划文档

Growth Engine · MVP 数据流设计

定位:把「儿童成长智能平台」从已有底座(百分位/因子引擎)向上推到可用的预测·分流·Agent

原则:Collect → Standardize → Growth Engine(模型层) → Answers。管道是骨架,模型层是护城河。

← 返回首页

0. 现状盘点(先对齐已有代码)

已有能力位置状态
身高/体重/BMI 百分位(男女 0~18,国标)engine/lib/growth_engine.js✅ 可跑
遗传靶身高(中亲法)targetHeight()✅ 可跑
简化成年身高估算(沿骨龄百分位通道读到 18 岁)projectAdultHeight()⚠️ 启发式,需替换
BMI 评价(<6 百分位法 / ≥6 界值法)bmiStatus()✅ 可跑
91 个生长因子 + 11 类标注(角色/数据通道/规则)engine/pages/factors.html✅ 规格书
前端演示(百分位/趋势/BMI 图)demo1-app/✅ UI 底子
缺失(本设计要补)说明
骨龄作为一等公民模型现在只当百分位通道的输入,无校准/置信度
纵向速度 / 轨迹偏离信号只有横截面百分位,没有 velocity、ΔSDS、百分位迁移
风险分流(绿/黄/红)没有「良性 vs 病理」的判断
AI Agent / Answers 层没有基于模型输出的解释与问答
校准与验证没有一个对照真实成年身高的闭环

1. 一句话定位 + MVP 目标

在给定年龄/性别/身高/骨龄/青春期/父母身高 + 1 次随访的前提下,输出:(a) 成年身高预测带置信区间,(b) 生长风险分层(绿/黄/红),(c) 证据分级的可干预建议,并让 Agent 能解释"为什么"。

MVP 只看一个孩子、两个时间点(基线 + 1 次随访 ≥3 个月),不做大样本纵向建模。

2. 数据流总览(四阶段)

A
采集
  • 出生信息
  • 人体测量
  • 骨龄/青春期
  • 实验室
  • 临床风险
  • 可干预因素

(纵向:同一孩子不同日期)

B
标准化
  • 单位/清洗
  • 计算 SDS/Z
  • MPH/靶身高
  • 推导 ΔBA-CA、ΔSDS
  • 标记缺失/异常
C
模型层Growth Engine
骨龄子模型 速度/轨迹子模型 PAH子模型(校准)
风险分流
绿
D
输出Answers
  • 成长曲线+轨迹
  • 成年身高(PAH+CI)
  • 风险分级+建议
  • 解释+问答(Agent)
转诊路径(红) →

3. 变量清单(按层,标注必填/选填)

A. 身份与出生

变量单位时点必填说明
性别男/女出生一切分表基础
出生日期date出生→ 计算年龄
胎龄出生选填早产儿需按校正年龄
出生体重/身长kg / cm出生选填宫内生长趋势参考
父亲身高 / 母亲身高cm基线→ MPH、靶身高

B. 人体测量(同一孩子多时点)

变量单位时点必填说明
身高cm每次测量日期是速度的关键
体重kg每次→ BMI
坐高/臂展cm基线选填比例异常(如性早熟/综合征)线索
头围cm<3岁选填

C. 骨龄与青春期

变量单位时点必填说明
骨龄基线(必要)/随访(可选)标注方法(GP / TW3) 与来源
Tanner 分期B/G 1–5, PH 1–5基线+随访青春期速度必须按分期校正
睾丸体积ml男孩随访选填青春期启动标志
初潮年龄女孩随访选填

D. 实验室(可选,临床需要时)

变量单位说明
IGF-1 (±IGFBP-3)ng/mL生长轴 / 生长激素线索
TSH / FT4mIU/L / pmol/L甲减鉴别

E. 临床风险(分流信号,优先级最高)

F. 可干预因素(Modifiable)

变量单位说明
睡眠时长/质量h/晚参考已用标准
体力活动min/天 中高强度WS/T 10008-2023
营养(蛋白/钙/VD/膳食质量)评分
屏幕时间 / 心理压力h / 主观

G. 派生/序列(由多时点算出,是"主引擎")

关键:G 组才是判断"长得好不好"的核心信号,单次身高/骨龄是横截面。把 G 组设为引擎第一优先。

4. 数据时点 / 时间线(MVP 最小采集方案)

出生    ← 出生体重/身长/胎龄(选填)
基线T0  ← 身高/体重/BMI + 骨龄X光 + Tanner + 实验室 + 父母身高 + 风险问卷 + 可干预因素
T+3mo   ← 身高/体重 + 可干预因素更新                         (开始具备速度能力)
T+6mo   ← 身高/体重 + Tanner 复评 → 计算首选速度/轨迹
T+12mo  ← 可选:复查骨龄 / 年度生长评估

5. 标准化层(Standardize)

复用/扩展 growth_engine.js,不重写:

  1. 单位统一:cm、kg、岁、ng/mL 等;日期归一为"精确年龄(年,含小数)"。
  2. SDS / 百分位calcSDS() 取代现 pRankAt() 的粗百分位;参考标准采用国家 WS/T 体系(7 岁以下用卫健委生长标准),方法优先 L/M/S,缺失时退差值法,每个值标注所用参考。
  3. 遗传靶身高:复用 targetHeight()男女各为 (父+母±13)/2,±8.5cm(现为 ±5/±10,统一为临床口径 ±8.5)。
  4. 派生指标ΔBA−CAheightVelocity()sdsSlope()percentileMigration()
  5. 缺失/异常标记:每个字段带 is_missing / is_outlier / source(= 证据等级)。
  6. 避免"92 个等权重变量":标准化层输出的是分组后的结构化特征(测量/遗传/内分泌/环境/病理),不是摊平的长向量。
⚠️ 标准化会"制造"大量派生变量,但模型层只消费分组后的一组核心特征,其余仅作为可解释性/Agent 的素材。这是防止特征坍缩的关键。

6. 模型层(Growth Engine 核心)

6.1 骨龄子模型

6.2 速度/轨迹子模型

6.3 成年身高预测子模型(PAH)

6.4 风险分流子模型(绿/黄/红)

规则评分 + 可选 ML。临床树优先(贴合你的"疾病/遗传并发症优先分流"):

IF 慢性病存在 OR 综合征 OR 内分泌病 → 直接 红(无论身高百分位)   ← 最高优先级
ELSE IF 身高 SDS < -2.5 OR 生长失败(速度显著低) OR 进行性百分位下移
        OR 性早熟征象 OR 骨龄提前(ΔBA-CA 明显偏正)
        OR 严重延迟+担忧 OR 异常IGF-1/甲功 → 红
ELSE IF 身高 SDS < -2 OR 速度偏低 OR 温和百分位下移
        OR 相关可干预因素/borderline实验室 → 黄(建议儿科评估)
ELSE → 绿(社区监测)

6.5 建议引擎(证据分级)

7. 输出层(Answers / Agent)

核心体验(已决):孩子基本数据输入 → 给出成长报告(含分流/转诊建议)。分流/转诊成长报告都是产品核心;科普 Agent 后期再做(Phase III)。
输出来源模型说明
成长曲线 + 轨迹叠加6.2可视化,标百分位带与迁移
成年身高预测(含 CI + 方法 + caveat)6.3不确定度前置
风险分级(绿/黄/红 + reasons + next_action)6.4分流转诊路径
个性化建议(证据分级)6.5明确因果强度
解释 + 问答(科普 Agent,Phase III)6.x 输出 + 知识库 RAG解释"为什么矮/偏高""ΔBA-CA 含义"等

Agent 边界(重要)

8. 现有代码如何接入(不重写)

growth_engine.js(保留:百分位/靶身高/BMI)  ← 底层数据与标准化
        │  新增 module
        ▼
growth_models.js   ← 新增:velocity / ΔBA-CA / SDS斜率 / 轨迹flag
growth_pah.js      ← 新增:Bayley-Pinneau(带校准+CI+caveat)
growth_triage.js   ← 新增:绿黄红规则评分(临床树优先)
growth_advice.js   ← 新增:证据分级建议
growth_agent.js    ← 新增(Phase III):RAG + 引用模型输出 + 不确定度

9. 模型选择理由与局限(诚实版)

模型为什么用局限 / caveat
Bayley-Pinneau仅需骨龄+身高,MVP 成本最低骨龄提前/落后时偏差大;假设正常生长模式
百分位通道(现projectAdultHeight已有激进/不可靠,仅作退化兜底
速度/轨迹判断时间序列才反映真实生长测量噪声、间隔不均;需按青春期分期校正
规则分流(绿黄红)可解释、贴合临床逻辑、可审计阈值需校准;不是概率模型
(Phase II) TW3更准需骨成熟度评分
(Phase II) 骨龄 CNN自主需中国儿童重标定

10. 验证与校准计划

  1. 内部一致性:PAH 与靶身高、百分位交叉验证;ΔBA−CA 与性征一致。
  2. 纵向校准(暂缓):当前无历史随访队列 → 先发「未校准」版本;待有纵向数据后比较 PAH 预测 vs 真实成年身高,估算偏差/置信覆盖。
  3. 分流评估:绿/黄/红 vs 儿科内分泌确诊/未确诊,评估敏感性、特异性、转诊率(避免过度转诊)。
  4. 不确定度覆盖:95% CI 实际覆盖率是否接近 95%。
  5. 回归测试:BI 结果在 growth_engine.js 改动后不回归。

11. MVP 里程碑(I / II / III)

12. 已决问题(决策记录)

#问题决策落实位置
1MVP 骨龄来源先接外部:现有临床级测骨龄 API(输入骨龄片 → 输出骨龄);自研版完全就绪后再替换§6.1、§11
2SDS 参考标准WS/T 体系(中国儿童);7 岁以下用卫健委生长标准§5.2
3产品核心体验分流/转诊 + 成长报告都是核心:孩子基本数据输入 → 成长报告(含分流/转诊建议);科普 Agent 后期再做§7、§11
4数据合规暂不处理:demo 阶段多为模拟数据,正式上线前再做合规化(去标识/本地化)§7、§11
5PAH 校准数据 → 先发布「未校准」版本并醒目标注§6.3、§10

13. 待办 / Backlog(暂不处理)

[x] 一键构建脚本:根目录 npm run build / npm test / npm run build:engine(前端 Vite 单文件 + 引擎测试 + 引擎数据构建)。