커밋 그래프

89 커밋

작성자 SHA1 메시지 날짜
daa5755619 Merge pull request 'feat(phase6): 안정화 - 파티셔닝 배치, 데이터 정리, 에러 핸들링 보완' (#25) from feature/ISSUE-11-phase6-stabilization into develop 2026-04-09 11:27:11 +09:00
21229d3389 docs: 릴리즈 노트 업데이트
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:26:34 +09:00
1aec67cee1 feat(phase6): 안정화 - 파티셔닝 배치, 데이터 정리, 에러 핸들링 보완
파티셔닝:
- PartitionService (JdbcTemplate DDL, 파티션 생성/삭제/목록)
- PartitionManageScheduler (매월 1일 00:00, 미래 파티션 생성 + 만료 파티션 DROP)
- partition_migration.sql (운영 DB 수동 실행용 마이그레이션 문서)
- snp_api_request_log 월별 Range 파티션 전환 완료

데이터 정리:
- DataCleanupScheduler (매일 02:00, health_log 90일 이전 DELETE)
- application.yml retention/partition 설정 추가

에러 핸들링:
- GlobalExceptionHandler: DataAccessException, IllegalArgumentException, HttpMessageNotReadableException 핸들러 추가

Closes #11

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:25:43 +09:00
126e632f5b Merge pull request 'feat(stats): 통계 메뉴 + 대시보드 피드백 반영' (#24) from feature/ISSUE-23-stats-menu into develop 2026-04-09 11:05:26 +09:00
2b6eee5341 docs: 릴리즈 노트 업데이트
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:04:58 +09:00
8ebac1fa54 feat(stats): 통계 메뉴 + 대시보드 피드백 반영
통계 메뉴 (5개 서브페이지):
- 서비스 통계 (요약카드+에러율비교+응답시간분포+시간별추이)
- 사용자 통계 (전체/API Key보유/API요청 사용자+역할분포+Top10)
- API 통계 (호출순위+에러순위+메서드분포+상태코드분포)
- 테넌트 통계 (요약카드+일별추이+API Key현황)
- 사용량 추이 (일별/주별/월별 탭, 요청수+성공률+응답시간+활성사용자)

대시보드 피드백:
- 요약카드 전일대비 소숫점 2자리
- 하트비트 카드형 (프로그레스바 제거, flex 균등분할)
- 테넌트 차트 제거
- 상위 API URL 쿼리파라미터 정규화 (SPLIT_PART)
- Gateway request_url 저장 시 쿼리스트링 제외
- "활성 사용자" → "API 요청 사용자" 라벨 변경

서비스 통계: 요약카드 flex 유동너비, 에러율+응답시간 차트 교체
사용자 통계: API Key 보유 사용자 카드 추가, flex 균등분할
API 통계: 타이틀 변경, 쿼리파라미터 제외 쿼리, 프로그레스바 분리
테넌트 통계: flex 균등분할, 빈 테넌트명 Unknown 처리

Closes #23

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 11:04:08 +09:00
a5d7c84df6 Merge pull request 'release: 2026-04-08.2 (5건 커밋)' (#22) from develop into main
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 50s
2026-04-08 16:58:23 +09:00
ed18b0b417 Merge pull request 'docs: 릴리즈 노트 정리 (2026-04-08.2)' (#21) from chore/release-notes-2026-04-08-2 into develop 2026-04-08 16:57:45 +09:00
0f706d8f41 docs: 릴리즈 노트 정리 (2026-04-08.2)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:57:13 +09:00
6f8816d333 Merge pull request 'feat(ui): 피드백 반영 - 다크모드, API Key UX, 레이아웃 개선' (#20) from feature/ISSUE-15-feedback into develop 2026-04-08 16:55:41 +09:00
0b1ddc0da5 docs: 릴리즈 노트 업데이트
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:55:15 +09:00
d4aa982e1a feat(ui): 피드백 반영 - 다크모드, API Key UX, 레이아웃 개선
공통:
- 다크/라이트 모드 (ThemeContext, Tailwind dark variant, 전체 페이지 적용)
- 사이드바 아이콘 링크체인 (#FF2E63), 헤더/사이드바 높이 통일
- 컨텐츠 영역 max-w-7xl 마진 통일 (대시보드 제외)
- 전체 Actions 버튼 bg-color-100 스타일 통일
- date input 달력 아이콘 다크모드 (filter invert)

API Keys:
- Request: 영구 사용 옵션 추가, 프리셋/영구 버튼 다크모드
- My Keys: ADMIN 직접 생성 제거 → Request 페이지 정식 폼으로 통일
- Admin: 키 관리 만료일 컬럼 추가, 권한 편집 제거 (승인 단계에서만 가능)

Gateway:
- API 경로 {변수} 패턴 매칭 지원

Closes #15

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:54:29 +09:00
4d07ac1663 Merge pull request 'release: 2026-04-08 (16건 커밋)' (#19) from develop into main
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 52s
2026-04-08 13:50:09 +09:00
18b08b7192 Merge pull request 'docs: 릴리즈 노트 정리 (2026-04-08)' (#18) from chore/release-notes-2026-04-08 into develop 2026-04-08 13:49:09 +09:00
145ddf20af docs: 릴리즈 노트 정리 (2026-04-08)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 13:48:43 +09:00
36c1f4a9ea Merge pull request 'feat(phase5): 대시보드 + 통계 + Service Status 페이지' (#17) from feature/ISSUE-10-phase5-dashboard into develop 2026-04-08 13:45:30 +09:00
cb615dae87 docs: 릴리즈 노트 업데이트
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 13:45:05 +09:00
c330be5a52 feat(phase5): 대시보드 + 통계 + Service Status 페이지
백엔드:
- 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>
2026-04-08 13:44:23 +09:00
b5a29bfdfd Merge pull request 'feat(phase4): API Gateway 프록시 + 요청 로깅' (#16) from feature/ISSUE-9-phase4-gateway-logging into develop 2026-04-08 11:21:37 +09:00
95922c5fa8 docs: 릴리즈 노트 업데이트
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 11:20:43 +09:00
071489ced6 feat(phase4): API Gateway 프록시 + 요청 로깅
백엔드:
- 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>
2026-04-08 11:20:08 +09:00
d0a3bc1a27 Merge pull request 'feat(phase3): API Key 관리 - 생성/발급/신청/승인/권한' (#14) from feature/ISSUE-8-phase3-apikey into develop 2026-04-08 10:14:08 +09:00
0431d10dfd docs: 릴리즈 노트 업데이트
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 10:13:19 +09:00
6f9923537e feat(phase3): API Key 관리 - 생성/발급/신청/승인/권한
백엔드:
- 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>
2026-04-08 10:12:36 +09:00
d4ccb1f4c6 Merge pull request 'feat(phase2): 핵심 관리 기능 CRUD + 하트비트 스케줄러' (#13) from feature/ISSUE-7-phase2-crud-heartbeat into develop 2026-04-07 17:06:39 +09:00
7884f0b4e9 docs: 릴리즈 노트 업데이트
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 17:05:58 +09:00
efa7a7bd07 feat(phase2): 핵심 관리 기능 CRUD + 하트비트 스케줄러
백엔드:
- 테넌트 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>
2026-04-07 17:04:32 +09:00
4955944478 Merge pull request 'feat(phase1): 기반 구축 - DB Entity, JWT 인증, 프론트엔드 레이아웃' (#12) from feature/ISSUE-6-phase1-foundation into develop 2026-04-07 13:55:04 +09:00
48671af3c5 feat(phase1): 기반 구축 - DB Entity, JWT 인증, 프론트엔드 레이아웃
백엔드:
- 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>
2026-04-07 13:52:25 +09:00
90d9205fca Merge pull request 'release: CI/CD 자동 배포 구성' (#5) from develop into main
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 46s
2026-04-07 11:30:33 +09:00
8842a07d20 Merge pull request 'ci: Gitea Actions 자동 배포 워크플로우 추가' (#4) from feature/ci-cd-deploy into develop 2026-04-07 11:30:32 +09:00
6b2197ef8e ci: Gitea Actions 자동 배포 워크플로우 추가
- main 브랜치 push 시 자동 빌드 + 배포
- Frontend (npm) + Backend (Maven) 분리 빌드
- frontend.skip 프로퍼티로 CI에서 frontend-maven-plugin 스킵 지원
- 배포 경로: /deploy/snp-connection/app.jar

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 11:28:39 +09:00
80ad0b309d Merge pull request 'chore: CLAUDE_BOT_TOKEN 환경변수 추가' (#3) from chore/add-claude-bot-token into develop 2026-04-07 11:10:42 +09:00
f90971f2df chore: CLAUDE_BOT_TOKEN 환경변수 추가
릴리즈 PR 자동 승인을 위한 claude-bot 토큰 설정

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 11:10:17 +09:00
4886a96344 Merge pull request 'release: 2026-04-07 (3건 커밋)' (#2) from develop into main 2026-04-07 11:06:17 +09:00
cb6acccd71 Merge pull request 'docs: 릴리즈 노트 정리 (2026-04-07)' (#1) from chore/release-notes-2026-04-07 into develop 2026-04-07 10:59:47 +09:00
f7d304dc18 docs: 릴리즈 노트 정리 (2026-04-07)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 10:59:19 +09:00
38d7ac5642 feat: 프론트엔드 통합 프로젝트 초기 구조 구성
- Spring Boot 3.2.1 백엔드 (com.gcsc.connection, 포트 8042, context /snp-connection)
- React 19 + TypeScript + Vite 7 + Tailwind CSS 4 프론트엔드
- frontend-maven-plugin 통합 빌드 설정
- 팀 워크플로우 v1.6.1 동기화

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 10:56:10 +09:00
gc
70dfeb019b Initial commit 2026-04-07 10:20:40 +09:00