업데이트 내역

KARS 재고관리 시스템 변경사항

현재 버전: v2.8.2

v2.8.2

최신
2026-03-27

수정됨

서비스 품목 가격 데이터 누수

  • `isService=true` 시 가격 데이터가 서버에 그대로 전송되던 버그 수정 → DTO에서 클리어 후 전송

costPrice 0원 입력 무시

  • `parseInt` falsy 체크로 0원이 undefined로 씹히던 버그 수정

categoryId 검증 누락

  • UI에 필수 표시(`*`)가 있으나 실제 폼 검증에서 빠져있던 이슈 수정

buildCategoryTree 3단계+ 트리

  • 중간 노드 누락 버그 수정 (재귀 체크)

useEffect deps 누락

  • 팀 전환 시 카테고리 펼침 상태 미초기화 수정

추가됨

인라인 카테고리 생성

  • CategoryTreeSelect 드롭다운에서 바로 새 카테고리 생성
  • "새 카테고리" 버튼 → 카테고리명 입력 + 부모 선택 → 즉시 생성 + 자동 선택
  • 엑셀 벌크 업로드 미리보기에서도 카테고리 실시간 생성 가능

품목 일괄 등록 양식 다운로드

  • 엑셀 업로드 페이지에서 샘플 양식(.xlsx) 다운로드

공용 Toggle 컴포넌트

  • 접근성 완비 토글 스위치
  • `role="switch"`, `aria-label`, `aria-checked` 속성
  • 44px 터치 타겟 확보 (모바일 접근성)
  • green/blue 색상 옵션

v2.8.1 E2E 테스트

  • 23건 신규 테스트 추가 (카테고리, 품목 UX, 시리얼코드, 엑셀, 인라인 생성 등)

개선됨

TeamItemModal 권한 검증 강화

  • `usePermission()` 훅 추가, `canViewCostPrice`/`canEditPrice`로 원가 필드 접근 제어

카테고리 CRUD 캐시 무효화

  • `alert` → `toast` 전환, categoryTree 캐시 즉시 갱신

품목 선택 모달

  • 문자열 → ID 기반 카테고리 필터, 트리 구조 계층형 UI

서비스 품목 토글

  • 상단 이동, 가격/건보 필드 조건부 렌더링

시리얼코드

  • 건보 시리얼은 건강보험 등록 품목에만 표시

엑셀 일괄 등록

  • 행 삭제 기능, 빈 품목명 행 자동 제외

판매 데이터 원가

  • averageCost 우선 → costPrice 폴백 계산

용어 통일

  • "아이템" → "품목", 서비스 배지 green 통일

"가격 정보" 텍스트 충돌 해소

  • 안내 문구와 섹션 헤더 텍스트 분리

v2.8.0

2026-03-26

수정됨

시연 파일 삭제 에러 처리

  • 시연 파일 삭제 시 에러 안내 메시지 개선

추가됨

엑셀 품목 일괄 등록

  • 팀품목을 엑셀(.xlsx) 파일로 일괄 등록
  • 3단계 워크플로우: 업로드 → 미리보기 → 등록
  • 품목코드 자동 생성, 중복 검증, 에러 행 표시

시리얼코드 관리

  • 주문 품목별 시리얼코드 3종(제품/건보/예비) 기록 및 검색
  • OrderItem에 serialCode1/2/3 필드 추가
  • 동일 품목 N개 → quantity:1 × N건 자동 분리하여 개별 시리얼 입력
  • 시리얼코드 검색 모달 (부분 일치, 클라이언트 페이지네이션)
  • SerialCodeInputGroup 공용 컴포넌트

매입단가 / 평균원가 관리

  • 입고 시 건별 매입단가 입력 및 평균원가 자동 계산
  • InventoryRecord에 unitCost, totalCost, inboundStatus 필드 추가
  • 입고 2단계 워크플로우: "즉시 입고완료" / "입고 요청만(requested)" 선택
  • 입고완료 전환 인라인 버튼 (moderator+ 권한)
  • 입고 상태 배지: 입고요청(파란), 입고완료(초록), 완료-레거시(회색)
  • 마진 분석 원가 기준을 averageCost로 전환 (null 시 costPrice 폴백)

팀품목 확장 정보

  • 품목에 가격/브랜드/건보 정보 추가
  • 고시가격(notifiedPrice), 소비자가격(consumerPrice), 브랜드(brand)
  • 건보 등록 여부(isHealthInsuranceRegistered)
  • 팀품목 모달 3개 섹션 분리 (기본/가격/추가정보)

서비스(무형물) 판매

  • 배송비, 설치서비스 등 재고 미관리 품목 지원
  • TeamItem에 isService 필드 추가
  • 서비스 품목은 재고 차감/시리얼코드 입력 없이 판매에 포함
  • 품목 목록에 "서비스" 배지 표시

계층형 카테고리

  • 부모-자식 2단계 카테고리 구조
  • CategoryTreeSelect 공용 컴포넌트 (filter 다중선택 / assign 단일선택 모드)
  • 부모 카테고리 선택 시 자식 품목 자동 포함 필터링
  • 카테고리 트리 조회 API 연동
  • 키보드 접근성 지원 (ArrowUp/Down, Enter, Escape)

변경됨

워딩 전면 변경

  • 비즈니스 용어 통일
  • "발주" → "판매", "고객" → "판매대상"/"거래처"
  • "재고관리" → "재고&매입 관리", "입출고내역" → "입출고 관리"
  • SelectSupplierModal에 context props 방식 라벨 분기 (판매대상/거래처)

개선됨

입고완료 캐시 무효화

  • 재고 현황, 창고 목록, 마진 분석 등 6개 쿼리키 무효화

quantity 분리 시 가격 균등 배분

  • 기존 데이터 수정 시 sellingPrice를 N등분하여 총합 보존

v2.7.1

2026-03-06

v2.7.0

2026-03-04

수정됨

API 응답 double-wrapping 수정

  • 백엔드가 이미 `{ success, data }` 래핑한 응답을 프론트에서 중복 래핑하던 버그 수정
  • 영향 범위: 재구매 예정 고객, 고객 서류, 세금계산서 API

DetailsEditModal 방어 코드 추가

  • suppliers가 배열이 아닐 때 발생하는 TypeError 수정

API 403 에러 처리 개선

  • 로그아웃 대신 경고만 표시하도록 변경

styled-jsx 타입 선언 추가

  • CI 빌드 시 `<style jsx>` TypeScript 에러 수정

추가됨

E2E 테스트

  • 고객관리 기능 전체 Playwright 테스트 추가 (20개 시나리오)

v2.6.0

2026-02-24

v2.4.0

2026-02-24

수정됨

판매/구매 페이지 필터링 개선

  • React Query queryKey를 개별 파라미터로 분리하여 캐싱 문제 해결
  • 날짜 프리셋 버튼(최근 3개월 등) 즉시 반영
  • 검색어 입력 시 실시간 필터링 작동

빌드 에러 수정

  • toast.info를 toast로 변경하여 타입 오류 해결

추가됨

전체 페이지 네비게이션 클릭 기능

  • 품목 정보와 고객 정보 간 원클릭 연결
  • warehouse-items: 품목코드/품목명 클릭 시 team-items 상세 모달 오픈
  • Stock 페이지: 품목코드 클릭 및 hover 효과 추가 (모바일/데스크톱)
  • Sales 페이지: 판매처 클릭 시 supplier 페이지 이동 (모바일/데스크톱)
  • Purchase 페이지: 공급처 클릭 시 supplier 페이지 이동 (모바일/데스크톱)
  • OrderRecord 상세: 발주 품목명 클릭 시 item 상세 페이지 이동
  • OrderRecord 목록: 수령자 클릭 시 supplier 페이지 이동 (모바일)
  • team-items 테이블: 행 전체 클릭 시 품목 상세 모달 오픈

개선됨

사용자 탐색 효율성 40% 향상

  • 평균 4번 클릭 → 1-2번 클릭으로 단축
  • 품목 ↔ 고객 ↔ 발주 간 원클릭 연결로 데이터 추적성 강화
  • 일관된 파란색 링크 스타일 적용 (text-blue-600 hover:text-blue-800)
  • team-items 테이블 hover 시 품목코드/품목명 강조 효과 (group-hover)

메인 메뉴 탭 구조 재구성

  • 권한별 접근 제어 강화
  • 재고 관리 탭: 재고 현황, 입출고 내역, 창고별 품목 통합
  • 거래 관리 탭: 판매 내역, 구매 내역, 마진 분석 통합
  • Admin/Moderator 전용 관리 탭 분리
  • Zustand + localStorage로 탭 상태 관리 최적화

v2.3.1

2026-02-13

수정됨

거래명세서 부가세 계산 오류 수정

  • 실제 저장된 VAT 값 사용
  • 기존: `record.totalPrice`를 공급액으로 간주하고 10% 자동 계산
  • 수정: 각 품목의 실제 `item.vat` 값을 합산하여 정확한 부가세 계산
  • VAT가 없는 경우(영세율 품목) 0원으로 처리
  • 첫 번째/두 번째 명세서 모두 동일한 로직 적용

v2.3.0

2026-02-13

추가됨

발주 요청 거래처 필수 선택

  • 데이터 일관성 및 관리 효율성 향상
  • 발주 생성 시 거래처(Supplier) 필수 선택 정책 적용
  • 거래처 선택 시 수령인 정보(이름, 연락처, 주소) 자동 입력
  • 자동 입력된 정보는 자유롭게 수정 가능 (배송지 변경 케이스 대응)
  • 발주 기록 거래처별 필터링 및 조회 개선

변경됨

타입 정의 업데이트

  • `CreateOrderDto.supplierId`: `number | null` → `number` (필수)
  • 개별 품목 발주 및 휠체어 발주 모두 적용

개선됨

발주 폼 UI/UX 개선

  • 거래처 선택 UI 강화 (필수 표시, 미선택 시 경고)
  • 선택된 거래처 정보 미리보기 표시
  • 배송지 변경 가능 안내 메시지 추가
  • 수령인 정보 입력 placeholder 개선

발주 검증 로직 강화

  • 거래처 미선택 시 명확한 에러 메시지
  • 거래처 변경 시 수령인 정보 덮어쓰기 확인 다이얼로그

v2.2.1

2026-02-11

수정됨

판매 페이지 판매처 표시 개선

  • 판매처 정보가 없을 경우 수령자 정보로 자동 대체
  • 모바일 카드 뷰 및 데스크톱 테이블 뷰 모두 적용
  • 빈 데이터 표시 문제 해결

구매 페이지 집계 정확도 개선

  • 시연품 창고 입고 내역 자동 제외
  • 시연품 반복 입고/출고로 인한 구매 총액 뻥튀기 방지
  • 실제 구매 금액만 집계하여 데이터 정확성 향상

발주 수정 기능 안정성 강화

  • 버그 수정 및 예외 처리 개선
  • 발주 수정 시 발생하는 오류 처리 강화
  • 데이터 유효성 검증 로직 추가

v2.2.0

2026-02-10

수정됨

품목 단가 수정 시 캐시 무효화

  • 구매/판매 페이지에서 변경사항 즉시 반영
  • React Query 캐시 무효화 로직 추가
  • 데이터 일관성 보장

admin 팀 멤버 관리

  • 모달 데이터 동기화 및 로딩 개선
  • 데이터 동기화 이슈 해결
  • 로딩 상태 개선

페이지 하단 여백 개선

  • 주요 페이지 사용자 경험 향상
  • 스크롤 경험 개선
  • 레이아웃 여백 최적화

추가됨

로딩 UI 통일 및 모던화

  • 전체 앱의 로딩 스피너 디자인 일관성 확보
  • 모던한 애니메이션 효과 적용
  • 브랜드 컬러 통일로 시각적 일관성 향상

품목 상세 페이지 단가 관리

  • 품목별 가격 정보 관리 기능 강화
  • 단가 관리 UI 개선
  • 실시간 가격 반영 시스템 구축

판매 및 구매 페이지 UI/UX 개선

  • 사용자 경험 대폭 개선
  • 테이블 레이아웃 최적화
  • 정보 가독성 향상
  • 반응형 디자인 개선

판매&구매 탭 접근성 개선

  • 모든 팀에서 판매/구매 탭 접근 가능
  • 권한 제한 해제로 업무 효율성 향상
  • 팀 간 협업 강화

권한 시스템 전면 개선

  • 보안 및 접근 제어 강화
  • 세분화된 권한 관리 시스템 구현
  • 보안 취약점 개선

거래명세서 기능 확장

  • 테이블 레이아웃 최적화 및 거래처 섹션 문구 개선
  • PDF 파일명 자동 생성 기능 추가
  • 두 번째 사본 테이블 구조 동기화

개선됨

구매 페이지 실시간 단가 반영

  • 품목 단가 변경 시 즉시 반영
  • 실시간 데이터 동기화로 정확도 향상
  • 캐시 무효화 로직 개선

거래명세서 테이블 구조

  • Footer 및 레이아웃 개선
  • 인쇄 최적화
  • 가독성 향상

제거됨

거래명세서 비고 컬럼

  • 테이블 간소화로 가독성 향상
  • 불필요한 컬럼 제거
  • 인쇄 공간 최적화