Project/개인 Project

[Project] 개인 DB + ChatGPT 기능의 수정 및 확장 기록

강_토발즈 2025. 7. 21. 22:58

 

 

 

1. 기존 목표

운동과 식단을 꾸준히 기록하고, 이를 바탕으로 GPT가 내 상태를 분석해주도록 하고 싶었다. 핵심은 하루의 기록을 구조화된 데이터로 안전하게 저장하고, GPT가 읽을 수 있게 만드는 것이었다.

 

2. 운동 기록 구조 개선

기존 DB 테이블

 

기존에는 하나의 테이블에 날짜, 운동명, 세트 수, 무게, 반복수 등을 모두 넣고 있었는데, 이 방식으로는 세트별 상세 기록이 불가능했고 운동별 분석이 어려웠다. 그래서 다음처럼 설계 구조를 개선했다:

  • workout_sessions: 운동 날짜, 부위, 최대 중량, 총 볼륨 등 한 번의 운동 요약
  • workout_sets: 각 세트별 중량, 횟수, 휴식 시간 등 상세 기록 (최대 10세트 이상도 가능)

장점:

  • GPT가 세트별 피로도나 무게 증가 패턴까지 분석 가능
  • JSON 구조로 쉽게 가공되어 응답할 수 있음

변경된 운동 테이블

 

각 세션별로 id 가 부여되고 그 아이디에 맞게 중량과 횟수를 기록

 

3. 식사 기록 기능 추가

 

하루의 식사도 구조적으로 기록하고 싶었다.

 

예를 들어:

아침: 블루베리 50g, 요거트 50g, 단백질쉐이크 2스쿱,   점심: 와퍼주니어,   저녁: 감자 150g, 삶은 계란 3개
 

이런 식의 기록을 자동으로 정리해주려면, 다음과 같은 DB 구조가 필요했다

 

  • meals: 날짜 + 식사 시간대(아침, 점심 등)
  • meal_items: 각 식사에 포함된 음식 이름, 중량(g), 단위(1개, 1스쿱 등)
  • nutrition_info (계획 중): GPT가 자동으로 칼로리/단백질 등을 계산해 채워넣는 테이블

4. FastAPI 기반 REST API 구축

각 테이블에 맞게 다음 API를 만들었다

POST /workout/save 운동 세션 + 세트를 함께 저장
GET /workout/latest 최근 운동 기록 조회
POST /meal/save 하루 식사와 음식 항목을 저장
GET /meal/latest 최근 식사 기록을 불러오기
 

모든 API는 GPT와 연결 가능한 형태로 OpenAPI 스펙을 작성해서 등록했고, 실제로 ChatGPT GPTs 도구에서 호출이 가능하게 구성했다.


5. 다음 목표

다음에는 저장된 운동/식사 기록을 수정할 수 있는 API를 추가할 계획이다.

예:

  • 운동 세트 중 3세트의 중량을 잘못 넣었을 때 수정
  • 저녁에 먹은 음식 중 ‘삶은 계란’을 삭제하거나 바꾸고 싶을 때

이렇게 GPT가 내 기록을 분석하는 데 오류가 없도록 유지하려는 게 최종 목표다.

 

6. 마무리

이제 내 하루의 루틴은 내가 직접 만든 API로 기록된다. 운동, 식사, 컨디션을 모두 데이터로 남기고, 그 데이터를 바탕으로 GPT가 나에게 말 걸어줄 수 있다는 건 내가 AI 를 지배하는걸까?  AI 가 나를 지배하는 걸까?
햇갈리기 시작하지만 그래도 생각해본 것을 실제로 만들어보는 것이 재미 있으니 마무리를 잘 지어보도록 하자!