ミルク量推定ツール

※ 8月と9月など複数月をまとめて貼り付けOK(時系列で自動解析)
※ 自動判定は、直近の「寝る/起きる」ログから状態を推定します(不在時は起床扱い)。
今の提案量
-- mL
(0.9×期待量を10mL丸め、満量でクリップ)
満量(上限)
-- mL
最新体重
-- kg
R×体重 / 予定回数 で上限算出
標準に達する目安
--:--
満量に達する目安
--:--
+30mLの追い足し目安
--:--
期待飲量カーブ(解析直後の設定で描画)
横軸:直前ミルクからの経過(分, 0–300)/縦軸:期待量(mL, 0–220)/グレー縦線=現在
ギャップ別の中央値ヒートマップ(Q50/Q75)
列:0–59 / 60–119 / 120–179 / 180–239 / 240–299 / 300–359 / 360–479 / 480+
このツールのロジック(要点)
1) 追い足し判定:直前ミルクから < 45分 のミルクは同一エピソード扱い(追い足し)。
2) ギャップ→量の分布学習:エピソード間ギャップを 60分刻みで {0–59,60–119,...,480+} にビン分け。各ビンの Q50/Q75 を**最近データほど重く**(半減期7日)学習。
3) 期待飲量カーブ f(t):0–45分は「追い足し代表値」(Q50/Q75)に抑えて緩やかに立ち上げ、その後は 60分刻み分位を**単調増加**にして区分線形で接続(480分以降は最後の学習値を保持)。
4) 提案量:現在の期待 f(t_now) に寝起き補正 b(自動/手動, +10/+20mL)を加えた後、**0.9×**して10mL丸め。吐き戻しありの場合は満量側を縮小。
5) 満量(上限):日上限 = min(R×体重, 960)。1回上限 = 日上限 / 予定回数。直近2h吐き戻し→≤100, 直近12h→≤120 でクリップ。
6) 目安時刻:同一の探索上限 tLimit = max(300,480, g_now+360) を使い、
  solve t for 0.9×(f(t)+b) ≥ {標準, 満量(capdisp)}. 解が無ければ「未達(~ 0.9×f(tLimit) mL)」と表示。
7) 号泣は学習に使わない(信頼性が低いため)。吐き戻しは「吐く」および「メモ: 吐き戻し」を検出して満量側の安全弁にのみ反映。