- 루트 문서 30개를 도메인별 하위 폴더로 이동 - accounting/, architecture/, dev/, guides/, security/ 등 카테고리 분류 - archive/ 폴더에 QA 스크린샷 이동 - _index.md 문서 맵 업데이트 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8.8 KiB
8.8 KiB
리스트 페이지 UI 표준화 체크리스트
📋 프로젝트 개요
- 목적: 모든 리스트 페이지에 공정관리/출금관리 UI 패턴 적용
- 시작일: 2025-01-26
- 프로토타입: ProcessListClient, WithdrawalManagement
🎯 적용 패턴
1. 검색창 패턴
dateRangeSelector: {
enabled: true,
showPresets: true,
startDate,
endDate,
onStartDateChange: setStartDate,
onEndDateChange: setEndDate,
extraActions: (
<div className="relative w-full xl:flex-1">
<Search className="absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground" />
<Input
type="text"
placeholder="검색..."
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
className="pl-9 w-full bg-white"
/>
</div>
),
},
hideSearch: true,
2. beforeTableContent 모바일 레이아웃
beforeTableContent: ({ selectedItems }) => (
<div className="flex flex-col xl:flex-row xl:items-center xl:justify-end w-full gap-3">
<div className="flex items-center justify-start xl:justify-end gap-2">
{/* 버튼들 */}
</div>
</div>
),
3. customFilterFn 방어적 코딩
customFilterFn: (items) => {
if (!items || items.length === 0) return items;
return items.filter((item) => {
// 필터 로직
});
},
그룹 A: DateRangeSelector 사용 페이지 (26개)
회계관리 (5개)
src/components/accounting/SalesManagement/index.tsxsrc/components/accounting/PurchaseManagement/index.tsxsrc/components/accounting/DepositManagement/index.tsxsrc/components/accounting/CardTransactionInquiry/index.tsxsrc/components/accounting/BadDebtCollection/index.tsx※dateRangeSelector 없음, customFilterFn만 수정
인사관리 (4개)
src/components/hr/EmployeeManagement/index.tsxsrc/components/hr/AttendanceManagement/index.tsxsrc/components/hr/SalaryManagement/index.tsxsrc/components/hr/VacationManagement/index.tsx※headerActions 패턴 사용
건설관리 (17개)
src/components/business/construction/bidding/BiddingListClient.tsxsrc/components/business/construction/contract/ContractListClient.tsxsrc/components/business/construction/estimates/EstimateListClient.tsxsrc/components/business/construction/handover-report/HandoverReportListClient.tsxsrc/components/business/construction/issue-management/IssueManagementListClient.tsxsrc/components/business/construction/item-management/ItemManagementClient.tsx※externalSearch 패턴 - hideSearch만 추가src/components/business/construction/labor-management/LaborManagementClient.tsxsrc/components/business/construction/management/ConstructionManagementListClient.tsx- [N/A]
src/components/business/construction/management/ProjectListClient.tsx※UniversalListPage 미사용 (커스텀 Gantt차트 구현) src/components/business/construction/order-management/OrderManagementListClient.tsxsrc/components/business/construction/partners/PartnerListClient.tsx※dateRangeSelector 없음, customFilterFn 방어코드만 추가src/components/business/construction/progress-billing/ProgressBillingManagementListClient.tsxsrc/components/business/construction/site-briefings/SiteBriefingListClient.tsxsrc/components/business/construction/site-management/SiteManagementListClient.tsxsrc/components/business/construction/structure-review/StructureReviewListClient.tsxsrc/components/business/construction/utility-management/UtilityManagementListClient.tsxsrc/components/business/construction/worker-status/WorkerStatusListClient.tsx
그룹 B: DateRangeSelector 미사용 페이지 (11개)
기준정보 (2개)
- [N/A]
src/components/items/ItemListClient.tsx※useItemList 훅 패턴, customFilterFn 없음 - [N/A]
src/components/pricing/PricingListClient.tsx※tabFilter/searchFilter 패턴, customFilterFn 없음
회계관리 (1개)
src/components/accounting/VendorManagement/index.tsx※customFilterFn 방어코드 추가
인사관리 (1개)
- [N/A]
src/components/hr/CardManagement/index.tsx※tabFilter/searchFilter 패턴, customFilterFn 없음
게시판 (1개)
- [N/A]
src/components/board/BoardManagement/index.tsx※tabFilter/searchFilter 패턴, customFilterFn 없음
설정 (2개)
- [N/A]
src/components/settings/PermissionManagement/index.tsx※externalSearch 패턴, customFilterFn 없음 - [N/A]
src/components/settings/AccountManagement/index.tsx※getList 내 검색 처리, customFilterFn 없음
고객센터 (3개)
src/components/customer-center/NoticeManagement/NoticeList.tsx※customFilterFn 방어코드 추가src/components/customer-center/InquiryManagement/InquiryList.tsx※customFilterFn 방어코드 추가src/components/customer-center/EventManagement/EventList.tsx※customFilterFn 방어코드 추가
그룹 C: IntegratedListTemplateV2 마이그레이션 (7개)
※ 분석 결과: 모두 UniversalListPage 이미 사용 중, customFilterFn 없거나 그룹 B에서 처리됨
- [N/A]
src/components/accounting/ExpectedExpenseManagement/index.tsx※이미 UniversalListPage, tableData에서 필터링 - [N/A]
src/components/accounting/BillManagement/index.tsx※이미 UniversalListPage, 서버 사이드 필터링 src/components/customer-center/NoticeManagement/NoticeList.tsx※그룹 B에서 처리됨src/components/customer-center/InquiryManagement/InquiryList.tsx※그룹 B에서 처리됨src/components/customer-center/EventManagement/EventList.tsx※그룹 B에서 처리됨- [N/A]
src/components/quotes/QuoteManagementClient.tsx※이미 UniversalListPage, tabFilter/searchFilter만 사용 - [N/A]
src/components/settings/PopupManagement/PopupList.tsx※이미 UniversalListPage, searchFilter만 사용
📊 진행 현황
| 그룹 | 총 개수 | 완료 | N/A | 진행률 |
|---|---|---|---|---|
| A | 26 | 25 | 1 | 100% |
| B | 11 | 4 | 7 | 100% |
| C | 7 | 3 | 4 | 100% |
| 합계 | 44 | 32 | 12 | 100% |
📝 작업 로그
2025-01-26
- 체크리스트 생성
- 프로토타입 분석 완료 (ProcessListClient, WithdrawalManagement)
- 그룹 A 회계관리 5개 완료:
- SalesManagement: extraActions 검색창, hideSearch, 모바일 레이아웃, 방어적 코딩
- PurchaseManagement: extraActions 검색창, hideSearch, 모바일 레이아웃, 방어적 코딩
- DepositManagement: extraActions 검색창, hideSearch, 모바일 레이아웃, 방어적 코딩
- CardTransactionInquiry: extraActions 검색창, hideSearch, 모바일 레이아웃, 방어적 코딩
- BadDebtCollection: 방어적 코딩만 (dateRangeSelector 없음)
- 그룹 A 인사관리 4개 완료:
- EmployeeManagement: extraActions 검색창, hideSearch, 방어적 코딩
- AttendanceManagement: extraActions 검색창, hideSearch, 방어적 코딩
- SalaryManagement: extraActions 검색창, hideSearch
- VacationManagement: headerActions 내 검색창, hideSearch (다른 구조 사용)
- 그룹 A 건설관리 16개 완료 (1개 N/A):
- BiddingListClient, ContractListClient, EstimateListClient, HandoverReportListClient: 전체 패턴 적용
- IssueManagementListClient, LaborManagementClient, ConstructionManagementListClient, OrderManagementListClient: 전체 패턴 적용
- ProgressBillingManagementListClient, SiteBriefingListClient, SiteManagementListClient: 전체 패턴 적용
- StructureReviewListClient, UtilityManagementListClient, WorkerStatusListClient: 전체 패턴 적용
- ItemManagementClient: externalSearch 패턴 사용 - hideSearch만 추가
- PartnerListClient: dateRangeSelector 없음 - 방어적 코딩만 추가
- ProjectListClient: UniversalListPage 미사용 (커스텀 Gantt차트) - 제외
- 그룹 B 분석 및 수정 완료 (11개 분석, 4개 수정):
- 대부분 tabFilter/searchFilter 또는 externalSearch 패턴 사용 (customFilterFn 없음)
- VendorManagement: customFilterFn 방어코드 추가
- NoticeList: customFilterFn 방어코드 추가
- InquiryList: customFilterFn 방어코드 추가
- EventList: customFilterFn 방어코드 추가
- N/A 처리: ItemListClient, PricingListClient, CardManagement, BoardManagement, PermissionManagement, AccountManagement (다른 패턴 사용)
- 그룹 C 분석 완료 (7개 분석):
- 모든 파일이 이미 UniversalListPage 사용 중 (IntegratedListTemplateV2 아님)
- NoticeList, InquiryList, EventList: 그룹 B에서 방어코드 추가됨
- ExpectedExpenseManagement, BillManagement: 서버 사이드/테이블 데이터 필터링 사용
- QuoteManagementClient, PopupList: tabFilter/searchFilter 패턴만 사용
- 프로젝트 완료: 총 44개 파일 분석, 32개 수정, 12개 N/A (다른 패턴 사용)