학교 생활 플러그인
위치: examples/plugins/school-life/
학교 생활 1.5.0은 하드코딩 시간표나 테스트용 JSON을 사용하지 않습니다. 학교명을
NEIS 공개 API의 schoolInfo에서 찾고, 학교 종류에 맞는
시간표 API와 SchoolSchedule, mealServiceDietInfo를 호출합니다. 선택한 학교·학년·반과
알림 설정은 사용자와 Plugin Instance 범위의 저장소에 격리합니다.
학생용 기능
기간 조회는 시간표·일정·급식 API를 각각 한 번씩 병렬 호출하고 날짜별로 묶으므로 7일 화면이 날짜마다 네트워크를 반복하지 않습니다. 급식의 숫자 알레르기 코드는 19개 표준 항목 이름으로 바꾸고, 메뉴와 영양/원산지의 HTML 줄바꿈을 사람이 읽는 텍스트로 정리합니다.
설치와 첫 설정
examples/plugins/school-life/dist/school-life-1.5.0.mplg
크기 263438 bytes
SHA-256 dfd39c29154c50bd14b4eeed390efffa7fa5ab3c6ad9361730eea67bdb836276
- Morit 플러그인 관리에서 위
.mplg를 선택합니다. network,storage,ai_storage,notifications,background권한을 허용합니다.- 학교 이름을 검색하고 후보에서 정확한 학교를 고릅니다.
- 학년·반, 알림 시각(기본 07:30), 아침 브리핑 사용 여부를 저장합니다.
- 홈의
학교 생활,오늘,이번 주,급식화면을 사용합니다.
학교 프로필이 없으면 조회 화면이 원시 오류 대신 설정 안내를 표시합니다. 설정은 다시
열어 수정할 수 있으며 아침 브리핑을 끄면 자동 알림만 중단됩니다. 수동 다음 학교일 알림
요청은 계속 사용할 수 있습니다.
AI 예:
오늘 수업 순서와 급식 알려줘내일 알레르기 5번 메뉴가 있어?이번 주 학사일정과 수업량을 정리해줘이번 주 학교 할 일에 과학 보고서 추가해줘학교 할 일 중 끝낸 과제를 완료 처리해줘/timetable 내일/meal 앞으로 7일
개인정보와 실패 처리
- 저장: 공개 학교 식별자, 학년·반, 알림 시각/사용 여부, 사용자가 AI에 요청한 학교 할 일
- 미수집: 학생 이름, 학번, 성적, NEIS 로그인 정보
- 외부 전송: 공개 조회 조건만 NEIS에 전달
- 삭제: profile, background lease/state, host-action outbox를 사용자 범위에서 purge
- 빈 날짜: 정상 빈 상태로 표시
- NEIS 장애/형식 오류: 제한된 사용자 메시지로 실패하고 임의 데이터를 만들지 않음
검증
backend/archive_processing/test_plugin_examples.py는 서명 package 설치, 권한 전 상태,
학교 연결, 단일 날짜와 7일 조회, 알레르기/영양 변환, 검색, rich 알림, 자동 브리핑 중복
방지, Storage CRUD/AI 권한, 재시작 복원, actor·Instance 격리, migration, disable/delete purge를
검증합니다. day/week Response extension은 A2UI v0.9 schema와 실제 capability data source를
검사하고 plugin.school_life.day.response, plugin.school_life.week.response로 동적 등록됩니다.
배포 전에는 예제 검증 방법에 따라 실제 NEIS 네트워크로 공개 시간표·학사일정· 급식 기간 조회도 실행합니다. 이 live 확인은 API와 parser 경계를 검증하지만 release APK의 화면·알림을 Android 실기기에서 확인하는 절차를 대신하지 않습니다. 학교가 공개하지 않은 날짜의 빈 응답은 정상 상태로 처리해야 합니다.