fix: TypeScript 타입 오류 수정 및 설정 페이지 추가

- BOMItem Omit 타입 시그니처 통일 (useTemplateManagement, SectionsTab, ItemMasterContext)
- HeadersInit → Record<string, string> 타입 변경
- Zustand useShallow 마이그레이션 (zustand/react/shallow)
- DataTable, ListPageTemplate 제네릭 타입 제약 추가
- 설정 관리 페이지 추가 (직급, 직책, 휴가정책, 근무일정, 권한)
- HR 관리 페이지 추가 (급여, 휴가)
- 단가관리 페이지 리팩토링

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
byeongcheolryu
2025-12-09 18:07:47 +09:00
parent 48dbba0e5f
commit ded0bc2439
98 changed files with 10608 additions and 1204 deletions

View File

@@ -181,7 +181,7 @@ export function IntegratedListTemplateV2<T = any>({
};
return (
<PageLayout devMetadata={devMetadata}>
<PageLayout>
{/* 페이지 헤더 */}
<PageHeader
title={title}

View File

@@ -1,6 +1,6 @@
"use client";
import { ReactNode } from "react";
import { ReactNode, ComponentType } from "react";
import { LucideIcon } from "lucide-react";
import { PageLayout } from "@/components/organisms/PageLayout";
import { PageHeader } from "@/components/organisms/PageHeader";
@@ -10,7 +10,7 @@ import { DataTable, Column } from "@/components/organisms/DataTable";
import { EmptyState } from "@/components/organisms/EmptyState";
import { MobileCard } from "@/components/organisms/MobileCard";
interface ListPageTemplateProps<T> {
interface ListPageTemplateProps<T extends object> {
// Header
title: string;
description?: string;
@@ -50,7 +50,7 @@ interface ListPageTemplateProps<T> {
icon?: ReactNode;
badge?: { label: string; variant?: "default" | "secondary" | "destructive" | "outline" };
fields: Array<{ label: string; value: string; badge?: boolean; badgeVariant?: string }>;
actions?: Array<{ label: string; onClick: () => void; icon?: ReactNode; variant?: "default" | "outline" | "destructive" }>;
actions?: Array<{ label: string; onClick: () => void; icon?: LucideIcon | ComponentType<any>; variant?: "default" | "outline" | "destructive" }>;
};
// Empty State
@@ -67,7 +67,7 @@ interface ListPageTemplateProps<T> {
};
}
export function ListPageTemplate<T>({
export function ListPageTemplate<T extends object>({
title,
description,
icon,

View File

@@ -64,11 +64,10 @@ export function ResponsiveFormTemplate({
<PageLayout maxWidth={maxWidth} versionInfo={versionInfo}>
{/* 헤더 */}
<PageHeader
title={title}
title={isEditMode ? `${title} 수정` : title}
description={description}
icon={icon}
rightActions={headerActions}
isEditMode={isEditMode}
actions={headerActions}
/>
{/* 메인 컨텐츠 */}