export function createGiftCategoryForm() { return { classificationNumber: '', categoryCode: '', name: '', receiptCode: '', representativeItem: '', requiresDamageWaiver: false, isActive: true } } export function buildGiftCategoryRequest(form) { return { classificationNumber: form.classificationNumber, categoryCode: form.categoryCode, name: form.name, receiptCode: form.receiptCode, representativeItem: form.representativeItem, requiresDamageWaiver: form.requiresDamageWaiver, isActive: form.isActive } } export function validateGiftCategory(form) { const errors = {} const requiredFields = [ ['classificationNumber', '분류번호', 3], ['categoryCode', '카테고리 코드', 50], ['name', '카테고리명', 50], ['receiptCode', '접수 코드', 9], ['representativeItem', '대표 품목', 100] ] for (const [key, label, maxLength] of requiredFields) { const value = form[key] if (typeof value !== 'string' || !value.trim()) { errors[key] = `${label} 항목은 필수입니다.` } else if (value.length > maxLength) { errors[key] = `${label} 항목은 ${maxLength}자 이하로 입력해 주세요.` } } if (!errors.classificationNumber && (!/^[0-9]{3}$/.test(form.classificationNumber) || form.classificationNumber.length !== 3)) { errors.classificationNumber = '분류번호는 숫자 3자리로 입력해 주세요.' } if (!errors.receiptCode && /[^A-Z]/.test(form.receiptCode)) { errors.receiptCode = '접수 코드는 영문 대문자 1~9자로 입력해 주세요.' } if (typeof form.requiresDamageWaiver !== 'boolean') { errors.requiresDamageWaiver = '파손면책 동의 필요 여부를 선택해 주세요.' } if (typeof form.isActive !== 'boolean') { errors.isActive = '활성 여부를 선택해 주세요.' } return errors }