import { z } from "zod"; import type { PageableList, PageableParams } from "@/shared/model"; // 그룹 검색 파라미터 인터페이스 export interface GroupSearchParams extends PageableParams { keywordType?: string; keyword?: string; groupId?: string; groupNm?: string; groupSeCd?: string; delYn?: string; authrtId?: string; siteId?: string; groupExpln?: string; roleId?: string; mngrYn?: string; } // 그룹 목록 응답 인터페이스 export interface GroupListResponseDto { groupId: string; groupNm: string; groupSeCd: string; groupSeNm: string; delYn: string; authrtId: string; groupExpln: string; siteId: string; mngrYn: string; roleId: string; roleNm: string; mdfcnDt: string; mdfrNm: string; } // 그룹 상세 응답 인터페이스 export interface GroupResponseDto { groupId: string; groupNm: string; groupSeCd: string; groupSeNm: string; groupExpln: string; delYn: string; regDt: string; rgtr: string; mdfcnDt: string; mdfr: string; authrtId: string; siteId: string; mngrYn: string; } // 그룹 저장 데이터 스키마 export const groupFormSchema = z.object({ groupId: z.string().min(1, { message: "그룹 ID를 입력해주세요." }), groupNm: z.string().min(1, { message: "그룹명을 입력해주세요." }), groupSeCd: z.string().min(1, { message: "그룹구분을 선택해주세요." }), groupExpln: z.string().optional(), delYn: z.string().default("N"), authrtId: z.string().min(1, { message: "권한ID를 선택해주세요." }), siteId: z.string().optional(), mngrYn: z.string().default("N"), }); export type GroupList = PageableList; export type GroupFormData = z.infer; // 그룹 서비스 인터페이스 export interface GroupService { // 그룹 목록 조회 findPageGroup: (params: GroupSearchParams) => Promise; // 그룹 단건 조회 findGroupById: (groupId: string) => Promise; // 그룹 저장 saveGroup: (data: GroupFormData) => Promise; // 그룹 수정 updateGroup: ( groupId: string, data: GroupFormData, ) => Promise; // 그룹 삭제 deleteGroup: (groupId: string) => Promise; }