# 모바일 필터 공통화 마이그레이션 체크리스트

> **작업 내용**: `IntegratedListTemplateV2` 사용 페이지에 `filterConfig` 방식 모바일 필터 적용
> **시작일**: 2026-01-13
> **완료 기준**: 모든 테이블 리스트 페이지에서 모바일 바텀시트 필터가 정상 동작

---

## ✅ 이미 완료된 페이지 (6개)

- [x] 발주관리 (`OrderManagementListClient.tsx`) - filterConfig 방식
- [x] 기성청구관리 (`ProgressBillingManagementListClient.tsx`) - filterConfig 방식
- [x] 공과관리 (`UtilityManagementListClient.tsx`) - filterConfig 방식
- [x] 시공관리 (`ConstructionManagementListClient.tsx`) - filterConfig 방식 ✨변경
- [x] 거래처관리 (`PartnerListClient.tsx`) - filterConfig 방식 ✨신규

---

## 🏗️ 건설 도메인 (12개) ✅ 완료

### 입찰관리
- [x] 현장설명회관리 (`SiteBriefingListClient.tsx`)
- [x] 견적관리 (`EstimateListClient.tsx`)
- [x] 입찰관리 (`BiddingListClient.tsx`)

### 계약관리
- [x] 계약관리 (`ContractListClient.tsx`)
- [x] 인수인계보고서 (`HandoverReportListClient.tsx`)

### 발주관리
- [x] 현장관리 (`SiteManagementListClient.tsx`)
- [x] 구조검토관리 (`StructureReviewListClient.tsx`)

### 공사관리
- [x] 이슈관리 (`IssueManagementListClient.tsx`)
- [x] 작업인력현황 (`WorkerStatusListClient.tsx`)

### 기준정보
- [x] 품목관리 (`ItemManagementClient.tsx`)
- [x] 단가관리 (`PricingListClient.tsx`)
- [x] 노임관리 (`LaborManagementClient.tsx`)

---

## 👥 HR 도메인 (5개) ✅ 완료

- [x] 급여관리 (`hr/SalaryManagement/index.tsx`)
- [x] 사원관리 (`hr/EmployeeManagement/index.tsx`)
- [x] 휴가관리 (`hr/VacationManagement/index.tsx`)
- [x] 근태관리 (`hr/AttendanceManagement/index.tsx`)
- [x] 카드관리 (`hr/CardManagement/index.tsx`) - 필터 없음, 변경 불필요

---

## 💰 회계 도메인 (14개)

- [ ] 거래처관리 (`accounting/VendorManagement/index.tsx`)
- [ ] 매입관리 (`accounting/PurchaseManagement/index.tsx`)
- [ ] 매출관리 (`accounting/SalesManagement/index.tsx`)
- [ ] 입금관리 (`accounting/DepositManagement/index.tsx`)
- [ ] 출금관리 (`accounting/WithdrawalManagement/index.tsx`)
- [ ] 어음관리 (`accounting/BillManagement/index.tsx`)
- [ ] 거래처원장 (`accounting/VendorLedger/index.tsx`)
- [ ] 지출예상내역서 (`accounting/ExpectedExpenseManagement/index.tsx`)
- [ ] 입출금계좌조회 (`accounting/BankTransactionInquiry/index.tsx`)
- [ ] 카드내역조회 (`accounting/CardTransactionInquiry/index.tsx`)
- [ ] 악성채권추심 (`accounting/BadDebtCollection/index.tsx`)

---

## 📦 생산/자재/품질/출고 도메인 (6개)

- [ ] 작업지시관리 (`production/WorkOrders/WorkOrderList.tsx`)
- [ ] 작업실적조회 (`production/WorkResults/WorkResultList.tsx`)
- [ ] 재고현황 (`material/StockStatus/StockStatusList.tsx`)
- [ ] 입고관리 (`material/ReceivingManagement/ReceivingList.tsx`)
- [ ] 검사관리 (`quality/InspectionManagement/InspectionList.tsx`)
- [ ] 출하관리 (`outbound/ShipmentManagement/ShipmentList.tsx`)

---

## 📝 전자결재 도메인 (3개)

- [ ] 기안함 (`approval/DraftBox/index.tsx`)
- [ ] 결재함 (`approval/ApprovalBox/index.tsx`)
- [ ] 참조함 (`approval/ReferenceBox/index.tsx`)

---

## ⚙️ 설정 도메인 (4개)

- [ ] 계좌관리 (`settings/AccountManagement/index.tsx`)
- [ ] 팝업관리 (`settings/PopupManagement/PopupList.tsx`)
- [ ] 결제내역 (`settings/PaymentHistoryManagement/index.tsx`)
- [ ] 권한관리 (`settings/PermissionManagement/index.tsx`)

---

## 📋 기타 도메인 (9개)

- [ ] 품목기준관리 (`items/ItemListClient.tsx`)
- [ ] 견적관리 (`quotes/QuoteManagementClient.tsx`)
- [ ] 단가관리-일반 (`pricing/PricingListClient.tsx`)
- [ ] 공정관리 (`process-management/ProcessListClient.tsx`)
- [ ] 게시판목록 (`board/BoardList/index.tsx`)
- [ ] 게시판관리 (`board/BoardManagement/index.tsx`)
- [ ] 공지사항 (`customer-center/NoticeManagement/NoticeList.tsx`)
- [ ] 이벤트 (`customer-center/EventManagement/EventList.tsx`)
- [ ] 1:1문의 (`customer-center/InquiryManagement/InquiryList.tsx`)

---

## 📊 진행 현황

| 도메인 | 완료 | 전체 | 진행률 |
|--------|------|------|--------|
| 건설 (기완료) | 6 | 6 | 100% |
| 건설 (마이그레이션) | 12 | 12 | 100% ✅ |
| HR | 5 | 5 | 100% ✅ |
| 회계 | 0 | 11 | 0% |
| 생산/자재/품질/출고 | 0 | 6 | 0% |
| 전자결재 | 0 | 3 | 0% |
| 설정 | 0 | 4 | 0% |
| 기타 | 0 | 9 | 0% |
| **총계** | **23** | **56** | **41%** |

---

## 작업 방법

각 페이지에 다음 패턴으로 `filterConfig` 추가:

```tsx
// 1. filterConfig 정의
const filterConfig: FilterFieldConfig[] = useMemo(() => [
  { key: 'field1', label: '필드1', type: 'multi', options: field1Options },
  { key: 'field2', label: '필드2', type: 'single', options: field2Options },
], [field1Options, field2Options]);

// 2. filterValues 객체
const filterValues: FilterValues = useMemo(() => ({
  field1: field1Filters,
  field2: field2Filter,
}), [field1Filters, field2Filter]);

// 3. handleFilterChange 함수
const handleFilterChange = useCallback((key: string, value: string | string[]) => {
  switch (key) {
    case 'field1': setField1Filters(value as string[]); break;
    case 'field2': setField2Filter(value as string); break;
  }
  setCurrentPage(1);
}, []);

// 4. handleFilterReset 함수
const handleFilterReset = useCallback(() => {
  setField1Filters([]);
  setField2Filter('all');
  setCurrentPage(1);
}, []);

// 5. IntegratedListTemplateV2에 props 전달
<IntegratedListTemplateV2
  filterConfig={filterConfig}
  filterValues={filterValues}
  onFilterChange={handleFilterChange}
  onFilterReset={handleFilterReset}
  filterTitle="페이지명 필터"
  // ... 기존 props
/>
```

---

## 변경 이력

| 날짜 | 작업 내용 |
|------|----------|
| 2026-01-13 | 체크리스트 문서 생성, MobileFilter 스크롤 버그 수정 |
| 2026-01-13 | 시공관리 mobileFilterSlot → filterConfig 방식으로 변경, 협력업체관리 filterConfig 적용 |
| 2026-01-13 | 건설 도메인 12개 파일 마이그레이션 완료 (SiteBriefing, Estimate, Bidding, Contract, HandoverReport, SiteManagement, StructureReview, IssueManagement, WorkerStatus, ItemManagement, Pricing, LaborManagement) |
