2348800e68
Build & Deploy to K8s / build-and-deploy (push) Successful in 9m22s
카테고리/캐스케이딩 시스템 (B/C/D) 전부 폐기:
- BE: mapper/Service/Controller 9세트 삭제 (cascading*, categoryTree, tableCategoryValue, categoryValueCascading, codeMerge)
- FE: 페이지 3 + API 8 + hooks 2 + 폐기 컴포넌트 6 삭제, 14곳 의존성 정리
- DB: 12 테이블 DROP, TABLE_TYPE_COLUMNS.CODE_CATEGORY → CODE_INFO rename
신설 commonCode 마스터-디테일:
- code_info: 1레벨 그룹 마스터
- code_detail: 2~∞ depth 재귀 트리 (parent_detail_id self-FK, depth 자동 계산)
- API: /api/common-codes/{info,detail}
- CodeCategoryFormModal/Panel → CodeInfoFormModal/Panel rename
- code_category 컬럼명 전부 code_info 로 치환 (mapper/Java/FE)
- 옛 commonCode API URL (/categories/...) → getCodeOptions 어댑터 + /detail?code_info=... 전환
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
import { useCallback, useMemo, useState } from "react";
|
|
import { useQueryClient } from "@tanstack/react-query";
|
|
import { queryKeys } from "@/lib/queryKeys";
|
|
import type { CodeInfo } from "@/types/commonCode";
|
|
|
|
/**
|
|
* 선택된 그룹(code_info) 상태 관리 훅
|
|
*
|
|
* 좌측 패널에서 그룹을 클릭하면 selectedCodeInfo 가 갱신되고,
|
|
* 우측 디테일 트리 패널이 그 값을 받아 트리를 로드한다.
|
|
*/
|
|
export function useSelectedCodeInfo() {
|
|
const queryClient = useQueryClient();
|
|
const [selectedCode, setSelectedCode] = useState<string>("");
|
|
|
|
const selectedRow = useMemo<CodeInfo | null>(() => {
|
|
if (!selectedCode) return null;
|
|
const list = queryClient.getQueryData<CodeInfo[]>(queryKeys.codeInfo.list());
|
|
if (!list || !Array.isArray(list)) return null;
|
|
return list.find((row) => row.code_info === selectedCode) || null;
|
|
}, [selectedCode, queryClient]);
|
|
|
|
const selectCodeInfo = useCallback((codeInfo: string) => {
|
|
setSelectedCode(codeInfo);
|
|
}, []);
|
|
|
|
const clearSelection = useCallback(() => {
|
|
setSelectedCode("");
|
|
}, []);
|
|
|
|
return {
|
|
selectedCodeInfo: selectedCode,
|
|
selectedRow,
|
|
hasSelection: Boolean(selectedCode),
|
|
selectCodeInfo,
|
|
clearSelection,
|
|
};
|
|
}
|