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

@@ -72,17 +72,6 @@ export function useConditionalDisplay(
}
});
// 디버깅: 조건부 표시 설정 확인
console.log('[useConditionalDisplay] 트리거 필드 목록:', triggers.map(t => ({
fieldKey: t.fieldKey,
fieldId: t.fieldId,
fieldConditions: t.condition.fieldConditions?.map(fc => ({
expectedValue: fc.expectedValue,
targetFieldIds: fc.targetFieldIds,
targetSectionIds: fc.targetSectionIds,
})),
})));
return triggers;
}, [structure]);
@@ -102,15 +91,6 @@ export function useConditionalDisplay(
// 현재 값과 기대값이 일치하는지 확인
const isMatch = String(currentValue) === fc.expectedValue;
// 디버깅: 조건 매칭 확인
console.log('[useConditionalDisplay] 조건 매칭 체크:', {
triggerFieldKey: trigger.fieldKey,
currentValue: String(currentValue),
expectedValue: fc.expectedValue,
isMatch,
targetFieldIds: fc.targetFieldIds,
});
if (isMatch) {
// 일치하면 타겟 섹션/필드 활성화
if (fc.targetSectionIds) {
@@ -124,8 +104,6 @@ export function useConditionalDisplay(
}
});
console.log('[useConditionalDisplay] 활성화된 필드 ID:', [...activeFieldIds]);
return { activeSectionIds, activeFieldIds };
}, [triggerFields, formData]);

View File

@@ -178,7 +178,6 @@ export function useDynamicFormState(
// 폼 초기화
const resetForm = useCallback((newInitialData?: DynamicFormData) => {
console.log('[useDynamicFormState] resetForm 호출됨:', newInitialData);
setFormData(newInitialData || {});
setErrors({});
setIsSubmitting(false);