daycare-eval.html의 평가 기준 · 랭킹 설계 · 데이터 흐름.computeDiversityScore(penalty)로 따로 놀아 학부모에게 '95점인데 전국 꼴찌(상위 100%)' 모순이 노출되는 버그가 있었음 → institution_scores.score를 7축 평균으로 단일화(penalty 이중계산 제거). 아래 '3. 랭킹'의 점수기 서술은 구버전 보관.임의 점수가 아니라 보건복지부·WHO·NOVA·농진청 기준. 식감 단계(HabEat)는 모호·기관유형차로 2026-06-22 제외 → 8축→7축.
| 축 | 무엇을 | 산식 요약 |
|---|---|---|
| 1. 식품군 다양성 WHO MDD | 8개 식품군 충족 + 군 내 세부 종류 | 8/8 + 세부 10종↑ = A+(95) · 8/8 = B(80) · 7/8 = B-(78) |
| 2. KDRI 31종 복지부 2025 | 31종 필수 영양소 커버율(식재료→영양맵) | 25종↑ A+ · 19종↑ A · 14종↑ B+ |
| 3. 메뉴 반복도 | 한 달 최다 반복(밥·김치·우유 등 주식 제외) | ≤2회 A+ · ≤4 B · ≤6 C |
| 4. 알레르겐 표시 식약처 17대 | 알레르겐 표기 유무 | 3종↑ 표시 = 100 · 그 외 80 |
| 5. 가공식품 WHO NOVA | 초가공(너겟·소시지 등) 비중 | <8% A+ · <18% A- · <30% B- |
| 6. 제철 식재료 농진청·해수부 | 식단표 '해당 월' 제철 식재료 정확매칭 수 | 3종↑ A+ · 2종 A · 1종 B+ |
| 7. 조리 스타일 | 한식·양식·일식·중식 다양성 | 4종 A+ · 3종 B+ · 2종 C |
총점 = 7축 평균 → 등급(95+ A+ · 90+ A · 85+ B+ · 80+ B · 70+ C · D). 부모 결과카드엔 이 7축 막대 + 등급.
현행: 줄세우기·부모 총점 모두 7축 평균으로 통일(institution_scores.score = 7축 평균). penalty(반복/가공)는 7축 repeat·nova에 이미 반영돼 이중계산이라 제거. 단독 코호트(1개)는 등수 미표시·하위권 순위 미노출. 아래 구버전 서술 보관.
. 실측 113곳(서울 7개 구) 중앙값 91·평균 90 = 변별력 낮음(다 훌륭) → 화면은 인위적 커브·등급밴드 없이 객관 점수 + 전국 {유형} 상위 X%만(절대값·등급·동네 등수 미노출).computeDiversityScore (결정론·daycareMode: 과일·유제품 제외, 가공/반복 패널티 ON)
| 지표 | 산출(결정론) | 노출 문구(예) |
|---|---|---|
| 생선·해산물 | 생선 등장 distinct 날/일수×7 | 오메가3 풍부한 생선을 다른 원보다 자주 |
| 제철 식재료 | 그 달 제철 식재료 비율(season.ts) | 이번 달 제철 식재료를 자주 |
| 콩류 | 콩류 등장 distinct 날/일수×7 | 두부·콩 식물성 단백질을 자주 |
| 통곡물·잡곡 | 잡곡밥/전체 밥끼니 | 흰쌀밥 대신 잡곡을 자주 |
| 단백질 로테이션 | distinct 단백질 급원 종 수 | 고기·생선·콩·계란 골고루 |
| 채소 다양성 | distinct 채소 표준명 종 수 | 다양한 채소를 폭넓게 |
| 국·탕 다양성 | distinct 국·탕 메뉴 종 수 | 국·탕을 다양하게 돌려 |
| 저가공 | 1−가공끼니비중 | 자연 식재료 끼니가 많아요 |
규칙: percentile ≥60일 때만, 그 원의 최고 1개만. 동률 타이브레이크 = 생선→제철→콩류→통곡물→단백질→채소→국탕→저가공. 약점·저점은 절대 미노출.
/api/ocr — CLOVA(표 셀) + Claude Sonnet 비전(빈칸 날짜밀림 보정). 메뉴명·날짜·기관명(스키마 전용필드) 추출. 비전 대체로 DeepSeek-OCR(환각·149초로 부적합)·Qwen3-VL 검토 → Sonnet 유지(Qwen은 정확도 A/B 후 판단). 그 외 텍스트 LLM은 DeepSeek.institutions 디렉터리(31,819개)에서 매칭 → institution_id+시군구. 폴더/업로드의 구+유형으로 후보를 좁혀 동명이원 방지.mapMenuLocal(농진청 표준명·결정론) → 식품군·영양맵. 미매핑은 DeepSeek 폴백.institution_menus(institution_id, month UNIQUE = 월 1벌) → institution_menu_items(끼니별 m:n) → institution_scores(점수 + 강점지표 standout_dims jsonb).analysis_count로 (기관,월)당 재채점 최대 5회 캡.scripts/import-seoul-menus.ts — 폴더(구/유형/월) 순회 → OCR(동시 4) → 매칭 → 채점 → 적재. PDF는 pdftoppm 래스터.| 경로 | 방식 | 채우는 것 |
|---|---|---|
| ① 배치 zip/폴더 | 센터·구별 식단표 묶음 → 임포터 OCR | 전국 기관 순위 풀(institution_scores) + 추천 빈도 |
| ② daycare-eval 업로드 | 부모가 1장 업로드 → 기관 선택/자동매칭 | 그 기관-월 (institution_menus UNIQUE upsert) |
| ③ 부모 기록탭 | care 앱 식단표 → meal_logs(place=daycare) | 자녀별 급식 기록(추천·코칭) |
세 경로 모두 OCR 결과가 ① 추천 데이터 엔진(food-reco-engine: 식재료 빈도·도감) ② 기관별 식단 평가(이 문서: 점수·순위·강점) 양쪽으로 적재된다.