Skip to content

DungeonTalk/Python-Spring

Repository files navigation

Python Spring Boot 연동 서버

던전톡 Python AI 서버와 Spring Boot 백엔드를 연동하는 프로젝트입니다.

📋 프로젝트 개요

아키텍처:

사용자 → Spring Boot (8080) → Python FastAPI (8000) → AI 응답
                            ↓
                       세션 관리

역할 분담:

  • Spring Boot: 사용자 인증, 세션 관리, 비즈니스 로직, REST API 제공
  • Python FastAPI: AI/RAG 처리, 문서 검색, 응답 생성

🚀 빠른 시작

1. 환경 요구사항

  • Java 21
  • Gradle 8.0+
  • Python FastAPI 서버 (포트 8000에서 실행)

2. 서버 실행

# Spring Boot 서버 시작
./gradlew bootRun

# 서버는 http://localhost:8080 에서 실행됩니다

3. Python AI 서버 준비

Python AI 서버가 포트 8000에서 실행 중이어야 합니다.

# Python 서버 실행 (별도 터미널)
python main.py

🎯 API 엔드포인트

RAG 채팅 (기존 기능)

POST /api/chat
Content-Type: application/json

{
  "message": "안녕하세요"
}

응답:

{
  "response": "안녕하세요! 무엇을 도와드릴까요?",
  "timestamp": 1754402962783,
  "sessionId": "rag_SESSION123"
}

TRPG 던전톡 게임

1. 새 게임 세션 생성

POST /api/trpg/sessions/new

응답:

{
  "sessionId": "room_abc12345",
  "userName": "플레이어1234",
  "message": "새로운 게임 세션이 생성되었습니다."
}

2. TRPG 채팅

POST /api/trpg/chat
Content-Type: application/json

{
  "message": "던전에 들어갑니다"
}

응답:

{
  "response": "어둠 속에서 횃불의 빛이 흔들리며...",
  "sources": ["던전_가이드.txt", "몬스터_도감.txt"],
  "sessionId": "room_abc12345"
}

3. 게임 세션 참가

POST /api/trpg/sessions/{sessionId}/join?userName=플레이어이름

4. 세션 정보 조회

GET /api/trpg/sessions/{sessionId}/info

5. 서버 상태 확인

GET /api/trpg/health

응답:

{
  "spring": "healthy",
  "dungeontalk_ai": "healthy",
  "timestamp": 1754402962783
}

🏗️ 프로젝트 구조

src/main/java/com/pythonspring/
├── PythonSpringApplication.java       # 메인 애플리케이션
├── controller/
│   ├── ChatController.java            # RAG 채팅 API
│   └── TRPGController.java            # TRPG 게임 API
├── service/
│   ├── RagService.java                # RAG 서비스
│   ├── DungeonTalkAIService.java      # 던전톡 AI 서비스
│   └── SessionService.java            # 세션 관리 서비스
└── dto/
    ├── ChatRequest.java               # 채팅 요청 DTO
    └── ChatResponse.java              # 채팅 응답 DTO

⚙️ 설정

application.properties

# 서버 포트
server.port=8080

# RAG 서비스 설정 (Python AI 서버)
rag.service.url=http://localhost:8000
rag.service.timeout=30000

# 던전톡 AI 서비스 설정
dungeontalk.ai.base-url=http://localhost:8000
dungeontalk.ai.timeout=30s

# HTTP 클라이언트 설정
http.client.connection.timeout=5000
http.client.read.timeout=60000

🔧 기술 스택

Backend

  • Spring Boot 3.4.0: 웹 프레임워크
  • Spring WebFlux: 비동기 HTTP 클라이언트
  • Java 21: 프로그래밍 언어
  • Gradle: 빌드 도구

통신

  • WebClient: Python 서버와의 비동기 통신
  • RestTemplate: 기존 RAG 서비스와의 통신
  • HTTP Session: 사용자 세션 관리

🎮 주요 기능

1. 세션 기반 멀티플레이어

  • TRPG 게임: room_XXXXXXXX 형태의 게임방
  • RAG 채팅: rag_XXXXXXXX 형태의 개인 세션
  • HTTP 세션을 통한 자동 사용자 식별

2. 통합 채팅 시스템

  • 모든 채팅이 동일한 Python /chat 엔드포인트 사용
  • 세션 ID와 사용자명을 자동으로 포함하여 전송
  • API 스펙 통일로 422 에러 해결

3. 비동기 처리

  • WebClient 기반 논블로킹 I/O
  • Reactive Streams를 활용한 응답성 향상
  • 60초 타임아웃으로 AI 응답 대기

4. 에러 처리 및 모니터링

  • 상세한 로깅 및 에러 메시지
  • 서버 헬스체크 기능
  • 사용자 친화적인 오류 응답

🧪 테스트

cURL을 사용한 테스트

# RAG 채팅 테스트
curl -X POST http://localhost:8080/api/chat \
  -H "Content-Type: application/json" \
  -d '{"message":"안녕하세요"}'

# 새 TRPG 게임 시작
curl -X POST http://localhost:8080/api/trpg/sessions/new

# TRPG 채팅 테스트
curl -X POST http://localhost:8080/api/trpg/chat \
  -H "Content-Type: application/json" \
  -d '{"message":"던전에 들어갑니다"}'

# 서버 상태 확인
curl -X GET http://localhost:8080/api/trpg/health

🔗 관련 프로젝트

  • Python AI 서버: 던전톡 TRPG AI 및 RAG 엔진
  • 프론트엔드: 웹 기반 TRPG 게임 인터페이스

📝 개발 노트

세션 ID 구분

  • RAG: rag_ + HTTP 세션 ID
  • TRPG: room_ + 8자리 UUID

API 통합 과정

  1. 기존 RAG는 단순 메시지만 전송
  2. TRPG는 세션 정보 포함 필요
  3. 해결: 모든 API가 세션 정보를 포함하도록 통일

성능 최적화

  • WebClient로 비동기 처리
  • 60초 타임아웃으로 AI 응답 대기
  • Connection pooling 적용

📂 Git 리포지토리 연결

원격 리포지토리 설정

# 원격 리포지토리 추가
git remote add origin https://github.com/DungeonTalk/Python-Spring.git

# 원격 리포지토리 확인
git remote -v

# 첫 푸시 (업스트림 설정)
git push -u origin main

기존 프로젝트를 GitHub에 연결하는 방법

  1. GitHub에서 새 리포지토리 생성 (README, .gitignore, 라이선스 없이)
  2. 로컬에서 Git 초기화 (이미 완료됨)
  3. 원격 리포지토리 연결:
    git remote add origin https://github.com/DungeonTalk/Python-Spring.git
  4. 첫 커밋 및 푸시:
    git add .
    git commit -m "feat: 초기 TRPG 챗봇 시스템 구현"
    git push -u origin main

일반적인 Git 워크플로우

# 변경사항 스테이징
git add .

# 커밋 (한국어 메시지 사용)
git commit -m "feat: 새로운 기능 추가"

# 원격 리포지토리에 푸시
git push origin main

🤝 기여하기

  1. 이슈 확인 및 생성
  2. feature 브랜치 생성
  3. 변경사항 구현
  4. 테스트 수행
  5. Pull Request 생성

📄 라이선스

이 프로젝트는 MIT 라이선스 하에 있습니다.

About

Python-Spring 연결 예시

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •