Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Diary

일기 작성 및 LLM 기반 AI 답변 기능을 제공하는 풀스택 애플리케이션입니다.

화면

일기 목록 화면

일기 목록을 확인하고 검색할 수 있는 메인 화면입니다.

일기 상세 화면

일기 상세 화면

개별 일기를 조회하고, AI 답변을 확인하거나 수정/삭제할 수 있는 화면입니다.

일기 목록 화면

프로젝트 구조

CursorDiary/
├── backend/          # Spring Boot 백엔드
│   ├── src/         # 소스 코드
│   ├── build.gradle # Gradle 빌드 설정
│   └── ...
├── frontend/        # React 프론트엔드 (예정)
└── readme.md        # 프로젝트 문서

실행 방법

백엔드 실행

cd backend
./gradlew bootRun

백엔드는 기본적으로 http://localhost:8080에서 실행됩니다.

프론트엔드 실행

cd frontend
npm install
npm run dev

프론트엔드는 기본적으로 http://localhost:3000에서 실행됩니다.


공통 모델

  • DiaryResponse
    • id (number, long): 일기 ID
    • title (string, max 255): 제목
    • content (string): 본문
    • createdAt (string, datetime): 생성 시각
    • aiReply (string|null): AI 답변 (없을 수 있음)

1) 일기 생성

  • POST /api/diaries
  • Request Body (DiaryRequest)
    • title (string, required, max 255)
    • content (string, required)
  • Response: 200 OK, body = DiaryResponse (AI 답변은 개발 환경에서 스텁 메시지로 채워짐)
  • 에러: 400 (검증 실패)

2) 단일 조회

  • GET /api/diaries/{id}
  • Path: id (long)
  • Response: 200 OK, body = DiaryResponse
  • 에러: 404 (존재하지 않는 ID)

3) 수정

  • PUT /api/diaries/{id}
  • Path: id (long)
  • Request Body (DiaryRequest)
    • title (string, required, max 255)
    • content (string, required)
  • Response: 200 OK, body = DiaryResponse
  • 에러: 404 (존재하지 않는 ID), 400 (검증 실패)

4) AI 답변 수동 덮어쓰기

  • PATCH /api/diaries/{id}/ai-reply
  • Path: id (long)
  • Request Body (AiReplyRequest)
    • aiReply (string, required)
  • Response: 200 OK, body = DiaryResponse
  • 에러: 404 (존재하지 않는 ID), 400 (검증 실패)

5) AI 답변 자동 생성/재생성

  • POST /api/diaries/{id}/ai-reply/generate
  • Path: id (long)
  • Response: 200 OK, body = DiaryResponse (개발 환경에서는 스텁 메시지로 생성)
  • 에러:
    • 404 (존재하지 않는 ID)
    • 400 (본문이 비어 있어 생성 불가)

6) 검색

  • GET /api/diaries/search?query={text}
  • Query: query (string, required)
  • Response: 200 OK, body = DiaryResponse 배열
  • 에러: 200 이외 오류 없음 (검색 결과가 없으면 빈 배열)

7) 삭제

  • DELETE /api/diaries/{id}
  • Path: id (long)
  • Response: 204 No Content
  • 에러: 404 (존재하지 않는 ID)

참고 (AI 연동)

  • 서비스 코드에 OpenAI 연동 주석이 포함되어 있으며, 현재는 개발 스텁 메시지를 반환하도록 설정되어 있음.(비용 문제)

샘플 cURL

# 생성
curl -X POST http://localhost:8080/api/diaries \
  -H "Content-Type: application/json" \
  -d '{"title":"오늘","content":"괜찮은 하루였다"}'

# 검색
curl "http://localhost:8080/api/diaries/search?query=하루"

About

LLM 기반 감정 분석과 공감형 응답을 제공하는 풀스택 일기 웹 서비스

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages