summaryrefslogtreecommitdiff
path: root/lib/docu-list-rule
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-09-23 07:53:01 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-09-23 07:53:01 +0000
commitee52d354c7f44052c585a27f4974a9f6512c1196 (patch)
tree27e6956b37104a36b9ffaa6ee8c05033f61abf0e /lib/docu-list-rule
parent4eca28c080c5afcbe71afbe53d5fdb0859cc28c9 (diff)
(대표님, 임수민) 도큐먼트 리스트 role 수정
Diffstat (limited to 'lib/docu-list-rule')
-rw-r--r--lib/docu-list-rule/number-type-configs/service.ts1
-rw-r--r--lib/docu-list-rule/number-type-configs/table/number-type-configs-table-columns.tsx13
-rw-r--r--lib/docu-list-rule/number-types/service.ts20
-rw-r--r--lib/docu-list-rule/number-types/table/number-type-initialize-button.tsx99
-rw-r--r--lib/docu-list-rule/number-types/table/number-types-table-columns.tsx2
-rw-r--r--lib/docu-list-rule/number-types/table/number-types-table-toolbar.tsx9
6 files changed, 138 insertions, 6 deletions
diff --git a/lib/docu-list-rule/number-type-configs/service.ts b/lib/docu-list-rule/number-type-configs/service.ts
index f4cadc70..c29af464 100644
--- a/lib/docu-list-rule/number-type-configs/service.ts
+++ b/lib/docu-list-rule/number-type-configs/service.ts
@@ -121,6 +121,7 @@ export async function getNumberTypeConfigs(input: GetNumberTypeConfigsSchema) {
codeGroupId: documentNumberTypeConfigs.codeGroupId,
sdq: documentNumberTypeConfigs.sdq,
description: documentNumberTypeConfigs.description,
+ delimiter: documentNumberTypeConfigs.delimiter,
remark: documentNumberTypeConfigs.remark,
isActive: documentNumberTypeConfigs.isActive,
createdAt: documentNumberTypeConfigs.createdAt,
diff --git a/lib/docu-list-rule/number-type-configs/table/number-type-configs-table-columns.tsx b/lib/docu-list-rule/number-type-configs/table/number-type-configs-table-columns.tsx
index 260c50cd..27a9f707 100644
--- a/lib/docu-list-rule/number-type-configs/table/number-type-configs-table-columns.tsx
+++ b/lib/docu-list-rule/number-type-configs/table/number-type-configs-table-columns.tsx
@@ -64,6 +64,19 @@ export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<NumberT
minSize: 50
},
{
+ accessorKey: "delimiter",
+ enableResizing: true,
+ header: ({ column }) => (
+ <DataTableColumnHeaderSimple column={column} title="delimiter" />
+ ),
+ meta: {
+ excelHeader: "delimiter",
+ type: "text",
+ },
+ cell: ({ row }) => row.getValue("delimiter") ?? "",
+ minSize: 50
+ },
+ {
accessorKey: "codeGroupName",
enableResizing: true,
header: ({ column }) => (
diff --git a/lib/docu-list-rule/number-types/service.ts b/lib/docu-list-rule/number-types/service.ts
index 3fb51abd..c4a0cdac 100644
--- a/lib/docu-list-rule/number-types/service.ts
+++ b/lib/docu-list-rule/number-types/service.ts
@@ -524,4 +524,22 @@ export async function getNumberTypesWithConfigs(input: {
pageCount: 0,
}
}
-} \ No newline at end of file
+}
+
+export async function checkNumberTypesExist(projectId: number, names: string[]): Promise<boolean> {
+ try {
+ const existing = await db
+ .select({ name: documentNumberTypes.name })
+ .from(documentNumberTypes)
+ .where(and(
+ eq(documentNumberTypes.projectId, projectId),
+ inArray(documentNumberTypes.name, names)
+ ))
+
+ // 모든 name이 존재하는지 체크
+ return existing.length === names.length
+ } catch (error) {
+ console.error("Error checking number types:", error)
+ return false
+ }
+} \ No newline at end of file
diff --git a/lib/docu-list-rule/number-types/table/number-type-initialize-button.tsx b/lib/docu-list-rule/number-types/table/number-type-initialize-button.tsx
new file mode 100644
index 00000000..904cdda5
--- /dev/null
+++ b/lib/docu-list-rule/number-types/table/number-type-initialize-button.tsx
@@ -0,0 +1,99 @@
+// number-type-initialize-button.tsx
+"use client"
+
+import * as React from "react"
+import { Button } from "@/components/ui/button"
+import { Plus } from "lucide-react"
+import { toast } from "sonner"
+import { createNumberType } from "@/lib/docu-list-rule/number-types/service"
+import { useParams } from "next/navigation"
+import { checkNumberTypesExist } from "@/lib/docu-list-rule/number-types/service"
+
+interface NumberTypeInitializeButtonProps {
+ onSuccess: () => void
+}
+
+export function NumberTypeInitializeButton({ onSuccess }: NumberTypeInitializeButtonProps) {
+ const params = useParams()
+ const projectId = Number(params?.projectId)
+ const [loading, setLoading] = React.useState(false)
+ const [isInitialized, setIsInitialized] = React.useState(false)
+
+ console.log(projectId,"projectId")
+
+ // 컴포넌트 마운트 시 이미 존재하는지 체크
+ React.useEffect(() => {
+ const checkExisting = async () => {
+ if (!projectId) return
+
+ const exists = await checkNumberTypesExist(projectId, ["SHI", "CPY"])
+ setIsInitialized(exists)
+ }
+
+ checkExisting()
+ }, [projectId])
+
+ const handleInitialize = async () => {
+ if (isInitialized) return
+
+ setLoading(true)
+ try {
+ const numberTypes = [
+ {
+ projectId: projectId,
+ name: "SHI",
+ description: "삼성중공업 도서번호",
+ },
+ {
+ projectId: projectId,
+ name: "CPY",
+ description: "프로젝트 문서번호",
+ }
+ ]
+
+ let allSuccess = true
+ let createdCount = 0
+
+ for (const numberType of numberTypes) {
+ const result = await createNumberType(numberType)
+
+ if (result.success) {
+ createdCount++
+ } else if (result.error?.includes("already exists")) {
+ // 이미 존재하는 경우는 무시
+ continue
+ } else {
+ allSuccess = false
+ toast.error(`${numberType.name} 생성 실패: ${result.error}`)
+ }
+ }
+
+ if (createdCount > 0) {
+ toast.success(`${createdCount}개의 Number Type이 생성되었습니다.`)
+ setIsInitialized(true)
+ onSuccess()
+ } else if (allSuccess) {
+ toast.info("이미 모든 Number Type이 존재합니다.")
+ setIsInitialized(true)
+ }
+
+ } catch (error) {
+ console.error("Number Type 초기화 실패:", error)
+ toast.error("Number Type 초기화에 실패했습니다.")
+ } finally {
+ setLoading(false)
+ }
+ }
+
+ return (
+ <Button
+ variant="outline"
+ size="sm"
+ onClick={handleInitialize}
+ disabled={loading || isInitialized}
+ >
+ <Plus className="mr-2 h-4 w-4" />
+ {loading ? "초기화 중..." : isInitialized ? "초기화 완료" : "기본 Type 생성"}
+ </Button>
+ )
+} \ No newline at end of file
diff --git a/lib/docu-list-rule/number-types/table/number-types-table-columns.tsx b/lib/docu-list-rule/number-types/table/number-types-table-columns.tsx
index 59403f3d..56708f57 100644
--- a/lib/docu-list-rule/number-types/table/number-types-table-columns.tsx
+++ b/lib/docu-list-rule/number-types/table/number-types-table-columns.tsx
@@ -159,6 +159,6 @@ export function getColumns({ setRowAction }: GetColumnsProps): ColumnDef<NumberT
return [
selectColumn,
...dataColumns,
- actionsColumn,
+ // actionsColumn,
]
} \ No newline at end of file
diff --git a/lib/docu-list-rule/number-types/table/number-types-table-toolbar.tsx b/lib/docu-list-rule/number-types/table/number-types-table-toolbar.tsx
index 3d2d9312..863088de 100644
--- a/lib/docu-list-rule/number-types/table/number-types-table-toolbar.tsx
+++ b/lib/docu-list-rule/number-types/table/number-types-table-toolbar.tsx
@@ -1,3 +1,4 @@
+// number-types-table-toolbar-actions.tsx
"use client"
import * as React from "react"
@@ -7,7 +8,7 @@ import { Download } from "lucide-react"
import { exportTableToExcel } from "@/lib/export"
import { Button } from "@/components/ui/button"
import { DeleteNumberTypesDialog } from "@/lib/docu-list-rule/number-types/table/delete-number-types-dialog"
-import { NumberTypeAddDialog } from "@/lib/docu-list-rule/number-types/table/number-type-add-dialog"
+import { NumberTypeInitializeButton } from "@/lib/docu-list-rule/number-types/table/number-type-initialize-button"
import { documentNumberTypes } from "@/db/schema/docu-list-rule"
// Number Type with configs 타입 정의
@@ -39,8 +40,8 @@ export function NumberTypesTableToolbarActions({ table, onSuccess }: NumberTypes
/>
) : null}
- <NumberTypeAddDialog onSuccess={onSuccess || (() => {})} />
-
+ {/** 2) 기본 Type 생성 버튼 */}
+ <NumberTypeInitializeButton onSuccess={onSuccess || (() => {})} />
</div>
)
-} \ No newline at end of file
+} \ No newline at end of file