너는 시니어 풀스택 개발자이다.
다음 조건에 맞는 Spring Boot + React 기반 AI 서비스 프로젝트를 생성해줘.
[프로젝트 목표]
학생/사용자가 웹에서 질문을 입력하면 AI가 답변을 제공하고,
대화 기록을 저장하며, 로그인한 사용자별로 자신의 대화 내역을 조회할 수 있는 AI 서비스 웹 애플리케이션을 만든다.
[백엔드 요구사항]
- Spring Boot 기반
- Java 21 사용
- 빌드 도구는 Gradle 또는 Maven
- 패키지 구조는 controller / service / repository / entity / dto / config / security 로 분리
- DB는 MySQL 사용
- Spring Data JPA 사용
- Spring Security + JWT 로그인 구현
- 회원가입, 로그인, 사용자 정보 조회 API 구현
- AI 채팅 요청 API 구현
- 채팅 내역 저장 API 구현
- 사용자별 채팅 목록 조회 API 구현
- 공통 응답 형식 사용
- 예외 처리 글로벌 핸들러 구현
- Swagger/OpenAPI 설정
- application.yml 예시 포함
- 환경변수 방식으로 API Key 관리
- AI 연동 서비스는 추후 OpenAI/Ollama 교체 가능하도록 인터페이스 분리
[프론트엔드 요구사항]
- React + Vite 사용
- Tailwind CSS 사용
- 페이지 구성:
1. 로그인 페이지
2. 회원가입 페이지
3. 메인 대시보드 페이지
4. AI 채팅 페이지
5. 내 채팅 기록 페이지
- 상태관리는 Zustand 사용
- API 통신은 Axios 사용
- JWT 토큰은 안전하게 저장 및 관리
- 공통 레이아웃과 네비게이션바 구성
- 깔끔하고 현대적인 UI
- 한국어 UI 텍스트 사용
[AI 기능 요구사항]
- 사용자가 질문을 입력하면 백엔드가 AI 응답을 생성
- 질문과 답변을 DB에 저장
- 추후 요약, 피드백, 감정분석 기능을 확장할 수 있도록 설계
- AI 서비스 계층은 provider 교체 가능 구조로 작성
[출력 요구사항]
- 전체 프로젝트 폴더 구조를 먼저 제시
- 그 다음 백엔드 파일들을 순서대로 생성
- 그 다음 프론트엔드 파일들을 순서대로 생성
- 각 파일 경로를 명확히 표시
- 실행 방법도 마지막에 정리
- 코드 주석은 한글로 작성
- 설명은 한국어로 작성
- 한 번에 모든 파일을 다 길게 쓰지 말고, 우선 핵심 구조와 필수 파일부터 생성
- 이후 내가 "계속"이라고 하면 다음 파일들을 이어서 생성