Merge remote-tracking branch 'origin/iipbs/st/dev'

This commit is contained in:
2026-07-30 11:24:13 +09:00
5 changed files with 34 additions and 8 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);
@@ -199,12 +199,6 @@ const StatisticsInputManagement = () => {
header: { text: "분류" },
editable: false,
},
{
name: "seCd",
fieldName: "seCd",
header: { text: "구분" },
editable: false,
},
{
name: "inptBgngYmd",
fieldName: "inptBgngYmd",
@@ -230,7 +224,6 @@ const StatisticsInputManagement = () => {
const columnLayout = [
"statsYr",
"seType",
"seCd",
"inptBgngYmd",
"inptEndYmd",
PERIOD_DETAIL_FIELD,
@@ -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 =