release: 2026-04-08 (16건 커밋) #19

병합
HYOJIN develop 에서 main 로 16 commits 를 머지했습니다 2026-04-08 13:50:09 +09:00
소유자

[2026-04-08]

추가

  • JPA Entity 9개 + Repository, JWT 인증, 프론트엔드 메인 레이아웃/로그인 (#6)
  • 테넌트/사용자/서비스 CRUD API + 하트비트 스케줄러 (#7)
  • API Key AES-256-GCM 암호화, 신청→승인 워크플로우, Permission 관리 (#8)
  • API Gateway 프록시, API Key 인증 필터, 비동기 요청 로깅 (#9)
  • 대시보드 통계 (Recharts 차트 6개, 요약 카드, 30초 자동 갱신) (#10)
  • Service Status 페이지 (90일 일별 uptime, status.claude.com 스타일) (#10)
  • 테넌트별 요청/사용자 비율 통계 (#10)
  • 프론트엔드: 관리 페이지, API Key 관리, 요청 로그 검색/상세 (#7~#10)

137 files changed, 10,345 insertions

## [2026-04-08] ### 추가 - JPA Entity 9개 + Repository, JWT 인증, 프론트엔드 메인 레이아웃/로그인 (#6) - 테넌트/사용자/서비스 CRUD API + 하트비트 스케줄러 (#7) - API Key AES-256-GCM 암호화, 신청→승인 워크플로우, Permission 관리 (#8) - API Gateway 프록시, API Key 인증 필터, 비동기 요청 로깅 (#9) - 대시보드 통계 (Recharts 차트 6개, 요약 카드, 30초 자동 갱신) (#10) - Service Status 페이지 (90일 일별 uptime, status.claude.com 스타일) (#10) - 테넌트별 요청/사용자 비율 통계 (#10) - 프론트엔드: 관리 페이지, API Key 관리, 요청 로그 검색/상세 (#7~#10) 137 files changed, 10,345 insertions
HYOJIN added 16 commits 2026-04-08 13:50:08 +09:00
백엔드:
- JPA Entity 9개 + Repository 9개 (common 스키마)
- JWT 인증 (jjwt, Access/Refresh 토큰)
- AuthController (login/logout/refresh)
- 공통 모듈 (BaseEntity, ErrorCode, BusinessException, PageResponse)
- SecurityConfig JWT 필터 체인 통합

프론트엔드:
- MainLayout (사이드바 + 헤더) + AuthLayout
- 로그인 페이지 + ProtectedRoute
- API 클라이언트 (fetch wrapper, JWT 자동 첨부, 401 refresh)
- AuthContext + useAuth 훅
- 9개 플레이스홀더 페이지 + 라우팅

설정:
- DB: snp_connection / snp_admin / common 스키마
- ddl-auto: update (개발), validate (운영)

Closes #6

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
백엔드:
- 테넌트 CRUD API (GET/POST/PUT /api/tenants)
- 사용자 CRUD API (GET/POST/PUT/DELETE /api/users, 역할 기반 접근 제어)
- 서비스 등록/관리 API (GET/POST/PUT /api/services, /api/services/{id}/apis)
- 하트비트 스케줄러 (30초 간격 폴링, WebClient 헬스체크)
- 헬스체크 상태 조회/이력 API (GET/POST /api/heartbeat)
- @EnableMethodSecurity + @PreAuthorize 역할 기반 접근 제어
- WebClientConfig, ErrorCode 7개 추가

프론트엔드:
- 테넌트 관리 페이지 (CRUD 테이블 + 모달)
- 사용자 관리 페이지 (역할 드롭다운, 테넌트 선택)
- 서비스 관리 페이지 (헬스 배지, API 목록 탭)
- API 서비스 모듈 4개 (tenant, user, service, heartbeat)

Closes #7

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
백엔드:
- AES-256-GCM 암호화 (ApiKey 생성/복호화 조회)
- API Key 직접 생성 (ADMIN) + 신청→승인/반려 워크플로우
- 신청 필드 추가 (사용기간, 서비스IP, 서비스용도, 예상요청량)
- Permission CRUD (bulk delete+recreate, @Modifying JPQL)
- API Key 폐기, expires_at 자동 설정
- ErrorCode 5개 추가

프론트엔드:
- MyKeysPage: 키 목록, 상태 배지, 폐기, raw key 모달
- KeyRequestPage: 기간 프리셋/직접선택 토글, 서비스IP, 용도, 예상요청량, API 체크박스
- KeyAdminPage: 신청 검토(필드 노출+기간 조정) + 키 관리(복호화 조회, 권한 편집)

Closes #8

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
백엔드:
- GatewayController (ANY /gateway/{serviceCode}/**)
- GatewayService (API Key prefix 매칭 + AES 복호화, 권한 확인, WebClient 프록시)
- AsyncConfig + RequestLogService (@Async 비동기 로깅)
- RequestLogController (검색 + 상세 API, JPA Specification)
- request_url을 gateway 경로로 통일 저장
- tenant_id 로그 기록 추가
- ErrorCode 6개 (GW001-GW006)

프론트엔드:
- RequestLogsPage (검색 폼 + 결과 테이블 + 페이지네이션)
- RequestLogDetailPage (요청/응답 상세)
- 날짜 검색 LocalDate 변환 수정

Closes #9

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
백엔드:
- DashboardService/Controller (요약, 시간별/서비스별/테넌트별 통계, 에러율, 상위API, 최근로그)
- 헬스체크 1분 간격, 매 체크마다 로그 기록 (status page용)
- ServiceStatusDetail API (90일 일별 uptime, 최근 체크 60건)
- 통계 쿼리 최적화 인덱스 추가
- 테넌트별 요청/사용자 비율 API
- 상위 API에 serviceName + apiName 표시

프론트엔드:
- DashboardPage (요약 카드 4개, 하트비트 바, Recharts 차트 4개, 테넌트 차트 2개, 최근 로그 5건+더보기)
- ServiceStatusPage (status.claude.com 스타일, 90일 uptime 바, Overall banner)
- ServiceStatusDetailPage (서비스별 상세, 일별 uptime 바+툴팁, 최근 체크 테이블, 색상 범례)
- 30초 자동 갱신 (대시보드), 60초 자동 갱신 (status)
- Request Logs 배지 색상 대시보드와 통일

Closes #10

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
claude-bot 이 변경사항을 승인하였습니다. 2026-04-08 13:50:08 +09:00
claude-bot left a comment
멤버

릴리즈 승인 (via /release skill)

릴리즈 승인 (via /release skill)
HYOJIN merged commit 4d07ac1663 into main 2026-04-08 13:50:09 +09:00
"로그인하여 이 대화에 참여"
No reviewers
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
기한이 올바르지 않거나 범위를 벗어났습니다. 'yyyy-mm-dd'형식을 사용해주십시오.

마감일이 설정되지 않았습니다.

의존성

No dependencies set.

Reference: gc/snp-connection-monitoring#19
No description provided.