fix(WEB): 마스터데이터 캐시 테넌트 격리 및 상세 템플릿 개선

- masterDataStore: 테넌트별 캐시 격리 로직 강화
- AuthContext: 인증 컨텍스트 안정성 개선
- IntegratedDetailTemplate: 상세 템플릿 동작 수정
- VendorDetail: 거래처 상세 수정
- AttendanceManagement: 타입 정의 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-01-29 16:57:49 +09:00
parent 4014b3fb84
commit 106ce09482
7 changed files with 211 additions and 29 deletions

View File

@@ -362,7 +362,7 @@ export function VendorDetail({ mode, vendorId, openModal }: VendorDetailProps) {
error={!!validationErrors.businessNumber}
/>
</div>
{renderField('거래처코드', 'vendorCode', formData.vendorCode, { placeholder: '자동생성' })}
{renderField('거래처코드', 'vendorCode', formData.vendorCode, { placeholder: '자동생성', disabled: true })}
{renderField('거래처명', 'vendorName', formData.vendorName, { required: true })}
{renderField('대표자명', 'representativeName', formData.representativeName)}
{renderSelectField('거래처 유형', 'category', formData.category, VENDOR_CATEGORY_SELECTOR_OPTIONS, true)}

View File

@@ -259,7 +259,9 @@ export const HOUR_OPTIONS = Array.from({ length: 24 }, (_, i) => ({
export const MINUTE_OPTIONS = [
{ value: '0', label: '0분' },
{ value: '15', label: '15분' },
{ value: '30', label: '30분' },
{ value: '45', label: '45분' },
];
// 연장 시간 옵션 (0-12시간)

View File

@@ -232,8 +232,12 @@ function IntegratedDetailTemplateInner<T extends Record<string, unknown>>(
setFormData(transformed);
}
setErrors({});
// URL도 view 모드로 변경 (handleEdit와 대칭)
if (itemId) {
router.push(`/${locale}${config.basePath}/${itemId}?mode=view`);
}
}
}, [onCancel, isCreateMode, navigateToList, initialData, config.transformInitialData]);
}, [onCancel, isCreateMode, navigateToList, initialData, config.transformInitialData, itemId, router, locale, config.basePath]);
// ===== 제출 핸들러 =====
const handleSubmit = useCallback(async () => {