AI한테 '초등학교 급식 한 달 식단 짜 줘'라고 하면 식단은 금방 나와요. 그런데 영양사 눈으로 보면 바로 티가 나요. 우리 학교는 수요일에 일품을 내는데 그런 게 없고, 아이들이 안 먹는 무침이 매일 들어가고, 지난달에 낸 메뉴가 또 나와요. 영양 수치는 맞을지 몰라도 '우리 학교 식단'은 아닌 거죠. 밀스플랜는 이 차이를 줄이는 데 제일 많은 시간을 썼어요.
구성은 우리 학교 이력에서, 영양은 그 안에서
학교를 고르면 그 학교가 NEIS에 올린 지난 급식을 먼저 읽어요. 거기서 밥 종류(쌀밥·잡곡밥·일품·면), 국 종류, 주찬 단백질, 반찬과 나물, 김치, 후식이 어떤 비율로 나왔는지, 요일마다 어떤 밥을 냈는지 셉니다. 새 식단은 이 비율을 따라가요. 지금까지 이력대로라면 몇 번 나왔어야 하는데 몇 번 나왔는지를 보고 모자란 종류부터 채우는 식이에요.
영양은 그 다음이에요. 종류를 정한 뒤 그 안에서 메뉴를 고르고, 주 단위로 영양 기준을 확인해요. 영양을 먼저 맞추게 두면 영양 점수가 좋은 우유·무침·해물이 실제보다 자주 뽑혀서 식단이 '모범답안'처럼 바뀌어 버리거든요.
식단을 짤 때 지키는 규칙
- 국에 김치를 포함한 4찬(주찬·반찬·나물·김치)이 기본이에요. 후식은 학교 이력을 따라 넣거나 비워요.
- 같은 메뉴는 한 달에 한 번만 넣어요. 궁중잡채와 한식잡채처럼 꾸밈말만 다른 요리도 같은 메뉴로 봐요.
- 한 끼 안에서 같은 주재료가 두 번 나오지 않게 해요. 김치찌개가 나오는 날은 김치 칸에 깍두기를 넣는 식이에요.
- 주간 영양 기준은 에너지 ±10%, 탄수화물 55~65%, 단백질 7~20%, 지방 15~30%예요. 급식 일수에 비례해서 봐요.
- 메뉴마다 알레르기 유발식품 번호(1~19)를 붙이고, 알레르기가 있는 학생을 고르면 피해야 할 메뉴를 표시해요.
영양 보정은 뚜렷이 벗어났을 때만
메뉴 이름으로 영양을 추정하면 오차가 생겨요. 실제 학교 6곳의 254주를 NEIS에 올라온 영양 수치와 비교해 보니, 주 평균 열량의 추정 오차가 중앙값 6.6%였어요. 그래서 기준을 이 오차보다 더 벗어난 주만 메뉴를 바꿔요. 바꿀 때도 같은 종류 안에서, 그 학교가 자주 내던 메뉴 쪽으로 골라요. 화면의 경고 표시는 기준 그대로 보여 드려요.
실제 학교와 비교해 보니
2025년 실제 학교들의 급식을 두고, 각 달을 그 전까지의 이력만으로 생성해 실제 식단과 견줬어요. 학교 6곳의 54달로 쟀어요.
| 항목 | 생성한 식단 | 실제 식단 |
|---|---|---|
| 주간 영양 기준 네 가지를 다 지킨 주 | 42% | 19% |
| 같은 달 메뉴 중복 (100일당) | 0번 | 18.8번 |
| 국이 없는 날 | 0% | 14% |
영양 기준은 실제보다 잘 지키고, 이 측정에서 한 달 안 중복은 없었어요. 국은 영양사 선생님들 의견대로 매일 넣게 했어요. 아쉬운 점도 있어요. 메뉴 종류의 분포가 실제와 얼마나 닮았는지 재 보면, 아직은 작년 같은 달 식단을 그대로 가져다 쓰는 것보다 조금 덜 닮았어요. 학교마다 해마다 같은 달에 같은 메뉴를 내는 습관이 있는데, 그걸 다 담지는 못한 거예요. 계속 고치고 있어요.
마음에 안 드는 날만 다시 생성
한 달 식단이 다 마음에 들 수는 없어요. 특정 날짜만 다시 생성하면 그날은 새로 짜고, 나머지 날은 밥과 주찬을 그대로 둔 채 반찬·나물·김치·후식만 바꿔 주 전체 영양을 다시 맞춰요. 급식이 없는 날로 바꿀 때도 같은 방식이에요. 다 됐으면 엑셀 식단표로 내보내고, 재료 매칭을 거치면 주차별 발주서도 받을 수 있어요.