# API 연동 테스트 결과 보고서 **테스트 일시**: 2025-10-29 **테스트 대상**: 프론트엔드(localhost:3000)와 event-service(localhost:8080) API 연동 --- ## ✅ 테스트 결과 요약 ### 1. 서비스 실행 상태 - **프론트엔드**: ✅ Next.js 서버 (port 3000) 정상 실행 - **백엔드**: ✅ Event-service (port 8080) 정상 실행 - **데이터베이스**: ✅ PostgreSQL 연결 정상 (헬스체크 통과) ### 2. API 연동 테스트 #### 2.1 백엔드 API 직접 호출 테스트 **테스트 명령어**: ```bash curl -X GET "http://localhost:8080/api/v1/events?page=0&size=20" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" ``` **결과**: ✅ **성공** - 응답 코드: 200 OK - 조회된 이벤트: 8개 - 응답 형식: JSON (표준 API 응답 포맷) - 페이지네이션: 정상 작동 **샘플 응답 데이터**: ```json { "success": true, "data": { "content": [ { "eventId": "2a91c77c-9276-49d3-94d5-0ab8f0b3d343", "userId": "11111111-1111-1111-1111-111111111111", "storeId": "22222222-2222-2222-2222-222222222222", "objective": "awareness", "status": "DRAFT", "createdAt": "2025-10-29T11:08:38.556326" } // ... 7개 더 ], "page": 0, "size": 20, "totalElements": 8, "totalPages": 1 } } ``` #### 2.2 인증 테스트 **JWT 토큰**: ✅ 정상 작동 - 토큰 생성 스크립트: `generate-test-token.py` - 유효 기간: 365일 (테스트용) - 알고리즘: HS256 - Secret: 백엔드와 일치 #### 2.3 프론트엔드 설정 **환경 변수 파일**: `.env.local` 생성 완료 ```env NEXT_PUBLIC_API_BASE_URL=http://localhost:8081 NEXT_PUBLIC_EVENT_HOST=http://localhost:8080 NEXT_PUBLIC_API_VERSION=v1 ``` **현재 상태**: ⚠️ **Mock 데이터 사용 중** - 파일: `src/app/(main)/events/page.tsx` - 이벤트 목록 페이지가 하드코딩된 Mock 데이터 표시 - 실제 API 연동 코드 미구현 상태 --- ## 📊 API 엔드포인트 정보 ### Event Service (localhost:8080) #### 1. 이벤트 목록 조회 - **URL**: `GET /api/v1/events` - **인증**: Bearer Token 필수 - **파라미터**: - `status`: EventStatus (optional) - DRAFT, PUBLISHED, ENDED - `search`: String (optional) - 검색어 - `objective`: String (optional) - 목적 필터 - `page`: int (default: 0) - `size`: int (default: 20) - `sort`: String (default: createdAt) - `order`: String (default: desc) #### 2. 이벤트 상세 조회 - **URL**: `GET /api/v1/events/{eventId}` - **인증**: Bearer Token 필수 #### 3. 이벤트 생성 (목적 선택) - **URL**: `POST /api/v1/events/objectives` - **인증**: Bearer Token 필수 - **Request Body**: ```json { "objective": "CUSTOMER_ACQUISITION" } ``` #### 4. 추가 엔드포인트 - `DELETE /api/v1/events/{eventId}` - 이벤트 삭제 - `POST /api/v1/events/{eventId}/publish` - 이벤트 배포 - `POST /api/v1/events/{eventId}/end` - 이벤트 종료 - `POST /api/v1/events/{eventId}/ai-recommendations` - AI 추천 요청 - `POST /api/v1/events/{eventId}/images` - 이미지 생성 요청 - `PUT /api/v1/events/{eventId}` - 이벤트 수정 --- ## 🔍 발견 사항 ### ✅ 정상 작동 항목 1. **백엔드 서비스** - Event-service 정상 실행 (port 8080) - PostgreSQL 데이터베이스 연결 정상 - API 엔드포인트 정상 응답 - JWT 인증 시스템 작동 2. **프론트엔드 서비스** - Next.js 개발 서버 정상 실행 (port 3000) - 페이지 렌더링 정상 - 환경 변수 설정 완료 ### ⚠️ 개선 필요 항목 #### 1. 프론트엔드 API 연동 미구현 **현재 상태**: - `src/app/(main)/events/page.tsx` 파일이 Mock 데이터 사용 - 실제 API 호출 코드 없음 **권장 수정 사항**: ```typescript // src/entities/event/api/eventApi.ts (신규 생성 필요) import { apiClient } from '@/shared/api'; export const eventApi = { getEvents: async (params) => { const response = await apiClient.get('/api/v1/events', { params }); return response.data; }, // ... 기타 메서드 }; ``` #### 2. API 클라이언트 설정 개선 **현재**: - `apiClient` 기본 URL이 user-service(8081)를 가리킴 - Event API는 별도 서비스(8080) **개선 방안**: ```typescript // 서비스별 클라이언트 분리 또는 // NEXT_PUBLIC_EVENT_HOST 환경 변수 활용 const eventApiClient = axios.create({ baseURL: process.env.NEXT_PUBLIC_EVENT_HOST || 'http://localhost:8080', // ... }); ``` --- ## 📝 테스트 체크리스트 ### 완료된 항목 ✅ - [x] 백엔드 서비스 실행 상태 확인 - [x] 프론트엔드 서비스 실행 상태 확인 - [x] Event Service API 직접 호출 테스트 - [x] JWT 인증 토큰 생성 및 테스트 - [x] 환경 변수 설정 (`.env.local`) - [x] API 응답 형식 확인 - [x] 페이지네이션 동작 확인 - [x] 데이터베이스 연결 확인 ### 추가 작업 필요 ⏳ - [ ] 프론트엔드 API 연동 코드 작성 - [ ] Event API 클라이언트 구현 - [ ] React Query 또는 SWR 통합 - [ ] 에러 핸들링 구현 - [ ] 로딩 상태 UI 구현 - [ ] 실제 데이터 렌더링 테스트 - [ ] E2E 테스트 작성 --- ## 🎯 다음 단계 권장사항 ### 1단계: Event API 클라이언트 작성 ```bash # 파일 생성 src/entities/event/api/eventApi.ts src/entities/event/model/types.ts ``` ### 2단계: React Query 설정 ```bash # useEvents 훅 작성 src/entities/event/model/useEvents.ts ``` ### 3단계: 페이지 수정 ```bash # Mock 데이터를 실제 API 호출로 교체 src/app/(main)/events/page.tsx ``` ### 4단계: 통합 테스트 - 브라우저에서 실제 데이터 렌더링 확인 - 필터링 및 검색 기능 테스트 - 페이지네이션 동작 확인 --- ## 📌 참고 정보 ### 테스트 토큰 정보 - User ID: `6db043d0-b303-4577-b9dd-6d366cc59fa0` - Store ID: `34000028-01fd-4ed1-975c-35f7c88b6547` - Email: `test@example.com` - 유효 기간: 2026-10-29까지 ### 서비스 포트 매핑 | 서비스 | 포트 | 상태 | |--------|------|------| | 프론트엔드 | 3000 | ✅ Running | | User Service | 8081 | ⚠️ 미확인 | | Event Service | 8080 | ✅ Running | | Content Service | 8082 | ⚠️ 미확인 | | AI Service | 8083 | ⚠️ 미확인 | | Participation Service | 8084 | ⚠️ 미확인 | --- ## ✨ 결론 **백엔드 API는 정상적으로 작동하고 있으며, 프론트엔드와의 연동을 위한 환경은 준비되었습니다.** 다음 작업은 프론트엔드에서 Mock 데이터를 실제 API 호출로 교체하는 것입니다.