diff options
Diffstat (limited to 'lib/basic-contract/validations.ts')
| -rw-r--r-- | lib/basic-contract/validations.ts | 42 |
1 files changed, 40 insertions, 2 deletions
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<typeof createBasicContractTemplateSchema>;
export const updateBasicContractTemplateSchema = basicContractTemplateSchema.partial().extend({
id: z.number(),
@@ -64,7 +103,6 @@ export const deleteBasicContractTemplateSchema = z.object({ export type GetBasicContractTemplatesSchema = Awaited<ReturnType<typeof searchParamsTemplatesCache.parse>>
-export type CreateBasicContractTemplateSchema = z.infer<typeof createBasicContractTemplateSchema>;
export type UpdateBasicContractTemplateSchema = z.infer<typeof updateBasicContractTemplateSchema>;
export type DeleteBasicContractTemplateSchema = z.infer<typeof deleteBasicContractTemplateSchema>;
|
