[ST] - code-refresh 로직 추가

This commit is contained in:
2026-07-30 11:01:02 +09:00
parent 4e4942313a
commit 791ec1ae2d
4 changed files with 34 additions and 1 deletions
@@ -9,7 +9,7 @@ import {
} from "@rsone/components";
import { useQuery, useQueryClient } from "@tanstack/react-query";
import { ENDPOINT } from "@/shared/config";
import { ENDPOINT, CLAIM_NAME } from "@/shared/config";
import { getCookie, useAlertStore, useMenuStore } from "@/shared/lib";
import { isBbsNoticeMenu } from "@/shared/lib/bbs-notice-menu";
import {
@@ -20,8 +20,10 @@ import { useStatisticsTabUrlSync } from "@/shared/lib/use-statistics-tab-url-syn
import { isVerificationSelectionReportMenu } from "@/shared/lib/verification-selection-report";
import { StatisticsPageLayout } from "@/shared/ui/statistics-page-layout";
import { authService } from "@/entities/auth";
import { getToken } from "@/entities/auth/lib/token-manager";
import type { MenuItem } from "@/entities/menu";
import { MenuApi } from "@/entities/menu";
import { statisticsApi } from "@/entities/statistics/api/statistics-service";
import { BaseLayout } from "@common/components";
import { getConfig } from "@common/config";
@@ -93,6 +95,13 @@ function WithBaseLayoutInner({ children }: { children: React.ReactNode }) {
enabled: isLoggedIn,
});
useEffect(() => {
if (!getToken(CLAIM_NAME)) return;
void statisticsApi.refreshCommonCodes().catch(() => {
// 캐시 동기화 실패는 화면 진입을 막지 않음
});
}, []);
useEffect(() => {
if (menuListData) {
setMenuList(menuListData);
@@ -8,6 +8,7 @@ import {
type cancelSubmitResponse,
type CheckStatusCodeRequest,
type CheckStatusCodeResponse,
type CodesRefreshResponse,
type getReviewOpinionDetailRequest,
type getReviewOpinionDetailResponse,
type ImrRequest,
@@ -368,6 +369,16 @@ export class StatisticsApiService implements StatisticsService {
);
return response.data;
}
/** 공통 코드 메모리 캐시 동기화 */
public async refreshCommonCodes(): Promise<CodesRefreshResponse> {
const response = await stClient.post<CodesRefreshResponse>(
`${ENDPOINT.ST_SERVICE.INPUTCOMMON}/codes-refresh`,
null,
withAuthHeader(),
);
return response.data;
}
}
export const statisticsApi = new StatisticsApiService();
@@ -459,6 +459,12 @@ export interface StatiscicsManagementReviewHistoryRequest {
statsCd?: string;
}
/** 공통 코드 메모리 캐시 동기화 (`INPUTCOMMON/codes-refresh`) 응답 */
export interface CodesRefreshResponse {
status: string;
message?: string;
}
/** 통계관리 검토 이력 조회 API `data` 배열 요소 */
export interface StatiscicsManagementReviewHistoryItem {
statsYr: string;
@@ -565,4 +571,5 @@ export interface StatisticsService {
StatiscicsExceptionReset(param: StatiscicsExceptionResetRequest): Promise<StatiscicsExceptionResetResponse>;
CheckStatusCode(param: CheckStatusCodeRequest): Promise<CheckStatusCodeResponse>;
getUnSubmitData(param: unSubmitDataRequest): Promise<unSubmitDataResponse>;
refreshCommonCodes(): Promise<CodesRefreshResponse>;
}
@@ -4,6 +4,7 @@ import { useState } from "react";
import Image from "next/image";
import { authService } from "@/entities/auth";
import { statisticsApi } from "@/entities/statistics/api/statistics-service";
import { images } from "@common/assets";
import "./login.css";
@@ -21,6 +22,11 @@ function LoginPage() {
try {
await authService.login({ userId, password });
try {
await statisticsApi.refreshCommonCodes();
} catch {
// 로그인 성공 후 캐시 동기화 실패는 진입을 막지 않음
}
window.location.href = "/statistics";
} catch (error) {
const message =