통계 화면 추가

This commit is contained in:
daekuk1
2026-01-20 11:04:28 +09:00
parent e63b6aa828
commit 94f7bf8510
22 changed files with 1662 additions and 0 deletions
@@ -0,0 +1,102 @@
# API Gateway 통계 화면
## 개요
API Gateway의 분단위/시간별 처리 통계를 조회하는 관리 화면입니다.
## 파일 구조
```
com.eactive.ext.kjb.statistics/
├── ApiStatsMinuteController.java # 분단위 통계 Controller
├── ApiStatsMinuteService.java # 분단위 통계 Service
├── ApiStatsHourController.java # 시간별 통계 Controller
├── ApiStatsHourService.java # 시간별 통계 Service
├── entity/
│ ├── ApiStatsMinute.java # 분단위 통계 Entity
│ ├── ApiStatsMinuteId.java # 분단위 통계 복합키
│ ├── ApiStatsHour.java # 시간별 통계 Entity
│ └── ApiStatsHourId.java # 시간별 통계 복합키
├── repository/
│ ├── ApiStatsMinuteRepository.java
│ └── ApiStatsHourRepository.java
├── ui/
│ ├── ApiStatsUI.java # 통계 UI DTO
│ └── ApiStatsSearch.java # 검색조건 DTO
├── mapping/
│ └── ApiStatsUIMapper.java # Entity ↔ UI 매핑
└── README.md
JSP 화면:
WebContent/jsp/kjb/statistics/
├── apiStatsMinuteMan.jsp # 분단위 통계 화면
└── apiStatsHourMan.jsp # 시간별 통계 화면
```
## URL
| 화면 | URL |
|------|-----|
| 분단위 통계 | `/kjb/statistics/apiStatsMinuteMan.view` |
| 시간별 통계 | `/kjb/statistics/apiStatsHourMan.view` |
## 테이블
| 테이블명 | 설명 |
|----------|------|
| API_STATS_MINUTE | 분단위 통계 |
| API_STATS_HOUR | 시간별 통계 |
## 복합키 구성
- statTime (통계 시간)
- apiName (API명)
- gwInstanceId (Gateway 인스턴스 ID)
- bizDivCode (업무구분코드)
- clientId (클라이언트 ID)
- inboundAdapter (Inbound Adapter)
- outboundAdapter (Outbound Adapter)
## 메트릭
### 건수 메트릭
- totalCnt: 총 처리 건수
- successCnt: 성공 건수
- timeoutCnt: Timeout 오류 건수
- systemErrCnt: 시스템 오류 건수
- bizErrCnt: 업무 오류 건수
- seq900TimeoutCnt: 로그시퀀스900 Timeout 건수
- seq900SystemErrCnt: 로그시퀀스900 시스템 오류 건수
- seq900BizErrCnt: 로그시퀀스900 업무 오류 건수
### 응답시간 메트릭 (ms)
- avgRespTime: 평균 응답시간
- minRespTime: 최소 응답시간
- maxRespTime: 최대 응답시간
- p50RespTime: 50 백분위 응답시간
- p95RespTime: 95 백분위 응답시간
## Multi-tenancy
API Gateway 통계는 `APIGW` 스키마에 저장됩니다.
Controller에서 `DataSourceContextHolder`를 사용하여 스키마를 전환합니다.
```java
DataSourceContextHolder.setDataSourceType(
DataSourceTypeManager.getDataSourceType(DataSourceTypeManager.APIGW));
```
## 검색 조건
- 조회기간 (시작~종료)
- API명 (like 검색)
- Gateway 인스턴스 ID
- 업무구분코드 (like 검색)
- 클라이언트 ID (like 검색)
## 기술 스택
- JPA + QueryDSL
- MapStruct (Entity ↔ UI 매핑)
- Spring MVC (ResponseEntity)
- jqGrid (목록 화면)