- claudedocs 폴더 구조 재정리: archive/sessions, guides/migration·mobile·universal-list, refactoring 분류 - 오래된 세션 컨텍스트/체크리스트 문서 정리 (아카이브 이동 또는 삭제) - AuthContext → authStore(Zustand) 전환 시작, RootProvider 간소화 - GenericCRUDDialog 공통 다이얼로그 컴포넌트 추가 - PermissionDialog 삭제 → GenericCRUDDialog로 대체 - RankDialog/TitleDialog GenericCRUDDialog 기반으로 리팩토링 - toast-utils.ts 삭제 (미사용) - fileDownload.ts 개선, excel-download.ts 정리 - menuStore/themeStore Zustand 셀렉터 최적화 - useColumnSettings/useTableColumnStore 기능 보강 - 세금계산서/견적/작업자화면/결재 등 소규모 개선 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.2 KiB
5.2 KiB
E2E 잔여 버그 전달 사항
작성일: 2026-02-23
근거: sam-hotfix/e2e/results/hotfix/HOTFIX-REPORT_dev-team_2026-02-20.md
프론트엔드 수정 완료 (3건 + 1건)
| Bug ID | 내용 | 수정 상태 |
|---|---|---|
| BUG-SORT-001 | 컬럼 정렬 미구현 (14개 페이지) | ✅ 완료 |
| BUG-FILTER-001 | 매출관리 필터 미동작 | ✅ 완료 |
| BUG-REDIRECT-001 | 어음/입금 등록 후 리다이렉트 | ✅ 완료 |
| BUG-BATCH-DELETE-001 (입금) | 삭제 후 빈 페이지 표시 | ✅ 완료 (UniversalListPage 공통 수정) |
QA팀 확인 요청 (1건)
BUG-BATCH-DELETE-001 (어음관리) — E2E 테스트 패턴 불일치
현상: batch-create-acc-bills 시나리오에서 VERIFY 단계 FAIL (기대 3건, 실제 0건)
원인 분석:
- E2E 테스트가
E2E_TEST_어음_{timestamp}패턴으로 데이터를 검색 - 그러나 실제 어음번호는 프론트엔드에서
E2E_TEST_EB접두사로 생성됨 - 백엔드 API 확인 결과:
BillService.php:106에서bill_number를 프론트가 보낸 그대로 저장 (변환 없음) StoreBillRequest.php검증:nullable|string|max:50— 접두사 제한 없음
결론: API는 정상. E2E 테스트 스크립트의 검색 패턴(E2E_TEST_어음_)이 실제 생성 데이터 패턴(E2E_TEST_EB)과 불일치
요청 사항:
- E2E 테스트의 어음번호 검색 패턴을 실제 프론트엔드가 생성하는 패턴에 맞게 수정
- 또는 프론트엔드 어음 등록 폼에서 E2E 테스트 시 사용하는 어음번호 필드값 확인
백엔드팀 수정 요청 (1건)
BUG-PERF-001 — 품목관리 API 성능 문제 (10초+ 지연)
현상: 생산관리 > 품목관리 (/api/v1/items) 테이블 로드 10초 타임아웃
원인 분석 (sam-api 코드 확인):
병목 1: getItemsWithInspectionTemplate() — 전체 테이블 스캔 (5-8초)
파일: app/Services/ItemService.php (lines 1024-1060)
$templates = \DB::table('document_templates')
->where('tenant_id', $tenantId)
->where('is_active', true)
->whereNotNull('linked_item_ids')
->where(function ($q) use ($categoryCode, $categoryName) {
$q->where('category', $categoryCode)
->orWhere('category', $categoryName)
->orWhere('category', 'LIKE', "%{$categoryName}%");
})
->get(['linked_item_ids']); // ← limit 없이 전체 로드
linked_item_ids는 JSON 컬럼 → 인덱스 불가- 페이지에 20개만 표시하는데 모든 document_templates 로드 후 PHP에서 수동 매칭
- 템플릿 수가 많을수록 지연 증가
병목 2: N+1 쿼리 (2-3초)
파일: app/Services/ItemService.php (lines 376-390)
->with(['category:id,name', 'details', 'files']);
details(hasOne): 아이템당 1쿼리 → 20개 = 20쿼리files(hasMany + document_type 필터): 아이템당 1쿼리 → 20개 = 20쿼리- 합계: ~40개 추가 쿼리
병목 3: 누락 인덱스
files테이블:document_id+document_type복합 인덱스 없음document_templates테이블:linked_item_idsJSON 인덱스 없음
예상 총 지연: ~9-11초 (E2E 10초 타임아웃과 일치)
수정 제안:
getItemsWithInspectionTemplate()에서 필요한item_id목록만 IN 조건으로 조회하도록 변경files,item_details테이블에 적절한 인덱스 추가- Eager loading 최적화 (
with절에 필요한 컬럼만 select)
백엔드팀 참고 — 신규 리그레션 2건 (API 서버 상태)
리그레션 리포트(REGRESSION-REPORT_dev-team_2026-02-20.md)에서 발견된 신규 이슈.
3차 테스트에서 PASS → 4차(Pull 후) FAIL로 전환된 건으로, 서버 상태 확인 필요.
BUG-REGRESSION-001: 입금관리 CRUD 실패 (API 500 에러)
- 시나리오:
create-delete-acc-deposit - 증상: 다수 API 500 에러 (Welfare, Calendar, TodayIssue API)
- API 평균 응답: 3,574ms (통상 84ms의 42배)
- 테이블: 0건 로드 (데이터 로드 실패)
BUG-REGRESSION-002: 자유게시판 CRUD 실패 (API 극심한 지연)
- 시나리오:
create-delete-board - 증상: vendorId 옵션 로드 실패, 테이블 로드 5초 타임아웃
- API 평균 응답: 7,752ms (통상 84ms의 92배)
- 에러:
Failed to load options for vendorId: TypeError: Failed to fetch
공통 추정 원인: Pull 이후 API 서버 불안정 (500 에러, fetch 실패 다수)
재검증 명령
# 전체 재검증
node C:/Users/codeb/sam/e2e/runner/run-all.js
# 버그별 개별 검증
node C:/Users/codeb/sam/e2e/runner/run-all.js --filter pagination-sort # BUG-SORT-001 ← 프론트 수정 완료
node C:/Users/codeb/sam/e2e/runner/run-all.js --filter search-filter # BUG-FILTER-001 ← 프론트 수정 완료
node C:/Users/codeb/sam/e2e/runner/run-all.js --filter reload-persist # BUG-REDIRECT-001 ← 프론트 수정 완료
node C:/Users/codeb/sam/e2e/runner/run-all.js --filter batch-create # BUG-BATCH-DELETE-001 ← 프론트 일부 수정 + QA 테스트 패턴 확인
node C:/Users/codeb/sam/e2e/runner/run-all.js --filter workflow # BUG-PERF-001 ← 백엔드 수정 필요