Focus On Meal (FOM)
프로젝트 발표날짜 : 2025. 12. 09
KH IEI PROJECT
(디지털컨버전스) React & Spring 활용 자바(Java) 개발자 양성과정(5) 1회차
| 팀장/팀원 | 김**(팀장) : 보안 / 인증 - Spring Security 및 JWT 기본 설정, 필터 구축 - 관리자 권한 체크 및 접근 제어 설정 - 관리자 권한 확인 및 라우팅 가드 공공 API 연동 - KAMIS 농산물 가격 API 연동 모듈 구축 - 식품안전정보 API 연동 모듈 구축 - API 수동 동기화 엔드포인트 구현 - API 관리 페이지 UI (동기화 버튼, 상태 표시) - API 동기화 실행 및 결과 표시 로직 - Spring Scheduler 기반 Batch Job 설정 AI 기반 식단 생성 / 분석 - AI API(Gemini) 클라이언트 구축 - 저장된 식단 히스토리 목록/상세 조회 - 식단 상세 모달 및 삭제 처리 - 채팅 메시지 수신 및 AI 응답 생성 로직 구현 - 채팅 상태 관리 및 공공 API 연동 - 식단 저장 테이블 설계 및 Mapper 정의 - 추천 식단 저장 로직 구현 - 알레르기 대체 식단 생성 로직 개발 - 식단 영양 성분 합계 계산 및 분석 로직 구현 가격 및 추천 로직 - 식단 가격 계산 로직 (DB가격 + AI예상가격) - AI 추천 결과와 가격 데이터를 병합하여 제공하는 API 개발 - 레시피 파악, 대체 추천 등 프롬프트 설계 및 고도화 식단 기능 확장 - 저장된 식단 조회 API 개발 - 식단 히스토리 카드 리스트 UI 구현 - 채팅 인터페이스 UI - 식단 결과 카드 및 저장 버튼 UI - 식단 저장 확인 모달 및 처리 로직 알림 기능 - 가격 변동 감지 시 알림 생성 로직 - 알림 드롭다운/페이지 UI |
|---|---|
| 성** : 사용자 계정 기능 - 회원가입/로그인/로그아웃 API 구현 (bcrypt포함) - 이메일을 통한 아이디, 비밀번호 찾기 API 구현 - 회원가입/로그인 페이지 UI 구현 - 회원가입/로그인 폼 유효성 검사 및 API 연동 - 프로필 조회/수정 API 구현 - 프로필 수정 폼 및 API 연동 - 알레르기 정보 CRUD API 구현 - 알레르기 선택 체크박스 UI 구현 - 알레르기 정보 저장 로직 - 회원 탈퇴 API 구현 (관련 데이터 정리 포함) - 회원 탈퇴 확인 모달 및 처리 로직 관리자 기능 - 공지사항 테이블 설계 및 관리자용 공지 CRUD개발 사용자 공지 기능 - 공지 상세 조회 API (조회수 증가 포함) - 이전/다음 페이지 이동 API 메인페이지 설계 - 패럴랙스 효과를 통한 입체적 화면 구현 - 나뭇잎의 움직임을 통한 동적인 페이지 구현 - 푸터 UI - 가격 변동 랭킹 카드 UI | |
| 엄** : 마이페이지 / 사용자 설정 - 마이페이지 설정 탭 UI 구현 - 마이페이지 사이드바 구현 알림 기능 UI - 마이페이지 알림 내역 조회 화면 및 UX 흐름 구현 - 알림 기록 페이지 알림 설정 토글 스위치 UI 즐겨찾기 / 가격 정보 UI - 즐겨찾기 식재료 목록 UI 및 하트 아이콘 토글 관리자 UI - 관리자 사용자 목록 조회 UI 구성 - 관리자 회원 관리 UI - 회원 목록 조회 API (검색, 페이징) - 회원 상태 변경 API (활성/비활성) - 관리자 공지사항 조회·수정·삭제 UI - 사용자 공지사항 목록 및 상세 페이지 UI - 관리자 레이아웃 (사이드바, 헤더) 구현 사용자 공지 기능 - 사용자 공지사항 목록 조회 API 사이트 공통 기능 - 검색, 페이징, 정렬 상태 관리 | |
| 이** : 보안 / 인증 - Spring Security 기반 인증·인가 구조 설계 - JWT 발급 및 인증 필터 구성 시스템 안정성 / 서버 운영 - Spring Actuator 설정 및 시스템 상태 모니터링 지표 수집 로직 구현 - 서버 로그 수집 및 저장 체계 구축 식재료 검색 기능 - 식재료 검색 API 구현 - 식재료 목록, 상세 정보 조회 API 구현 - 식재료 카테고리 필터링 로직 구현 - 식재료 검색/상세 UI 및 상태 관리 로직 구현 - 식재료 영양성분 CRUD, 차트 구현 즐겨찾기 - 식재료 즐겨찾기 조회 API - 즐겨찾기 상태 관리 및 API 연동 가격 변동 알림 설정 - 가격 변동 알림 설정 CRUD - 알림 조건 체크 로직 구현 관리자 기능 - 관리자 식재료 관리 UI - 관리자 식재료 CRUD API 구현 | |
| 이** : 식단 관리 (회원 전용) - 마이페이지 프로필 섹션 UI 구현 - 식단 삭제 API 구현 - 식재료 즐겨찾기 추가/삭제/조회 API 물가 트래커 (핵심 기능) - 식재료 상세 페이지 및 가격 차트 UI - Chart.js 연동 및 시계열 데이터 시각화 식품 안전 위험 알림 - 안전정보 뉴스 목록/상세 조회 API - 안전정보 뉴스 목록 페이지 UI - 뉴스 상세 모달 및 페이징 처리 로직 알림 및 설정 - 알림 목록 조회/읽음 처리/삭제 API - 헤더 알림 아이콘 및 뱃지 UI - 알림 드롭다운/페이지 UI - 알림 상태 관리 및 갱신 로직 - 알림 설정 조회/변경 API 관리자 기능 - 대시보드 통계 조회 API (회원수/식재료수/식단수) - 대시보드 통계 카드 UI - 대시보드 데이터 로딩 및 표시 로직 - 안전정보 뉴스 관리 CRUD API - 안전정보 뉴스 관리 페이지 UI | |
| 개요 | Focus On Meal(FOM)은 식재료 가격 변동 추적, 식품 안전 공표/리콜정보 제공, 개인 맞춤형 식단 추천, 그리고 사용자 중심의 알림 서비스를 통합한 스마트 식생활 관리 플랫폼이다. 최근 급격한 물가 변동, 식품 안전 이슈 증가, 영양 불균형 문제 등 복합적인 생활 문제를 해결하고자, 공공 데이터(Open API) 기반의 정확한 정보 제공 + AI 기반 분석 기능을 결합하였다. 사용자는 관심 식자재를 등록하고, 가격 변동·안전 공표 발생 시 실시간 알림을 받으며, 개인의 신체 정보·알레르기·식재료 취향에 맞춘 맞춤형 식단 제안을 받아 효율적인 소비와 건강한 식생활을 유지할 수 있다. |
| 구현기능 | 1) 식재료 정보 & 가격 변동 관리 공공 농식품 가격 API(KAMIS) 연동 기간별 도매가격/소매가격 조회 가격 변동률 계산 및 그래프 시각화 사용자 관심 재료 즐겨찾기 등록/해제 및 알림 설정 2) 식품 안전 공표 & 리콜 정보 제공 정부 식품 안전 공표·위해식품 리콜 API 연동 관심 식자재의 안전 문제 발생 시 사용자에게 알림 3) 개인 맞춤형 식단 생성(AI 기반 Meal Planner) 신체 정보, 알레르기, 기피 재료 기반 필터링 Gemini AI 모델을 활용한 식단 추천 레시피 상세 모달 제공 및 사용자 저장 기능 4) 관리자 페이지 공지사항 CRUD (목록, 조회, 등록, 수정, 삭제) 공지 필독/NEW 뱃지 설정 회원 관리 검색(제목/내용/작성자), 정렬, 필터, 페이지네이션 각 API 동기화 수동 관리리 React + JWT 기반 관리자 접근 제어 5) 알림(Notification) 시스템 가격 급등/급락 알림 안전 공표 발생 시 알림 사용자 단위 알림 설정(가격/안전 개별 ON/OFF) 알림 읽음/삭제 처리, 전체 선택/일괄 처리 6) 회원 인증 및 계정 관리 Spring Security + JWT 로그인 회원가입 · 이메일 인증 랜덤 닉네임 생성 및 금칙어 필터링 마이페이지(개인정보 수정 / 식단 기록 / 알림 기록 / 즐겨찾는 식재료) |
| 설계의 주안점 | 데이터 기반의 정확성 확보 - 공공 API(가격/안전) 데이터를 주기적으로 수집하여 최신 상태 유지 - 가격 변동률·위해 정보 발생 시 사용자 단위 알림 제공 - 이력 데이터 축적을 통한 가격 추세 분석 및 예측 정확도 향상 확장 가능한 DB 구조 설계 - PRICE_HISTORY, ALERT_HISTORY 등 도메인 분리 - 회원별 알림 설정 커스터마이징 가능 - 정규화된 테이블 구조로 데이터 중복 최소화 및 유지보수성 확보 - 인덱스 설계를 통한 대용량 데이터 조회 성능 최적화 권한/보안 강화 설계 - JWT 기반 인증 - 관리자 페이지 접근 제어 - 비밀번호 변경/이메일 인증/계정 활성 여부 관리 - Spring Security를 활용한 역할 기반 접근 제어 - API 요청 시 토큰 검증 및 권한 확인 프로세스 적용 사용자 중심 UI/UX - React 상태 기반 렌더링과 직관적 알림 UI - 검색 → 정렬 → 필터 → 페이징의 조합을 고려한 프론트 구조 - 반응형 디자인 적용으로 모바일/태블릿 환경 지원 - 로딩 상태 표시 및 에러 핸들링을 통한 사용자 경험 개선 AI 기반 기능 확장성 - Gemini API 사용 - 향후 식단 사진 분석, 식단 영양 자동 계산 기능 확장 가능 - 사용자 선호도 학습을 통한 맞춤형 식재료 추천 기능 구현 가능 - 프롬프트 엔지니어링을 통한 응답 품질 및 정확도 개선 API 연동 안정성 및 예외 처리 - 외부 API 장애 시 재시도 로직 및 폴백 메커니즘 구현 - API 호출 실패 이력 로깅 및 모니터링 체계 구축 - 타임아웃 설정을 통한 시스템 안정성 확보 |
| 사용기술 및 개발환경 |
Backend - Java <17.x.x> - Spring Boot <3.5.7> - Spring Security <6.3.x> + JWT <0.11.5> 인증 - JPA <3.2.x> / MyBatis <3.0.5> 혼합 사용 - REST API 기반 설계 - Lombok <1.18.34> Frontend - React <^19.1.1> (Vite <^7.1.7>) - Axios <^1.13.2>, React Router <^7.9.5> - CSS Module Database - Oracle XE 21c ("Oracle Database 18c Express Edition Release 18.0.0.0.0 Production Version 18.4.0.0.0") - SQL Developer DevOps / Tools - GitHub - ERDCloud - Maven - IntelliJ IDEA / VS Code (IDE) Open API - KAMIS 농식품 가격 API - 식품의약품안전처 위해식품/리콜 정보 API - Google Gemini AI API |
|
|




③ 제1항에 따른 권리 행사는 정보주체의 법정대리인이나 위임을 받은 자 등 대리인을 통하여 하실 수 있습니다. 이 경우 개인정보보호법 시행규칙 별지 제11호 서식에 따른 위임장을 제출하셔야 합니다.
④ 개인정보 열람 및 처리정지 요구는 개인정보 보호법 제35조 제4항, 제37조 제2항에 의하여 정보주체의 권리가 제한 될 수 있습니다.
⑤ 개인정보의 정정 및 삭제 요구는 다른 법령에서 그 개인정보가 수집 대상으로 명시되어 있는 경우에는 그 삭제를 요구할 수 없습니다.
⑥ KH정보교육원은 정보주체 권리에 따른 열람의 요구, 정정·삭제의 요구, 처리정지의 요구 시 열람 등 요구를 한 자가 본인이거나 정당한 대리인인지를 확인합니다.