{label}
++ {value.toLocaleString()} +
++ {value.toLocaleString()} +
+{label}
+API 호출 정보
+{summary.totalCalls.toLocaleString()}
+총 호출
+{summary.successCount.toLocaleString()}
+성공
+0 ? 'text-red-500' : 'text-wing-text'}`}> + {summary.errorCount.toLocaleString()} +
+에러
+{Math.round(summary.avgResponseMs).toLocaleString()}
+평균(ms)
+{summary.maxResponseMs.toLocaleString()}
+최대(ms)
+{summary.minResponseMs.toLocaleString()}
+최소(ms)
+| # | +URI | +Method | +상태 | +응답(ms) | +건수 | +시간 | +에러 | +
|---|---|---|---|---|---|---|---|
| {idx + 1} | ++ {log.requestUri} + | +{log.httpMethod} | ++ + {log.statusCode ?? '-'} + + | ++ {log.responseTimeMs?.toLocaleString() ?? '-'} + | ++ {log.responseCount?.toLocaleString() ?? '-'} + | ++ {formatDateTime(log.createdAt)} + | ++ {log.errorMessage || '-'} + | +
Exit Message
++ {step.exitMessage} +
++ {history.apiKeyName || history.apiKey} · {history.jobName} +
++ {apiStats.callCount.toLocaleString()} +
+총 호출수
++ {apiStats.totalMs.toLocaleString()} +
+총 응답시간(ms)
++ {Math.round(apiStats.avgMs).toLocaleString()} +
+평균(ms)
++ {apiStats.maxMs.toLocaleString()} +
+최대(ms)
++ {apiStats.minMs.toLocaleString()} +
+최소(ms)
+
+ {history.failureReason}
+
+ | 이력 ID | +작업명 | +수집 시작일 | +수집 종료일 | +상태 | +실행자 | +
|---|---|---|---|---|---|
| + #{oh.historyId} + | ++ {oh.apiKeyName || oh.apiKey} + | ++ {formatDateTime(oh.rangeFromDate)} + | ++ {formatDateTime(oh.rangeToDate)} + | +
+ |
+ + {oh.executor || '-'} + | +
+ 배치 재수집 실행 이력을 조회하고 관리합니다. +
+| 재수집 ID | +작업명 | +상태 | +재수집 시작일시 | +재수집 종료일시 | +소요시간 | +액션 | +
|---|---|---|---|---|---|---|
| + #{hist.historyId} + | +
+
+ {hist.apiKeyName || hist.apiKey}
+
+ |
+
+ {hist.executionStatus === 'FAILED' ? (
+
+ ) : (
+ |
+
+ {formatDateTime(hist.rangeFromDate)}
+ |
+
+ {formatDateTime(hist.rangeToDate)}
+ |
+ + {formatDuration(hist.durationMs)} + | ++ + | +
+ {failLogTarget.executionStatus} +
+
+ {failLogTarget.failureReason || '실패 사유 없음'}
+
+