summaryrefslogtreecommitdiff
path: root/lib/dolce/dialogs/b4-upload-validation-dialog.tsx
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-11-24 18:38:08 +0900
committerjoonhoekim <26rote@gmail.com>2025-11-24 18:38:08 +0900
commit57e3a696f4bdee665cf592463acf48ba83a6e2cd (patch)
treee5888ffecd7043c50e429431ab594f4b2dd0a099 /lib/dolce/dialogs/b4-upload-validation-dialog.tsx
parente6c637e16550437ac0ecd58c79ce62a4fe397fb7 (diff)
(김준회) dolce rebuild: 파일 업로드 개선, b4 일괄업로드 문서명 파싱 문제 해결
Diffstat (limited to 'lib/dolce/dialogs/b4-upload-validation-dialog.tsx')
-rw-r--r--lib/dolce/dialogs/b4-upload-validation-dialog.tsx30
1 files changed, 19 insertions, 11 deletions
diff --git a/lib/dolce/dialogs/b4-upload-validation-dialog.tsx b/lib/dolce/dialogs/b4-upload-validation-dialog.tsx
index b274d604..f3a7c70a 100644
--- a/lib/dolce/dialogs/b4-upload-validation-dialog.tsx
+++ b/lib/dolce/dialogs/b4-upload-validation-dialog.tsx
@@ -39,8 +39,11 @@ interface B4UploadValidationDialogProps {
/**
* B4 파일명 검증 함수
- * 형식: [버림] [DrawingNo] [RevNo].[확장자]
- * 예시: "testfile GTT-DE-007 R01.pdf" → DrawingNo: "GTT-DE-007", RevNo: "R01"
+ * 형식: [버림] [문서번호토큰1] [문서번호토큰2] ... [리비전번호].[확장자]
+ * 예시: "testfile GTT DE 007 R01.pdf" → DrawingNo: "GTT-DE-007", RevNo: "R01"
+ * - 첫 번째 토큰은 버림
+ * - 마지막 토큰은 RevNo
+ * - 중간 토큰들을 "-"로 연결하여 DrawingNo 생성
*/
export function validateB4FileName(fileName: string): {
valid: boolean;
@@ -57,23 +60,25 @@ export function validateB4FileName(fileName: string): {
};
}
- const extension = fileName.substring(lastDotIndex + 1);
const nameWithoutExt = fileName.substring(0, lastDotIndex);
// 공백으로 분리
const parts = nameWithoutExt.split(" ").filter(p => p.trim() !== "");
- // 최소 3개 파트 필요: [버림], DrawingNo, RevNo
+ // 최소 3개 파트 필요: [버림], [문서번호토큰], [RevNo]
if (parts.length < 3) {
return {
valid: false,
- error: `공백이 최소 2개 있어야 합니다 (현재: ${parts.length - 1}개). 형식: [버림] [DrawingNo] [RevNo].[확장자]`,
+ error: `공백이 최소 2개 있어야 합니다 (현재: ${parts.length - 1}개). 형식: [버림] [문서번호토큰들...] [RevNo].[확장자]`,
};
}
// 첫 번째 토큰은 버림
- const drawingNo = parts[1];
- const revNo = parts[2];
+ // 마지막 토큰은 RevNo
+ // 중간 토큰들을 "-"로 연결하여 DrawingNo 생성
+ const revNo = parts[parts.length - 1];
+ const drawingTokens = parts.slice(1, parts.length - 1);
+ const drawingNo = drawingTokens.join("-");
// 필수 항목이 비어있지 않은지 확인
if (!drawingNo || drawingNo.trim() === "") {
@@ -307,16 +312,19 @@ export function B4UploadValidationDialog({
📋 올바른 파일명 형식
</div>
<code className="text-xs text-blue-700 dark:text-blue-300">
- [버림] [DrawingNo] [RevNo].[확장자]
+ [버림] [문서번호토큰1] [문서번호토큰2] ... [RevNo].[확장자]
</code>
<div className="text-xs text-blue-600 dark:text-blue-400 mt-1">
- 예: testfile GTT-DE-007 R01.pdf
+ 예: testfile GTT DE 007 R01.pdf → DrawingNo: GTT-DE-007, Rev: R01
</div>
<div className="text-xs text-blue-600 dark:text-blue-400 mt-1">
- ※ 첫 번째 단어는 무시되며, 공백으로 구분됩니다
+ ※ 첫 번째 단어는 무시됩니다
</div>
<div className="text-xs text-blue-600 dark:text-blue-400 mt-1">
- ※ 네 번째 이상의 단어가 있으면 무시됩니다
+ ※ 마지막 단어는 리비전 번호(RevNo)입니다
+ </div>
+ <div className="text-xs text-blue-600 dark:text-blue-400 mt-1">
+ ※ 중간의 모든 단어는 &quot;-&quot;로 연결되어 문서번호(DrawingNo)가 됩니다
</div>
</div>
</div>