mirror of
https://github.com/ktds-dg0501/kt-event-marketing.git
synced 2025-12-06 14:06:23 +00:00
🔧 Backend 변경사항: - Event 엔티티에 participants, targetParticipants, roi 필드 추가 - EventDetailResponse DTO 및 EventService 매퍼 업데이트 - ROI 자동 계산 비즈니스 로직 구현 - SecurityConfig CORS 설정 추가 (localhost:3000 허용) 🎨 Frontend 변경사항: - TypeScript EventDetail 타입 정의 업데이트 - Events 페이지 실제 API 데이터 연동 (Mock 데이터 제거) - 참여자 수 및 ROI 기반 통계 계산 로직 개선 📝 문서: - Event 필드 추가 및 API 통합 테스트 결과서 작성 ✅ 테스트 완료: - Backend API 응답 검증 - CORS 설정 검증 - Frontend-Backend 통합 테스트 성공 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
6.6 KiB
6.6 KiB
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 직접 호출 테스트
테스트 명령어:
curl -X GET "http://localhost:8080/api/v1/events?page=0&size=20" \
-H "Authorization: Bearer <JWT_TOKEN>" \
-H "Content-Type: application/json"
결과: ✅ 성공
- 응답 코드: 200 OK
- 조회된 이벤트: 8개
- 응답 형식: JSON (표준 API 응답 포맷)
- 페이지네이션: 정상 작동
샘플 응답 데이터:
{
"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 생성 완료
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, ENDEDsearch: 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:
{
"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}- 이벤트 수정
🔍 발견 사항
✅ 정상 작동 항목
-
백엔드 서비스
- Event-service 정상 실행 (port 8080)
- PostgreSQL 데이터베이스 연결 정상
- API 엔드포인트 정상 응답
- JWT 인증 시스템 작동
-
프론트엔드 서비스
- Next.js 개발 서버 정상 실행 (port 3000)
- 페이지 렌더링 정상
- 환경 변수 설정 완료
⚠️ 개선 필요 항목
1. 프론트엔드 API 연동 미구현
현재 상태:
src/app/(main)/events/page.tsx파일이 Mock 데이터 사용- 실제 API 호출 코드 없음
권장 수정 사항:
// 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)
개선 방안:
// 서비스별 클라이언트 분리 또는
// NEXT_PUBLIC_EVENT_HOST 환경 변수 활용
const eventApiClient = axios.create({
baseURL: process.env.NEXT_PUBLIC_EVENT_HOST || 'http://localhost:8080',
// ...
});
📝 테스트 체크리스트
완료된 항목 ✅
- 백엔드 서비스 실행 상태 확인
- 프론트엔드 서비스 실행 상태 확인
- Event Service API 직접 호출 테스트
- JWT 인증 토큰 생성 및 테스트
- 환경 변수 설정 (
.env.local) - API 응답 형식 확인
- 페이지네이션 동작 확인
- 데이터베이스 연결 확인
추가 작업 필요 ⏳
- 프론트엔드 API 연동 코드 작성
- Event API 클라이언트 구현
- React Query 또는 SWR 통합
- 에러 핸들링 구현
- 로딩 상태 UI 구현
- 실제 데이터 렌더링 테스트
- E2E 테스트 작성
🎯 다음 단계 권장사항
1단계: Event API 클라이언트 작성
# 파일 생성
src/entities/event/api/eventApi.ts
src/entities/event/model/types.ts
2단계: React Query 설정
# useEvents 훅 작성
src/entities/event/model/useEvents.ts
3단계: 페이지 수정
# 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 호출로 교체하는 것입니다.