From b12a06766e32e3c76544b1d12bec91653e1fe9db Mon Sep 17 00:00:00 2001 From: 0-Zz-ang Date: Mon, 25 Aug 2025 09:23:30 +0900 Subject: docu-list-rule페이지 수정 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../[projectId]/code-groups/page.tsx | 51 ++++++++++++++ .../[projectId]/combo-box-settings/page.tsx | 50 ++++++++++++++ .../[projectId]/document-class/page.tsx | 49 +++++++++++++ .../(evcp)/docu-list-rule/[projectId]/layout.tsx | 59 ++++++++++++++++ .../[projectId]/number-type-configs/page.tsx | 80 ++++++++++++++++++++++ .../[projectId]/number-types/page.tsx | 49 +++++++++++++ .../(evcp)/docu-list-rule/[projectId]/page.tsx | 10 +++ .../(evcp)/docu-list-rule/code-groups/page.tsx | 54 --------------- .../docu-list-rule/combo-box-settings/page.tsx | 53 -------------- .../(evcp)/docu-list-rule/document-class/page.tsx | 52 -------------- app/[lng]/evcp/(evcp)/docu-list-rule/layout.tsx | 70 +++---------------- .../docu-list-rule/number-type-configs/page.tsx | 78 --------------------- .../(evcp)/docu-list-rule/number-types/page.tsx | 52 -------------- app/[lng]/evcp/(evcp)/docu-list-rule/page.tsx | 22 +++--- 14 files changed, 370 insertions(+), 359 deletions(-) create mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/code-groups/page.tsx create mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/combo-box-settings/page.tsx create mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/document-class/page.tsx create mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/layout.tsx create mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/number-type-configs/page.tsx create mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/number-types/page.tsx create mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/page.tsx delete mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/code-groups/page.tsx delete mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/combo-box-settings/page.tsx delete mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/document-class/page.tsx delete mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/number-type-configs/page.tsx delete mode 100644 app/[lng]/evcp/(evcp)/docu-list-rule/number-types/page.tsx (limited to 'app') diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/code-groups/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/code-groups/page.tsx new file mode 100644 index 00000000..c75bf6b9 --- /dev/null +++ b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/code-groups/page.tsx @@ -0,0 +1,51 @@ +import * as React from "react"; +import { type SearchParams } from "@/types/table"; +import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; +import { getCodeGroups } from "@/lib/docu-list-rule/code-groups/service"; +import { CodeGroupsTable } from "@/lib/docu-list-rule/code-groups/table/code-groups-table"; +import { searchParamsCodeGroupsCache } from "@/lib/docu-list-rule/code-groups/validation"; + + +interface IndexPageProps { + searchParams: Promise; + params: Promise<{ lng: string; projectId: string }>; +} + +export default async function IndexPage(props: IndexPageProps) { + const searchParams = await props.searchParams; + const { projectId } = await props.params; + + // 프로젝트 ID를 필터에 추가 + const searchParamsWithProject = { + ...searchParams, + projectId: projectId + }; + + const search = searchParamsCodeGroupsCache.parse(searchParamsWithProject); + + const promises = Promise.all([ + getCodeGroups({ + ...search, + }), + ]); + + return ( + <> + + + + } + > + + + + ); +} \ No newline at end of file diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/combo-box-settings/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/combo-box-settings/page.tsx new file mode 100644 index 00000000..ffe30710 --- /dev/null +++ b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/combo-box-settings/page.tsx @@ -0,0 +1,50 @@ +import * as React from "react"; +import { type SearchParams } from "@/types/table"; +import { Skeleton } from "@/components/ui/skeleton"; +import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; +import { getComboBoxCodeGroups } from "@/lib/docu-list-rule/combo-box-settings/service"; +import { ComboBoxSettingsTable } from "@/lib/docu-list-rule/combo-box-settings/table/combo-box-settings-table"; +import { searchParamsComboBoxSettingsCache } from "@/lib/docu-list-rule/combo-box-settings/validation"; + + +interface IndexPageProps { + searchParams: Promise; + params: Promise<{ lng: string; projectId: string }>; +} + +export default async function IndexPage(props: IndexPageProps) { + const searchParams = await props.searchParams; + const { projectId } = await props.params; + + // 프로젝트 ID를 필터에 추가 + const searchParamsWithProject = { + ...searchParams, + projectId: projectId + }; + + const search = searchParamsComboBoxSettingsCache.parse(searchParamsWithProject); + + const promises = Promise.all([ + getComboBoxCodeGroups(search), + ]); + + return ( + <> + + }> + + } + > + + + + ); +} diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/document-class/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/document-class/page.tsx new file mode 100644 index 00000000..8a0f1bd7 --- /dev/null +++ b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/document-class/page.tsx @@ -0,0 +1,49 @@ +import * as React from "react"; +import { Skeleton } from "@/components/ui/skeleton"; +import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; +import { getDocumentClassCodeGroups } from "@/lib/docu-list-rule/document-class/service"; +import { DocumentClassTable } from "@/lib/docu-list-rule/document-class/table/document-class-table"; + +import { searchParamsDocumentClassCache } from "@/lib/docu-list-rule/document-class/validation"; + +interface IndexPageProps { + searchParams: Promise; + params: Promise<{ lng: string; projectId: string }>; +} + +export default async function IndexPage(props: IndexPageProps) { + const searchParams = await props.searchParams; + const { projectId } = await props.params; + + // 프로젝트 ID를 필터에 추가 + const searchParamsWithProject = { + ...searchParams, + projectId: projectId + }; + + const promises = Promise.all([ + getDocumentClassCodeGroups( + searchParamsDocumentClassCache.parse(searchParamsWithProject) + ), + ]); + + return ( + <> + + }> + + } + > + + + + ); +} diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/layout.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/layout.tsx new file mode 100644 index 00000000..197c35b2 --- /dev/null +++ b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/layout.tsx @@ -0,0 +1,59 @@ +import { Metadata } from "next" +import { Separator } from "@/components/ui/separator" +import { SidebarNav } from "@/components/layout/sidebar-nav" +import { DynamicTitleClient } from "@/components/docu-list-rule/dynamic-title-client" + +export const metadata: Metadata = { + title: "Document Numbering Rule", +} + +export default async function ProjectDocuListRuleLayout({ + children, + params, +}: { + children: React.ReactNode + params: Promise<{ lng: string; projectId: string }> +}) { + const { lng, projectId } = await params + + const sidebarNavItems = [ + { + title: "Document Class 관리", + href: `/${lng}/evcp/docu-list-rule/${projectId}/document-class`, + }, + { + title: "Code Group 정의", + href: `/${lng}/evcp/docu-list-rule/${projectId}/code-groups`, + }, + { + title: "Combo Box 설정", + href: `/${lng}/evcp/docu-list-rule/${projectId}/combo-box-settings`, + }, + { + title: "Number Type 관리", + href: `/${lng}/evcp/docu-list-rule/${projectId}/number-types`, + }, + { + title: "Number Type별 설정", + href: `/${lng}/evcp/docu-list-rule/${projectId}/number-type-configs`, + }, + ] + + return ( + <> +
+ + + +
+ +
{children}
+
+
+ + + + ) +} diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/number-type-configs/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/number-type-configs/page.tsx new file mode 100644 index 00000000..78714dae --- /dev/null +++ b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/number-type-configs/page.tsx @@ -0,0 +1,80 @@ +import * as React from "react"; +import { Skeleton } from "@/components/ui/skeleton"; +import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; +import { NumberTypeConfigsTable } from "@/lib/docu-list-rule/number-type-configs/table/number-type-configs-table"; +import { getNumberTypes } from "@/lib/docu-list-rule/number-types/service"; +import { getNumberTypeConfigs } from "@/lib/docu-list-rule/number-type-configs/service"; + +import { searchParamsNumberTypeConfigsCache } from "@/lib/docu-list-rule/number-type-configs/validation"; + +// Number Type with project info type +type NumberTypeWithProject = { + id: number + name: string + description: string | null + isActive: boolean | null + createdAt: Date + updatedAt: Date + projectId: number + projectCode: string | null + projectName: string | null +} + +interface IndexPageProps { + searchParams: Promise; + params: Promise<{ lng: string; projectId: string }>; +} + +export default async function IndexPage(props: IndexPageProps) { + const searchParams = await props.searchParams; + const { projectId } = await props.params; + + // 프로젝트 ID를 필터에 추가 + const searchParamsWithProject = { + ...searchParams, + projectId: projectId + }; + + const parsedSearchParams = await searchParamsNumberTypeConfigsCache.parse(searchParamsWithProject); + + const promises = Promise.all([ + getNumberTypes({ + page: 1, + perPage: 1000, // 모든 Number Type을 가져오기 위해 큰 값 설정 + search: "", + sort: [{ id: "id", desc: false }], // DB 등록 순서대로 정렬 + filters: [], + joinOperator: "and", + flags: ["advancedTable"], + numberTypeId: "", + description: "", + isActive: "", + projectId: projectId // 프로젝트 ID 추가 + }) as Promise<{ data: NumberTypeWithProject[]; pageCount: number }>, + // Number Type Configs도 서버 사이드에서 가져오기 + parsedSearchParams.numberTypeId > 0 ? getNumberTypeConfigs({ + ...parsedSearchParams, + projectId: projectId + }) : Promise.resolve({ success: true, data: [], pageCount: 0 }), + ]); + + return ( + <> + + }> + + } + > + + + + ); +} diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/number-types/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/number-types/page.tsx new file mode 100644 index 00000000..e18d536d --- /dev/null +++ b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/number-types/page.tsx @@ -0,0 +1,49 @@ +import * as React from "react"; +import { Skeleton } from "@/components/ui/skeleton"; +import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; +import { NumberTypesTable } from "@/lib/docu-list-rule/number-types/table/number-types-table"; +import { getNumberTypesWithConfigs } from "@/lib/docu-list-rule/number-types/service"; + +import { searchParamsNumberTypesCache } from "@/lib/docu-list-rule/number-types/validation"; + +interface IndexPageProps { + searchParams: Promise; + params: Promise<{ lng: string; projectId: string }>; +} + +export default async function IndexPage(props: IndexPageProps) { + const searchParams = await props.searchParams; + const { projectId } = await props.params; + + // 프로젝트 ID를 필터에 추가 + const searchParamsWithProject = { + ...searchParams, + projectId: projectId + }; + + const promises = Promise.all([ + getNumberTypesWithConfigs( + searchParamsNumberTypesCache.parse(searchParamsWithProject) + ), + ]); + + return ( + <> + + }> + + } + > + + + + ); +} diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/page.tsx new file mode 100644 index 00000000..59bec55a --- /dev/null +++ b/app/[lng]/evcp/(evcp)/docu-list-rule/[projectId]/page.tsx @@ -0,0 +1,10 @@ +import { redirect } from "next/navigation" + +export default async function ProjectDocuListRulePage({ + params, +}: { + params: Promise<{ lng: string; projectId: string }> +}) { + const { lng, projectId } = await params + redirect(`/${lng}/evcp/docu-list-rule/${projectId}/document-class`) +} diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/code-groups/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/code-groups/page.tsx deleted file mode 100644 index 5aebf15d..00000000 --- a/app/[lng]/evcp/(evcp)/docu-list-rule/code-groups/page.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import * as React from "react"; -import { type SearchParams } from "@/types/table"; -import { Shell } from "@/components/shell"; -import { Skeleton } from "@/components/ui/skeleton"; -import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; -import { getCodeGroups } from "@/lib/docu-list-rule/code-groups/service"; -import { CodeGroupsTable } from "@/lib/docu-list-rule/code-groups/table/code-groups-table"; -import { searchParamsCodeGroupsCache } from "@/lib/docu-list-rule/code-groups/validation"; -import { InformationButton } from "@/components/information/information-button"; - -interface IndexPageProps { - searchParams: Promise; -} - -export default async function IndexPage(props: IndexPageProps) { - const searchParams = await props.searchParams; - const search = searchParamsCodeGroupsCache.parse(searchParams); - - const promises = Promise.all([ - getCodeGroups({ - ...search, - }), - ]); - - return ( - -
-
-
-

Code Group 정의

- -
- {/*

- 문서 번호에 사용될 수 있는 다양한 코드 그룹의 정의를 관리하는 페이지입니다. -

*/} -
-
- }> - - } - > - - -
- ); -} \ No newline at end of file diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/combo-box-settings/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/combo-box-settings/page.tsx deleted file mode 100644 index 194449a7..00000000 --- a/app/[lng]/evcp/(evcp)/docu-list-rule/combo-box-settings/page.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import * as React from "react"; -import { type SearchParams } from "@/types/table"; -import { Shell } from "@/components/shell"; -import { Skeleton } from "@/components/ui/skeleton"; -import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; -import { getComboBoxCodeGroups } from "@/lib/docu-list-rule/combo-box-settings/service"; -import { ComboBoxSettingsTable } from "@/lib/docu-list-rule/combo-box-settings/table/combo-box-settings-table"; -import { searchParamsComboBoxSettingsCache } from "@/lib/docu-list-rule/combo-box-settings/validation"; -import { InformationButton } from "@/components/information/information-button"; - -interface IndexPageProps { - searchParams: Promise; -} - -export default async function IndexPage(props: IndexPageProps) { - const searchParams = await props.searchParams; - const search = searchParamsComboBoxSettingsCache.parse(searchParams); - - const promises = Promise.all([ - getComboBoxCodeGroups(search), - ]); - - return ( - -
-
-
-

Combo Box 설정

- -
- {/*

- Combo Box 옵션을 관리하는 페이지입니다. - 각 Code Group별로 Combo Box에 표시될 옵션들을 설정할 수 있습니다. -

*/} -
-
- }> - - } - > - - -
- ); -} \ No newline at end of file diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/document-class/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/document-class/page.tsx deleted file mode 100644 index 5c2c600e..00000000 --- a/app/[lng]/evcp/(evcp)/docu-list-rule/document-class/page.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import * as React from "react"; -import { Shell } from "@/components/shell"; -import { Skeleton } from "@/components/ui/skeleton"; -import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; -import { getDocumentClassCodeGroups } from "@/lib/docu-list-rule/document-class/service"; -import { DocumentClassTable } from "@/lib/docu-list-rule/document-class/table/document-class-table"; -import { InformationButton } from "@/components/information/information-button"; -import { searchParamsDocumentClassCache } from "@/lib/docu-list-rule/document-class/validation"; - -interface IndexPageProps { - searchParams: Promise; -} - -export default async function IndexPage(props: IndexPageProps) { - const searchParams = await props.searchParams; - - const promises = Promise.all([ - getDocumentClassCodeGroups( - searchParamsDocumentClassCache.parse(searchParams) - ), - ]); - - return ( - -
-
-
-

Document Class 관리

- -
- {/*

- Document Class를 관리합니다. -

*/} -
-
- }> - - } - > - - -
- ); -} \ No newline at end of file diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/layout.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/layout.tsx index 03473293..05231bf1 100644 --- a/app/[lng]/evcp/(evcp)/docu-list-rule/layout.tsx +++ b/app/[lng]/evcp/(evcp)/docu-list-rule/layout.tsx @@ -1,69 +1,17 @@ -import { Metadata } from "next" +import { Shell } from "@/components/shell" +import DocuListRuleClient from "@/components/docu-list-rule/docu-list-rule-client" -import { Separator } from "@/components/ui/separator" -import { SidebarNav } from "@/components/layout/sidebar-nav" - -export const metadata: Metadata = { - title: "Document Numbering Rule", -} - - - -export default async function DocumentNumberingLayout({ +// Layout 컴포넌트는 서버 컴포넌트입니다 +export default async function VendorDocuments({ children, - params, }: { children: React.ReactNode - params: { lng: string } }) { - const resolvedParams = await params - const lng = resolvedParams.lng - - const sidebarNavItems = [ - { - title: "Document Class 관리", - href: `/${lng}/evcp/docu-list-rule/document-class`, - }, - { - title: "Code Group 정의", - href: `/${lng}/evcp/docu-list-rule/code-groups`, - }, - { - title: "Combo Box 설정", - href: `/${lng}/evcp/docu-list-rule/combo-box-settings`, - }, - { - title: "Number Type 관리", - href: `/${lng}/evcp/docu-list-rule/number-types`, - }, - { - title: "Number Type별 설정", - href: `/${lng}/evcp/docu-list-rule/number-type-configs`, - }, - ] - return ( - <> -
-
-
-
-

Document Numbering Rule (해양)

-

- 벤더 제출 문서 리스트 작성 시에 사용되는 넘버링 -

-
- - -
- -
{children}
-
-
-
-
- + + + {children} + + ) } \ No newline at end of file diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/number-type-configs/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/number-type-configs/page.tsx deleted file mode 100644 index c3556fb7..00000000 --- a/app/[lng]/evcp/(evcp)/docu-list-rule/number-type-configs/page.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import * as React from "react"; -import { Shell } from "@/components/shell"; -import { Skeleton } from "@/components/ui/skeleton"; -import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; -import { NumberTypeConfigsTable } from "@/lib/docu-list-rule/number-type-configs/table/number-type-configs-table"; -import { getNumberTypes } from "@/lib/docu-list-rule/number-types/service"; -import { getNumberTypeConfigs } from "@/lib/docu-list-rule/number-type-configs/service"; -import { InformationButton } from "@/components/information/information-button"; -import { searchParamsNumberTypeConfigsCache } from "@/lib/docu-list-rule/number-type-configs/validation"; - -// Number Type with project info type -type NumberTypeWithProject = { - id: number - name: string - description: string | null - isActive: boolean | null - createdAt: Date - updatedAt: Date - projectId: number - projectCode: string | null - projectName: string | null -} - -interface IndexPageProps { - searchParams: Promise; -} - -export default async function IndexPage(props: IndexPageProps) { - const searchParams = await props.searchParams; - const parsedSearchParams = await searchParamsNumberTypeConfigsCache.parse(searchParams); - - const promises = Promise.all([ - getNumberTypes({ - page: 1, - perPage: 1000, // 모든 Number Type을 가져오기 위해 큰 값 설정 - search: "", - sort: [{ id: "id", desc: false }], // DB 등록 순서대로 정렬 - filters: [], - joinOperator: "and", - flags: ["advancedTable"], - numberTypeId: "", - description: "", - isActive: "" - }) as Promise<{ data: NumberTypeWithProject[]; pageCount: number }>, - // Number Type Configs도 서버 사이드에서 가져오기 - parsedSearchParams.numberTypeId > 0 ? getNumberTypeConfigs(parsedSearchParams) : Promise.resolve({ success: true, data: [], pageCount: 0 }), - ]); - - return ( - -
-
-
-

Number Type별 설정

- -
- {/*

- 각 문서 번호 유형별로 어떤 코드 그룹들을 어떤 순서로 사용할지 설정하는 페이지입니다. -

*/} -
-
- }> - - } - > - - -
- ); -} \ No newline at end of file diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/number-types/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/number-types/page.tsx deleted file mode 100644 index 58af176f..00000000 --- a/app/[lng]/evcp/(evcp)/docu-list-rule/number-types/page.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import * as React from "react"; -import { Shell } from "@/components/shell"; -import { Skeleton } from "@/components/ui/skeleton"; -import { DataTableSkeleton } from "@/components/data-table/data-table-skeleton"; -import { NumberTypesTable } from "@/lib/docu-list-rule/number-types/table/number-types-table"; -import { getNumberTypesWithConfigs } from "@/lib/docu-list-rule/number-types/service"; -import { InformationButton } from "@/components/information/information-button"; -import { searchParamsNumberTypesCache } from "@/lib/docu-list-rule/number-types/validation"; - -interface IndexPageProps { - searchParams: Promise; -} - -export default async function IndexPage(props: IndexPageProps) { - const searchParams = await props.searchParams; - - const promises = Promise.all([ - getNumberTypesWithConfigs( - searchParamsNumberTypesCache.parse(searchParams) - ), - ]); - - return ( - -
-
-
-

Number Type 관리

- -
- {/*

- 문서 번호 유형을 추가, 수정, 삭제할 수 있는 페이지입니다. -

*/} -
-
- }> - - } - > - - -
- ); -} \ No newline at end of file diff --git a/app/[lng]/evcp/(evcp)/docu-list-rule/page.tsx b/app/[lng]/evcp/(evcp)/docu-list-rule/page.tsx index 8735e3d6..fb36b3b8 100644 --- a/app/[lng]/evcp/(evcp)/docu-list-rule/page.tsx +++ b/app/[lng]/evcp/(evcp)/docu-list-rule/page.tsx @@ -1,11 +1,15 @@ -import { redirect } from "next/navigation" +export default async function IndexPage() { + return ( +
- -export default async function DocumentNumberingPage({ - params, -}: { - params: Promise<{ lng: string }> -}) { - const { lng } = await params - redirect(`/${lng}/evcp/docu-list-rule/document-class`) +
+
+

시작하는 방법

+

+ 오른쪽 상단에서 프로젝트/계약을 선택하세요. +

+
+
+
+ ) } \ No newline at end of file -- cgit v1.2.3