summaryrefslogtreecommitdiff
path: root/lib/docu-list-rule/utils.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/docu-list-rule/utils.ts')
-rw-r--r--lib/docu-list-rule/utils.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/docu-list-rule/utils.ts b/lib/docu-list-rule/utils.ts
new file mode 100644
index 00000000..ddeb5e6d
--- /dev/null
+++ b/lib/docu-list-rule/utils.ts
@@ -0,0 +1,60 @@
+// docu-list-rule 모듈 공통 유틸리티 함수들
+
+/**
+ * Code Group ID에서 다음 번호를 생성하는 함수
+ * DOC_CLASS는 제외하고 계산
+ */
+export function generateNextCodeGroupId(lastGroupId: string): string {
+ if (!lastGroupId.startsWith('GROUP')) {
+ return 'GROUP001'
+ }
+
+ const numberPart = lastGroupId.substring(5)
+ const nextNumber = parseInt(numberPart) + 1
+ return `GROUP${nextNumber.toString().padStart(3, '0')}`
+}
+
+/**
+ * Document Class Code에서 다음 번호를 생성하는 함수
+ */
+export function generateNextDocumentClassCode(lastCode: string): string {
+ if (!lastCode.startsWith('DOC_CLASS_')) {
+ return 'DOC_CLASS_001'
+ }
+
+ const numberPart = lastCode.substring(10)
+ const nextNumber = parseInt(numberPart) + 1
+ return `DOC_CLASS_${nextNumber.toString().padStart(3, '0')}`
+}
+
+/**
+ * Number Type Config에서 다음 SDQ를 생성하는 함수
+ */
+export function generateNextSdq(configs: Array<{ sdq: number }>): number {
+ if (configs.length === 0) {
+ return 1
+ }
+
+ const maxSdq = Math.max(...configs.map(config => config.sdq))
+ return maxSdq + 1
+}
+
+/**
+ * 활성화된 항목만 필터링하는 함수
+ */
+export function filterActiveItems<T extends { isActive: boolean }>(items: T[]): T[] {
+ return items.filter(item => item.isActive)
+}
+
+/**
+ * 날짜를 포맷팅하는 함수
+ */
+export function formatDate(date: Date): string {
+ return new Intl.DateTimeFormat('ko-KR', {
+ year: 'numeric',
+ month: '2-digit',
+ day: '2-digit',
+ hour: '2-digit',
+ minute: '2-digit'
+ }).format(date)
+} \ No newline at end of file