From 7827446e923e725db30ce2e849f5698d6bcfdeea Mon Sep 17 00:00:00 2001
From: joonhoekim <26rote@gmail.com>
Date: Tue, 4 Nov 2025 14:37:22 +0900
Subject: (김준회) bulk b4 upload 프로젝트 목록 문제(페이지네이션 내부 데이터로
 한정되는 문제) 및 이모지 제거, change_logs 미반영 오류 처리
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ship/enhanced-documents-table.tsx              | 35 +++++++++++-----------
 1 file changed, 18 insertions(+), 17 deletions(-)

(limited to 'lib/vendor-document-list/ship/enhanced-documents-table.tsx')

diff --git a/lib/vendor-document-list/ship/enhanced-documents-table.tsx b/lib/vendor-document-list/ship/enhanced-documents-table.tsx
index d92f16dd..3eda0ffb 100644
--- a/lib/vendor-document-list/ship/enhanced-documents-table.tsx
+++ b/lib/vendor-document-list/ship/enhanced-documents-table.tsx
@@ -20,7 +20,7 @@ import { getSimplifiedDocumentColumns } from "./enhanced-doc-table-columns"
 import { EnhancedDocTableToolbarActions } from "./enhanced-doc-table-toolbar-actions"
 import { useQueryStates, parseAsString, parseAsStringEnum, parseAsInteger } from "nuqs"
 
-// 🔥 Project Code 필터를 위한 Select 컴포넌트 import 추가
+// Project Code 필터를 위한 Select 컴포넌트 import 추가
 import {
   Select,
   SelectContent,
@@ -60,18 +60,18 @@ export function SimplifiedDocumentsTable({
   allPromises,
   onDataLoaded,
 }: SimplifiedDocumentsTableProps) {
-  // 🔥 React.use() 결과를 안전하게 처리
+  // React.use() 결과를 안전하게 처리
   const promiseResults = React.use(allPromises)
   const [documentResult, statsResult] = promiseResults
   
-  // 🔥 데이터 구조분해를 메모이제이션
+  // 데이터 구조분해를 메모이제이션
   const documentData = React.useMemo(() => documentResult as Awaited<ReturnType<typeof getUserVendorDocuments>>, [documentResult])
   const statsData = React.useMemo(() => statsResult as Awaited<ReturnType<typeof getUserVendorDocumentStats>>, [statsResult])
   
   const { data, pageCount, drawingKind } = documentData
   const { primaryDrawingKind, projectCodeStats: serverProjectCodeStats, projectB4Stats: serverProjectB4Stats } = statsData
 
-  // 🔥 URL searchParams를 통한 필터 상태 관리
+  // URL searchParams를 통한 필터 상태 관리
   const [{ b4FilterType, projectCode, page }, setQueryStates] = useQueryStates(
     {
       b4FilterType: parseAsStringEnum<'all' | 'gtt_deliverable' | 'shi_input'>(['all', 'gtt_deliverable', 'shi_input']).withDefault('all'),
@@ -88,25 +88,25 @@ export function SimplifiedDocumentsTable({
   // eslint-disable-next-line @typescript-eslint/no-unused-vars
   const _ensurePageIsInState = page
 
-  // 🔥 서버에서 받아온 프로젝트 코드 통계 사용 (필터링과 무관한 전체 통계)
+  // 서버에서 받아온 프로젝트 코드 통계 사용 (필터링과 무관한 전체 통계)
   const projectCodeStats = React.useMemo(() => {
     return serverProjectCodeStats || []
   }, [serverProjectCodeStats])
 
-  // 🔥 데이터 로드 콜백 (서버에서 이미 필터링되어 옴)
+  // 데이터 로드 콜백 (서버에서 이미 필터링되어 옴)
   React.useEffect(() => {
     if (data && onDataLoaded) {
       onDataLoaded(data)
     }
   }, [data, onDataLoaded])
 
-  // 🔥 컬럼 메모이제이션 최적화 (b4FilterType에 따라 동적 변경)
+  // 컬럼 메모이제이션 최적화 (b4FilterType에 따라 동적 변경)
   const columns = React.useMemo(
     () => getSimplifiedDocumentColumns({ b4FilterType }),
     [b4FilterType]
   )
 
-  // 🔥 필터 필드들을 메모이제이션
+  // 필터 필드들을 메모이제이션
   const advancedFilterFields: DataTableAdvancedFilterField<SimplifiedDocumentsView>[] = React.useMemo(() => [
     {
       id: "docNumber",
@@ -206,7 +206,7 @@ export function SimplifiedDocumentsTable({
     },
   ], [])
 
-  // 🔥 B4 전용 필드들 메모이제이션
+  // B4 전용 필드들 메모이제이션
   const b4FilterFields: DataTableAdvancedFilterField<SimplifiedDocumentsView>[] = React.useMemo(() => [
     {
       id: "cGbn",
@@ -240,23 +240,23 @@ export function SimplifiedDocumentsTable({
     },
   ], [])
 
-  // 🔥 B4 문서 존재 여부 체크 메모이제이션
+  // B4 문서 존재 여부 체크 메모이제이션
   const hasB4Documents = React.useMemo(() => {
     return data.some((doc: SimplifiedDocumentsView) => doc.drawingKind === 'B4')
   }, [data])
 
-  // 🔥 최종 필터 필드 메모이제이션
+  // 최종 필터 필드 메모이제이션
   const finalFilterFields = React.useMemo(() => {
     return hasB4Documents ? [...advancedFilterFields, ...b4FilterFields] : advancedFilterFields
   }, [hasB4Documents, advancedFilterFields, b4FilterFields])
 
-  // 🔥 테이블 초기 상태 메모이제이션
+  // 테이블 초기 상태 메모이제이션
   const tableInitialState = React.useMemo(() => ({
     sorting: [{ id: "createdAt" as const, desc: true }],
     columnPinning: { right: ["actions"] },
   }), [])
 
-  // 🔥 getRowId 함수 메모이제이션
+  // getRowId 함수 메모이제이션
   const getRowId = React.useCallback((originalRow: SimplifiedDocumentsView) => String(originalRow.documentId), [])
 
   const { table } = useDataTable({
@@ -272,17 +272,17 @@ export function SimplifiedDocumentsTable({
     columnResizeMode: "onEnd",
   })
 
-  // 🔥 활성 drawingKind 메모이제이션
+  // 활성 drawingKind 메모이제이션
   const activeDrawingKind = React.useMemo(() => {
     return drawingKind || primaryDrawingKind
   }, [drawingKind, primaryDrawingKind])
 
-  // 🔥 kindInfo 메모이제이션
+  // kindInfo 메모이제이션
   const kindInfo = React.useMemo(() => {
     return activeDrawingKind ? DRAWING_KIND_INFO[activeDrawingKind] : null
   }, [activeDrawingKind])
 
-  // 🔥 B4 문서 통계 - 프로젝트 필터링에 따라 동적으로 계산 (서버에서 받아온 전체 통계 기반)
+  // B4 문서 통계 - 프로젝트 필터링에 따라 동적으로 계산 (서버에서 받아온 전체 통계 기반)
   const b4Stats = React.useMemo(() => {
     if (!hasB4Documents || !serverProjectB4Stats) return null
 
@@ -324,7 +324,7 @@ export function SimplifiedDocumentsTable({
         </div>
       )}
 
-      {/* 🔥 필터 섹션 - Project Code 필터와 B4 필터를 함께 배치 */}
+      {/* 필터 섹션 - Project Code 필터와 B4 필터를 함께 배치 */}
       <div className="space-y-3">
         {/* Project Code 필터 드롭다운 */}
         <div className="flex items-center gap-3 p-4 bg-muted/30 rounded-lg">
@@ -425,6 +425,7 @@ export function SimplifiedDocumentsTable({
               table={table}
               projectType="ship"
               b4={hasB4Documents && b4FilterType === 'gtt_deliverable'}
+              projectCodeStats={projectCodeStats}
             />
           </DataTableAdvancedToolbar>
         </DataTable>
-- 
cgit v1.2.3

