/mealfred-food-mapping 튜닝 리포트 분석 + 구조적 개선 로드맵엔진은 메뉴명을 식재료로 푸는 4단 파이프라인(learned → rule → scan → LLM)이다. 이번 튜닝으로 무매핑이 17 → 9로 줄었지만, 진짜 신호는 결정론(rule+scan) 해소율이 53%에 정체했다는 것 — 나머지 절반이 LLM으로 샌다. LLM은 비용이자 환각 리스크다(실제로 "상투과자"를 소고기로 지어냈다). 따라서 전략의 본질은 결정론 비중을 끌어올려 LLM을 '진짜 처음 보는 신메뉴'에만 쓰게 하는 것이다.
결정론 = 0~2차(무료·안전). 3차 LLM만 비용·환각 위험. 현재 결정론 해소율 53%.
· 1글자 표준명 → 2자 표면형 자동 등재(닭→닭고기/닭살/닭볶음, 무→무채/무국)
· 가공식품 베이스 사전 추가 + processed 플래그
· 복합메뉴 분해 — 접미사 제거 후 주재료 토큰 스캔(다시마무채국 → 다시마+무)
· learned_menus가 실메뉴에서 자라 다음부터 0차 무료 히트, 야간 remap 크론이 빈 행 백필
· LLM 결과는 어휘 화이트리스트 통과분만 learned 저장(환각 오염 차단)
· 저신뢰 1회성(핑거마들렌·삼색초무침 등)은 learned 저장 보류 — 사전 오염 방지
· 영양 커버리지 72%(147 중 106, 41 미등재). 카테고리 근사 시드는 런타임 빗대기와 동일 → 실익 0
· 농진청 식품성분 소스로 정확값 등재 — 값 날조 금지 원칙(없는 값은 회색 reference로 정직하게)
· 분류: 실식재료(쑥갓·아욱·더덕·레몬·게맛살…) = 등재 대상 / 노이즈(케찹·소스·육수·젓) = 풀 정리
/mealfred-food-mapping 재호출 → 72%→90%+| 지표 | 현재 | 목표 | 의미 |
|---|---|---|---|
| 무매핑율 | 9 / 242 | 0 | 식재료를 못 푼 메뉴 |
| 결정론 해소율(rule+scan) | 53% | 75%+ | 무료·안전 경로 비중 ↑ |
| LLM 호출율 | ~47% | <20% | 비용·환각 표면 ↓ |
| 환각 incident | 1건 해결(상투과자) | 0 | 없는 재료 지어냄 |
| NUTRI_MAP 커버리지 | 72% | 90%+ | 농진청 소스 후 |
| 분류 | 예 | 처리 |
|---|---|---|
| 오타(명시 금지) | 단백실쉐이크·시레깃국 | 사전 등재 X — 정규화 레이어에서만 교정 |
| 모호/1회성 | 삼색초무침·핑거마들렌·쥐포채무침 | LLM 위임 + learned 저장 보류 |
| 노이즈(식재료 아님) | 토마토케찹·굴소스·멸치육수·단무지 | 풀에서 정리 후보 |
| EXTRA 동반 등재 | 양배추비트무침의 비트 | EXTRA + 영양 동반 등재(다음 회차) |
type 속성·확장자를 강제해 node scripts/… 직접 실행이 막힌다. 이번엔 무손상 로더(/tmp/json-preload.mjs + --import)로 우회했다. 영구 고정 권장 = tsx 의존성 추가(표준적·로더 관리 불필요) 또는 로더를 리포에 포함.출처: /mealfred-food-mapping 튜닝 리포트(2026-06-01, meal_logs 76행·코퍼스 90·실메뉴 151고유) · 매핑 코어 lib/menuMapCore.ts·lib/menuMap.ts·lib/learnedMenus.ts · 영양 lib/nutrition.ts NUTRI_MAP