3단계 로드맵
이론·코칭 방법의 본진은 편식극복키트 / 06_운영 / 카톡코칭 / 코칭엔진_스펙_v1.md. 앱은 그 근거를 구현한다.
엔진 스펙 정립 (근거 수집) ✅ 완료
- 편식 이론 정독: SOS(Toomey)·Satter DOR·국제가이드 30개·KDRI 2025
- 코칭 원칙(P1~P9)·질문 설계·프롬프트 규격 문서화
엔진 구현 ✅ 완료
- 편지·질문 프롬프트 — 데이터로 아는 건 안 묻기, 환각 차단
- 먹는 장소(집/기관)·식사시간·체위 입력, 식단표 OCR 자동채움
- 영양·시계열·체위 분석 + 새벽 2시(KST) 크론 생성 → 아침에 도착
명문화 ✅ 이 문서
- 데이터 정리·분석 알고리즘·프롬프트 설계를 이 페이지에 공개
- 병원 차트형 시계열 검토 구조 명시(현재 + 로드맵)
매일 도는 회귀 고리
한 바퀴 돌 때마다 아이 데이터가 늘고, 코칭은 더 그 아이에게 맞춰진다.
(KST 2시 생성)
입력 → 정규화 → 구조화 저장
자유 입력 메뉴는 메뉴→식재료 매핑으로 표준 식재료(70여 종 대표어)로 분해하고, 식재료는 다시 식재료→영양소 매핑으로 영양소에 연결한다. 모든 분석은 이 정규화된 식재료 집합 위에서 돈다.
| 테이블 | 핵심 필드 | 역할 |
|---|---|---|
| meal_logs | log_date·slot · menus·ingredients · place(집/기관) · meal_time · texture·autonomy·environment·duration_min · refused·ate_well·note | 끼니별 식사 기록. 정량(영양)·정성(반응·환경) 모두. |
| growth_logs | measured_on·height_cm·weight_kg | 체위 시계열(측정값 누적). BMI·또래 퍼센타일 산출원. |
| user_menu_overrides | menu→ingredients | 부모 교정("이 집 짜파게티엔 당근 빼기"). 개인 매핑 캐시. |
| coach_letters | letter_date·letter·oneliner · source_hash · context(jsonb) | 일 단위 편지 + "우리 판단" 스냅샷(분석 입력 근거). |
| daily_questions | q_date·question·chips·answer · context(jsonb) | 일 단위 질문·답변 + 생성 근거 스냅샷. |
| children | age_band·birth_year/month·sex·daycare·allergens | 분석 기준선(나이·성별·등원·알레르기). |
전부 결정론적 코드 — LLM은 분석에 안 쓴다
신호등·식품군·시계열·BMI는 모두 코드로 계산한다(LLM 0). 그래야 환각 없이 같은 입력 → 같은 결과가 나오고, 그 숫자만 프롬프트에 넘긴다.
🚦 핵심 영양소 충족도
최근 7일 기록을 일(day)별로 보고, 식재료→영양소 매핑(정확값 ∪ 범주 근사)으로 영양소별 며칠 커버됐나를 센다.
🟢 충분 d≥3 또는 d/N≥0.5 · 🟡 가끔 d=1~2 · 🔴 결핍 d=0
(생선·미역 주2회도 인정하도록 비율 기준 병행)
🏅 S~D 등급
신호등을 점수화해 한눈에. 식재료 종 수가 아니라 영양소 충족률이 기준.
S≥90 · A≥70 · B≥55 · C≥40 · D<40
📋 보건복지부 KDRI 2025
필수 영양소 36종을 같은 커버리지 규칙으로 신호등화. 정확 매핑된 종은 개인화 신호등, 미매핑 종은 참고지표로 구분 표기(환각 방지).
🥗 골고루 먹나
8개 식품군을 빈도로 충분/조금부족/부족 3단계. 고기·생선·계란·콩은 단백질로 합산해 "매일 챙김" 판정.
📈 추세 사실 (결정론적)
최근 기록에서 사실 문장만 뽑는다. 횟수·날짜를 LLM이 지어내지 못하게 코드가 계산해 넘긴다(P4).
📏 WHO 성장도표
키·몸무게 → BMI → WHO LMS로 또래 퍼센타일, 질병관리청 컷오프로 밴드. 표현은 "또래 평균 정도(100명 중 N번째)"로 평이하게.
밴드: <5 저체중 · <85 정상 · <95 과체중 · ≥95 비만
분석 숫자 → 따뜻한 편지·질문
고정 시스템 프롬프트(방법론 + 가드레일 P1~P9, 모든 사용자 공통 → 캐싱)에, 그 아이의 분석 결과만을 사용자 메시지로 얹어 생성한다. 모델: Claude Haiku.
정렬(식재료)+거부+부족영양+메모수가 직전과 같으면 LLM을 다시 부르지 않고 그날 편지를 재사용. 식단이 바뀐 날만 1회 재생성한다.입력에서 코칭까지 (새벽 크론)
매일 KST 새벽 2시, 활성 자녀를 오래된 순으로 돌며 아래를 수행. 실행 종료 시각 가드(시간 예산)로 안전 종료하고 남은 자녀는 다음 회차가 이어받는다.
지문 같으면 재사용
편지 + 오늘의 질문
+ context 스냅샷 저장
기록을 계속 남겨 검토하나 — 현재 + 로드맵
"갑자기 BMI가 느는지", "주/월/분기/반기/연 단위로 요약을 쌓아 차트처럼 검토하는지"에 대한 정직한 현황이다.
period_summaries 테이블에 주·월·분기·반기·연 단위 요약(잘먹는 다양성·거부율·완식률·식사시간·끼니수)을 멱등 재계산해 누적. 어드민 쓰레드에서 기간별 표로 시계열 검토 가능(부모 홈 노출은 다음 단계).growth_logs 위에 BMI 퍼센타일 변화율 감지(임계 초과 시 코칭/알림), 그리고 위 period_summaries 롤업을 부모 홈에도 "이번 달 요약" 카드로 노출.