kt-event-marketing/test/API-TEST-RESULT.md
merrycoral 8ff79ca1ab 테스트 결과 파일들을 test/ 폴더로 이동
- API-TEST-RESULT.md → test/
- content-service-integration-analysis.md → test/
- content-service-integration-test-results.md → test/
- test-kafka-integration-results.md → test/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 01:40:21 +09:00

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, 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:
{
  "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 호출 코드 없음

권장 수정 사항:

// 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 호출로 교체하는 것입니다.