k-schoollunch-menu
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseKorean School Lunch Menu (NEIS)
韩国学校午餐菜单(NEIS)
What this skill does
本Skill的功能
나이스(NEIS) 교육정보 개방 포털의 학교기본정보·급식식단정보를 가 중계하는 HTTP API로 조회한다.
k-skill-proxy- 사용자는 시도교육청 이름(자연어)과 학교 이름, 날짜만 말하면 된다.
- 에이전트는 먼저 로 학교를 찾고, 응답의
/v1/neis/school-search·SD_SCHUL_CODE로ATPT_OFCDC_SC_CODE을 호출한다./v1/neis/school-meal - 인증키()는 프록시 서버에만 두고, 클라이언트는 키 없이 프록시 URL만 호출한다.
KEDU_INFO_KEY
通过中转的HTTP API,查询韩国教育信息开放平台(나이스,NEIS)的学校基本信息和餐食菜单信息。
k-skill-proxy- 用户只需说出市道教育厅名称(自然语言)、学校名称和日期即可。
- Agent首先调用接口查找学校,然后使用响应中的
/v1/neis/school-search和SD_SCHUL_CODE调用ATPT_OFCDC_SC_CODE接口。/v1/neis/school-meal - 认证密钥()仅存放在代理服务器中,客户端无需密钥,只需调用代理URL即可。
KEDU_INFO_KEY
When to use
使用场景
- "서울특별시교육청 미래초등학교 오늘 급식 뭐야?"
- "○○초 급식 식단 알려줘"
- "이번 주 화요일 중학교 급식 메뉴"
- "급식 메뉴 조회해줘" (교육청·학교·날짜 확인 후 진행)
- "首尔特别市教育厅未来小学今天的餐食是什么?"
- "○○小学餐食菜单告诉我"
- "这周二中学的餐食菜单"
- "帮我查询餐食菜单"(确认教育厅、学校、日期后进行)
Prerequisites
前置条件
- 인터넷 연결
- 사용 가능 환경
curl - 에
k-skill-proxy가 설정된 배포(기본 hosted 또는 self-host)에 접근 가능할 것KEDU_INFO_KEY
- 网络连接
- 可使用的环境
curl - 能够访问已配置的
KEDU_INFO_KEY部署(默认托管版或自托管版)k-skill-proxy
Credential requirements
凭证要求
- 사용자 측 필수 시크릿 없음.
- — self-host·별도 프록시를 쓸 때만 설정. 비우면 기본 hosted
KSKILL_PROXY_BASE_URL를 사용한다.https://k-skill-proxy.nomadamas.org - 는 프록시 운영 서버 환경에만 둔다.
KEDU_INFO_KEY
- 用户端无需任何必要密钥。
- — 仅在使用自托管或独立代理时设置。留空则使用默认托管地址
KSKILL_PROXY_BASE_URL。https://k-skill-proxy.nomadamas.org - 仅存放在代理运营服务器的环境中。
KEDU_INFO_KEY
Proxy base URL
代理基础URL
에이전트는 아래처럼 base 를 정한다.
bash
BASE="${KSKILL_PROXY_BASE_URL:-https://k-skill-proxy.nomadamas.org}"
BASE="${BASE%/}"Agent按以下方式确定基础URL:
bash
BASE="${KSKILL_PROXY_BASE_URL:-https://k-skill-proxy.nomadamas.org}"
BASE="${BASE%/}"Workflow
工作流程
1) Collect inputs (do not guess)
1) 收集输入(请勿猜测)
다음이 없으면 사용자에게 짧게 묻는다.
- 교육청 — 자연어 허용 (예: ,
서울특별시교육청,서울).경기도교육청 - 학교명 — 자연어 (예: ,
미래초등학교).○○중학교 - 급식일 — 또는 사용자가 말한 날짜를 한국 시간 기준으로
YYYYMMDD로 정한다. 생략 시 오늘(한국 시간).YYYYMMDD
교육청 표현이 애매해 가 나오면, 응답의 를 보여 주고 더 구체적인 이름(예: vs )을 받는다.
ambiguous_education_officecandidate_codes경상북도교육청경상남도교육청若缺少以下信息,需简短询问用户:
- 教育厅 — 支持自然语言(例如:、
首尔特别市教育厅、首尔)。京畿道教育厅 - 学校名称 — 支持自然语言(例如:、
未来小学)。○○中学 - 餐食日期 — 格式为,或根据用户所说日期转换为韩国时间的
YYYYMMDD格式。省略时默认当天(韩国时间)。YYYYMMDD
若教育厅表述模糊导致返回,需展示响应中的,并请用户提供更具体的名称(例如: vs )。
ambiguous_education_officecandidate_codes庆尚北道教育厅庆尚南道教育厅2) Search school (/v1/neis/school-search
)
/v1/neis/school-search2) 搜索学校(/v1/neis/school-search
)
/v1/neis/school-searchbash
curl -fsS --get "${BASE}/v1/neis/school-search" \
--data-urlencode "educationOffice=${EDU_OFFICE}" \
--data-urlencode "schoolName=${SCHOOL_NAME}"- ,
EDU_OFFICE은 사용자 입력을 그대로 넣어도 된다. 프록시가 교육청명을 코드로 해석한다.SCHOOL_NAME - 응답의 로 실제 매칭된 시도교육청 코드를 확인할 수 있다.
resolved_education_office.atpt_ofcdc_sc_code
bash
curl -fsS --get "${BASE}/v1/neis/school-search" \
--data-urlencode "educationOffice=${EDU_OFFICE}" \
--data-urlencode "schoolName=${SCHOOL_NAME}"- 和
EDU_OFFICE可直接使用用户输入内容,代理会将教育厅名称解析为对应代码。SCHOOL_NAME - 通过响应中的可确认实际匹配的市道教育厅代码。
resolved_education_office.atpt_ofcdc_sc_code
3) Disambiguate when multiple schools match
3) 多学校匹配时进行歧义消除
schoolInforowORG_RDNMA한 건뿐이면 그 row의 , 를 다음 단계에 쓴다.
ATPT_OFCDC_SC_CODESD_SCHUL_CODE若正文的包含多条记录,需向用户展示**学校名称、地址(等)**并请用户选择其中一个。
schoolInforowORG_RDNMA若仅一条记录,则使用该row中的和进入下一步。
ATPT_OFCDC_SC_CODESD_SCHUL_CODE4) Fetch meal (/v1/neis/school-meal
)
/v1/neis/school-meal4) 获取餐食信息(/v1/neis/school-meal
)
/v1/neis/school-mealbash
curl -fsS --get "${BASE}/v1/neis/school-meal" \
--data-urlencode "educationOfficeCode=${ATPT}" \
--data-urlencode "schoolCode=${SD}" \
--data-urlencode "mealDate=${YYYYMMDD}"- /
ATPT는 3단계에서 확정한 코드.SD - 조식·중식·석식만 보고 싶으면 (선택).
mealKindCode=1|2|3
bash
curl -fsS --get "${BASE}/v1/neis/school-meal" \
--data-urlencode "educationOfficeCode=${ATPT}" \
--data-urlencode "schoolCode=${SD}" \
--data-urlencode "mealDate=${YYYYMMDD}"- /
ATPT为步骤3中确定的代码。SD - 若仅需查看早餐、午餐、晚餐,可添加(可选)。
mealKindCode=1|2|3
5) Summarize for the user
5) 为用户总结信息
- 안의
mealServiceDietInfo를 기준으로 요약한다.row - 메뉴 문자열(등)의
DDISH_NM는 줄바꿈으로 바꿔 읽기 쉽게 한다.<br/> - 칼로리·영양 정보 필드가 있으면 한두 줄로 덧붙인다.
- NEIS가 빈 결과를 주면 "해당 일자 급식 데이터 없음" 가능성을 안내한다.
- 以中的
mealServiceDietInfo为基础进行总结。row - 将菜单字符串(如)中的
DDISH_NM替换为换行符,提升可读性。<br/> - 若存在卡路里、营养信息字段,可添加1-2行补充说明。
- 若NEIS返回空结果,需告知用户“该日期无餐食数据”的可能性。
Upstream reference
上游参考
- 급식·학교기본정보 데이터: 나이스 교육정보 개방 포털
- 餐食、学校基本信息数据:韩国教育信息开放平台
Done when
完成标准
- 교육청·학교·날짜를 확인했다.
- 학교 검색으로 단일 학교를 확정했다(또는 사용자가 선택했다).
- 급식 API 호출에 성공했고, 메뉴를 사용자 친화적으로 정리했다.
- 已确认教育厅、学校、日期信息。
- 通过学校搜索确定了单一学校(或由用户选择)。
- 成功调用餐食API,并将菜单整理为用户友好的形式。
Failure modes
失败场景
- 프록시에 미설정 →
KEDU_INFO_KEY/503upstream_not_configured - 교육청 이름이 여러 시도에 걸침 → /
400ambiguous_education_office - 학교명이 여러 건 — 사용자 선택 없이 임의로 고르지 말 것
- 공휴일·방학·미제공 일자로 빈 급식
- NEIS API 일시 장애·호출 제한
- 代理未配置→ 返回
KEDU_INFO_KEY/503upstream_not_configured - 教育厅名称对应多个市道 → 返回/
400ambiguous_education_office - 学校名称匹配多条记录 — 请勿在未获得用户选择的情况下随意指定
- 节假日、假期、未提供餐食的日期返回空结果
- NEIS API临时故障、调用受限
Notes
注意事项
- 학교 코드를 사용자에게 외우게 하지 않는다. 항상 →
school-search순서를 따른다.school-meal - Raw JSON을 그대로 붙여 넣지 말고 요약 위주로 답한다.
- 자세한 엔드포인트·필드는 와
docs/features/k-schoollunch-menu.md를 참고한다.docs/features/k-skill-proxy.md
- 不要让用户记忆学校代码,务必遵循→
school-search的调用顺序。school-meal - 请勿直接粘贴原始JSON,应以总结内容为主进行回复。
- 详细的端点、字段信息请参考和
docs/features/k-schoollunch-menu.md。docs/features/k-skill-proxy.md