From 1dc24d48e52f2e490f5603ceb02842586ecae533 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Thu, 24 Jul 2025 11:06:32 +0000 Subject: (대표님) 정기평가 피드백 반영, 설계 피드백 반영, (최겸) 기술영업 피드백 반영 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/basic-contract/validations.ts | 42 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'lib/basic-contract/validations.ts') diff --git a/lib/basic-contract/validations.ts b/lib/basic-contract/validations.ts index 5a5bf5b8..39248b4a 100644 --- a/lib/basic-contract/validations.ts +++ b/lib/basic-contract/validations.ts @@ -51,7 +51,46 @@ export const searchParamsTemplatesCache = createSearchParamsCache({ }) -export const createBasicContractTemplateSchema = basicContractTemplateSchema.extend({}); +export const BUSINESS_UNIT_KEYS = [ + "shipBuildingApplicable", + "windApplicable", + "pcApplicable", + "nbApplicable", + "rcApplicable", + "gyApplicable", + "sysApplicable", + "infraApplicable", +] as const; + +export const createBasicContractTemplateSchema = z.object({ + templateName: z.string().min(1, "템플릿 이름은 필수입니다."), + legalReviewRequired: z.boolean().default(false), + // 적용 범위 + shipBuildingApplicable: z.boolean().default(false), + windApplicable: z.boolean().default(false), + pcApplicable: z.boolean().default(false), + nbApplicable: z.boolean().default(false), + rcApplicable: z.boolean().default(false), + gyApplicable: z.boolean().default(false), + sysApplicable: z.boolean().default(false), + infraApplicable: z.boolean().default(false), + + status: z.enum(["ACTIVE", "DISPOSED"]).default("ACTIVE"), + fileName: z.string().min(1), + filePath: z.string().min(1), + + // 기존에 쓰시던 validityPeriod 를 계속 쓰실 거라면 남기고, 아니라면 지우세요. + // 예: 문자열(YYYY-MM-DD ~ YYYY-MM-DD) 또는 number(개월 수) 등 구체화 필요 + validityPeriod: z.string().optional(), +}).refine((data) => { + // 최소 1개 이상 사업부 선택 + return BUSINESS_UNIT_KEYS.some((k) => data[k] === true); +}, { + message: "적어도 하나의 적용 범위를 선택해야 합니다.", + path: ["shipBuildingApplicable"], // 첫 체크박스에 에러 표시 유도 +}); + +export type CreateBasicContractTemplateSchema = z.infer; export const updateBasicContractTemplateSchema = basicContractTemplateSchema.partial().extend({ id: z.number(), @@ -64,7 +103,6 @@ export const deleteBasicContractTemplateSchema = z.object({ export type GetBasicContractTemplatesSchema = Awaited> -export type CreateBasicContractTemplateSchema = z.infer; export type UpdateBasicContractTemplateSchema = z.infer; export type DeleteBasicContractTemplateSchema = z.infer; -- cgit v1.2.3