From 2d83b2f3f7d0c79fb99971ff05842c55657579ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Mon, 23 Mar 2026 09:07:35 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20[=EC=9E=AC=EA=B3=A0]=20=ED=86=B5?= =?UTF-8?q?=EA=B3=84=20=EC=B9=B4=EB=93=9C=20=EB=B3=80=EA=B2=BD=20=EC=9D=B4?= =?UTF-8?q?=EB=A0=A5=20=EC=B6=94=EA=B0=80=20(=EC=9E=AC=EA=B3=A0=EB=B6=80?= =?UTF-8?q?=EC=A1=B1=E2=86=92=EC=B5=9C=EB=8C=80=EC=9E=AC=EA=B3=A0=EC=B4=88?= =?UTF-8?q?=EA=B3=BC)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- INDEX.md | 1 + changes/20260323_stock_status_card_overmax.md | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 changes/20260323_stock_status_card_overmax.md diff --git a/INDEX.md b/INDEX.md index 1f3599c..ef5a2ff 100644 --- a/INDEX.md +++ b/INDEX.md @@ -329,6 +329,7 @@ DB 도메인별: | [20260321_wip_inspection_report_fix.md](changes/20260321_wip_inspection_report_fix.md) | 재공품 검사성적서 검사부위 공백/도면치수/테스트입력 수정 | | [20260322_wip_worker_screen_improvements.md](changes/20260322_wip_worker_screen_improvements.md) | 재공품 작업자화면 종합 개선 (검사판정/작업일지/자재투입/재고유형) | | [20260322_production_material_document_improvements.md](changes/20260322_production_material_document_improvements.md) | 생산관리 자재투입·문서·현황판·재고 종합 개선 (12건) | +| [20260323_stock_status_card_overmax.md](changes/20260323_stock_status_card_overmax.md) | 재고 목록 통계 카드 변경 — 재고부족 제거, 최대재고 초과 추가 | --- diff --git a/changes/20260323_stock_status_card_overmax.md b/changes/20260323_stock_status_card_overmax.md new file mode 100644 index 0000000..333fc5d --- /dev/null +++ b/changes/20260323_stock_status_card_overmax.md @@ -0,0 +1,49 @@ +# 재고 목록 통계 카드 변경 — 재고부족 제거, 최대재고 초과 추가 + +**날짜:** 2026-03-23 +**작업자:** Claude Code + +## 변경 개요 + +서비스 재고 목록 페이지의 통계 카드 4개 중 "재고 부족"과 "안전재고 미달"이 동일한 의미라서 "재고 부족" 카드를 제거하고, "최대재고 초과" 카드를 새로 추가했다. API에도 `over_count` 통계 필드를 추가했다. + +## 변경 전후 비교 + +| 순서 | 변경 전 | 변경 후 | +|:----:|---------|---------| +| 1 | 전체 품목 | 전체 품목 (유지) | +| 2 | 정상 재고 | 정상 재고 (유지) | +| 3 | **재고 부족** (빨강) | **안전재고 미달** (주황, 기존 4번) | +| 4 | 안전재고 미달 (주황) | **최대재고 초과** (빨강, 신규) | + +## 수정된 파일 + +### API (`sam/api`) + +| 파일 | 변경 내용 | +|------|----------| +| `app/Services/StockService.php` | `stats()` 메서드에 `over_count` (status='over') 쿼리 추가 | + +### React (`sam/react`) + +| 파일 | 변경 내용 | +|------|----------| +| `src/components/material/StockStatus/types.ts` | `StockStats` 인터페이스에 `overCount` 필드 추가 | +| `src/components/material/StockStatus/actions.ts` | API 응답 `over_count` → `overCount` 변환 추가 | +| `src/components/material/StockStatus/StockStatusList.tsx` | "재고 부족" 카드 제거, "최대재고 초과" 카드 추가, 필터 로직 추가 | + +## 상세 변경 사항 + +### 1. API 통계에 over_count 추가 + +Stock 모델의 `calculateStatus()`에 이미 `'over'` 상태 계산 로직이 존재했다(`max_stock > 0 && stock_qty > max_stock`). `StockService::stats()`에 `status='over'` 카운트 쿼리만 추가했다. + +### 2. 최대재고 초과 카드 동작 + +- 아이콘: `ArrowUpCircle` (빨강) +- 클릭 시 토글 필터링: 최대재고를 초과한 품목만 표시 +- 툴팁: "현재 재고량이 최대재고를 초과한 품목입니다. 과잉재고로 보관비용이 증가할 수 있습니다." + +## 관련 문서 + +- Stock 모델 상태 계산: `api/app/Models/Tenants/Stock.php` → `calculateStatus()`