시스템 개요
본사 통합 DB의 재고 관리 영역과 매장·외부 시스템을 단일 게이트웨이로 묶어, 매장 등록·관리자 설정·시스템 감지를 한 시스템 안에서 운영하는 통합 레이어입니다.
본 시스템은 RFP 2-1 (통합 대시보드 시각화), 2-2 (API 연동·자동화), 2-3 (안전 재고 알림 모듈)을 9개 화면 안에 응집하여, 본사 관리자가 매장·창고·입출고·동기화·알림·임계값 설정을 한 시스템 안에서 운영할 수 있게 합니다.
데이터 소스는 본사 통합 DB의 신축 영역(재고 관리 섹션)이며, 매장·외부 시스템은 본사가 발급한 API 키(RBAC 권한 토큰)로 자기 영역에 한정된 read·write 작업을 수행합니다.
통합 대시보드 바로가기사용자 페르소나
본사 관리자 1종 + 매장 직원 + 외부 시스템 연동 — 권한과 책임이 명확히 분리됩니다.
본 시스템의 주체는 4 인격으로 구분됩니다. 본사 관리자(Setup·Operation), 매장(자기 매장 데이터에 한정된 read·write), 외부 시스템(본사 ERP·물류사 등 기관 연동). 같은 본사 관리자라도 임계값을 *사전 설정*하는 Setup 모드와 알림을 *실시간 수신·해결*하는 Operation 모드로 역할이 분리됩니다.
매장과 외부 시스템은 본사가 발급한 API 키로 본인에게 허용된 데이터에만 접근합니다. 키별로 권한 범위(R / R/W)와 만료 정책이 사전 정의되어 있어, 본사 관리자가 콘솔에서 발급·갱신·회수를 일괄 관리합니다.
| 인격 | 주된 화면 | 권한 | 주된 행위 |
|---|---|---|---|
| 본사 관리자 (Setup) | 화면 8 알림 설정 | 전체 | SKU·카테고리 임계값 사전 등록 |
| 본사 관리자 (Operation) | 화면 2·3·4·5·7 | 전체 | 대시보드 모니터링 · 알림 수신 · 해결 |
| 매장 | API 게이트웨이 | R/W (자기 매장) | 본사 발급 키로 입출고 등록·조회 |
| 외부 ERP | API 게이트웨이 | R | 본사 결재 데이터 조회 |
| 외부 물류사 | API 게이트웨이 | R/W | 발송 트래킹 등록 |
통합 대시보드 (화면 2)
5대 KPI · 30일 일별 추이 · 카테고리 분포 · 회전율 분포 · 레이더 차트를 한 화면에서.
통합 대시보드는 본사 관리자가 매일 아침 첫 번째로 여는 화면입니다. 5대 KPI(총 SKU · 매장 가치 · 창고 가치 · 알림 건수 · 오늘 입출고)와 30일 일별 추이를 즉시 파악할 수 있도록 상단에 배치되어 있습니다.
회전율 분포는 SKU 1,800개를 회전 일수 기준으로 5구간(0~7일 / 8~30일 / 31~60일 / 61~90일 / 91일+) 분포로 시각화하며, 레이더 차트는 카테고리별 평균 회전율을 5축으로 보여줍니다.
통합 대시보드 바로가기매장·창고 재고 (화면 3·4)
백화점 1F·2F 7개 섹션 + 3개 창고를 분리 가시화 — 가동률·카테고리 분포·드릴다운.
화면 3 매장 재고는 백화점 운영을 가정해 1F·2F의 7개 섹션(의류·신발·언더웨어·잡화·주얼리·코스메틱·F&B)으로 구성되며, 각 섹션은 A·B·C 존 단위로 SKU·재고 가치 분석이 가능합니다.
화면 4 창고 재고는 본사 창고·매장 백창고·외부 위탁 3종 창고의 가동률을 게이지로 표시합니다. 가동률 분류는 여유(<70%) / 보충 필요(70~85%) / 만재 임박(≥85%) 3단계입니다.
매장 재고 바로가기입출고 트래킹 (화면 5)
기간 필터 + 일별 추이 라인 + 매장↔창고 Sankey 흐름 + 이력 100건.
기간 필터(오늘 / 이번 주 / 이번 달 / 전체 60일)가 일별 추이 라인 차트와 Sankey 흐름도 모두에 동시 적용됩니다. Sankey는 출발지와 도착지 사이의 SKU 이동 수량을 흐름 띠 두께로 시각화합니다.
이력 테이블은 최근 100건이 시간순으로 표시되며 검색·유형 필터(입고·출고·이송·반품)로 좁힐 수 있습니다.
입출고 트래킹 바로가기데이터 자동 동기화 (화면 6)
API 키 권한 체계 (RBAC) + 입력 채널 분포 + 수동→자동 비교 + 동기화 이력 + 실패 정책.
이번 사업의 영업 무기 핵심 화면입니다. 매장 12개 + 외부 2개 = 14개 API 키 발급 현황을 표로 보여주며, 만료 임박(D-30 이내) 키와 회수된 키를 분리 노출합니다.
동기화 이력 테이블은 4종 필터(기간 / 유형 / 결과 / 검색)를 가지고 있으며, 결과 칩(전체·성공·부분·실패)으로 빠르게 좁힐 수 있습니다. 시각 피드백 배너에 *현재 표시 기간 + 조회 건수 + 성공률 N%* 가 즉시 표시됩니다.
데이터 자동 동기화 바로가기재고 알림 + 임계값 설정 (화면 7·8)
관리자 Setup(화면 8) → 시스템 자동 감지 → Operation 알림 수신(화면 7) — 두 화면이 한 흐름으로 연결됩니다.
화면 8 알림 설정에서 관리자가 SKU·카테고리·매장 단위 임계값을 사전 등록합니다. 일괄 수정 + 변경 이력 추적 가능.
화면 7 알림은 시스템이 자동 감지한 미달 건을 심각도(긴급·주의·정상) 기준으로 분류하여 노출합니다. 일괄 선택 → 한 번에 확인 처리하면 토스트 피드백으로 즉시 시각 반영됩니다.
재고 알림 바로가기RBAC 권한 체계 — 왜 API 키인가
API 키 = 본사 DB 재고 관리 섹션의 출입증. 매장·외부사별로 read·write 권한을 사전 정의하여 데이터 격리·감사·회수가 가능하게 합니다.
공통 인증(매장 직원 ID·비밀번호) 방식은 시스템 운영 단계에서 권한 회수·범위 제한·감사 로그 측면에서 한계가 있습니다. RBAC(Role-Based Access Control) 기반 API 키 체계는 키 단위로 *어떤 데이터에 어떤 행위(R · R/W · D)까지 허용할지*를 정의해 둡니다.
운영 단계에서는 매장 폐점 시 키 즉시 회수(1초 내 모든 호출 차단), 키 노출 시 재발급(5분 내 복구), 외부사 계약 종료 시 즉시 비활성화가 모두 콘솔 한 번의 클릭으로 처리됩니다. 모든 호출은 자체 DB에 자동 기록되어 사고 시 역추적이 가능합니다.
| 기능 | 동작 |
|---|---|
| 권한 발급 (Issue) | 본사 관리자가 매장·외부사별로 키 발급, 권한 범위 결정 |
| 권한 검증 (Authenticate) | 모든 API 호출 시 키 헤더 검증, 범위 외 요청 차단 |
| 권한 회수 (Revoke) | 폐점·노출 시 즉시 회수, 1초 내 모든 호출 거부 |
| 호출 감사 (Audit) | 시각·엔드포인트·결과 자체 DB 자동 기록, 역추적 가능 |
실패 처리 정책 — 4 분류와 자동 재시도
일시 네트워크 오류는 자동 복구, 그 외는 4 분류별로 즉시 알림. 실패 건은 본사 DB에 부분·누락 적재 0건.
자동 재시도 정책은 1차 30초 → 2차 5분 → 3차 30분 단계로 진행됩니다. 일시 네트워크 오류·본사 API 응답 시간 초과는 이 단계에서 자동 복구되어 좌측 알림에 노출되지 않습니다.
3회 재시도 후에도 실패한 영구 오류는 4 분류로 구분되어 즉시 관리자에게 알림됩니다. 실패 건은 절대 본사 DB에 부분 적재되지 않으므로 데이터 무결성이 보장됩니다.
| 분류 | 예시 사유 | 대응 |
|---|---|---|
| 인증 만료·키 회수 | 키 만료, 매장 폐점 자동 차단 | 관리자 콘솔에서 키 갱신·재발급 (5분 내) |
| 첨부 파일 오류 | 파일 누락, 허용 외 확장자, 헤더 불일치, 인코딩 오류 | 보낸 측에 양식 재안내 후 재전송 |
| 데이터 검증 실패 | 음수 단가, SKU 코드 형식, 필수 필드 누락 | 보낸 측 점검 후 재전송 |
| 권한·범위 위반 | 권한 외 매장 데이터 요청, R 키로 W 시도 | 키 권한 재정의 또는 호출 로직 수정 |
API 키 라이프사이클 — 발급 · 갱신 · 회수
키 발급에서 회수까지 4단계 — 본사 관리자가 콘솔에서 일괄 관리, 모든 변경은 자체 DB에 자동 기록됩니다.
본사 발급 API 키는 *영구 토큰*이 아닙니다. 발급 → 활성 → 만료 임박 알림 → 갱신 또는 회수의 라이프사이클을 따르며, 각 단계에서 본사 관리자에게 적절한 알림이 자동 노출됩니다.
운영 단계의 변동(매장 폐점·키 노출·외부사 계약 종료·키 만료)을 시스템 재시작 없이 처리할 수 있도록, 모든 변경 작업은 콘솔 한 번의 클릭 + 자체 DB 자동 기록으로 흐릅니다.
| 단계 | 트리거 | 시스템 동작 | 관리자 액션 |
|---|---|---|---|
| ① 발급 | 신규 매장 개점 · 외부사 신규 계약 | 키 생성 + 권한 범위(R/W) 결정 + 만료일 설정 | 콘솔에서 발급 폼 작성 |
| ② 활성 | 매장·외부사가 키 사용 시작 | 모든 호출 헤더 검증 + 자체 DB 자동 기록 | 대시보드에서 호출 추이 모니터링 |
| ③ 만료 임박 | 만료일까지 30일 미만 | RBAC 카드 KPI에 '만료 임박 N개' 표시 + 행에 D-N 배지 | 갱신 또는 회수 결정 |
| ④ 회수 | 폐점 · 키 노출 · 계약 종료 | 1초 내 모든 호출 거부 + 회수 사유 기록 | 콘솔에서 회수 버튼 클릭 |
안전 재고 분류 기준 — 긴급·주의·정상
현재 수량 ÷ 알림 기준 수량 비율로 3단 분류. 룰 카드와 게이지로 의도가 시스템 안에서 자명하게 보입니다.
관리자가 등록한 알림 기준 수량 대비 현재 수량의 비율을 자동 계산하여 3 단계로 분류합니다. 분류 기준은 화면 7 상단의 룰 카드와 화면 4의 가동률 게이지에서 동일한 색상 위계(brick crimson · 주황 · 녹색)로 표시됩니다.
| 심각도 | 기준 | 색상 | 권장 조치 |
|---|---|---|---|
| 긴급 (critical) | ≤ 30% | brick crimson #b34530 | 결품 임박 — 즉시 발주 검토 |
| 주의 (warning) | 30 ~ 70% | 주황 #c2410c | 발주 계획 수립 |
| 정상 (ok) | > 70% | 녹색 #15803d | 여유 운영 — 즉시 조치 불필요 |
외부 시스템 연동 패턴 — 본 IOM은 통합 허브
본 IOM은 단순 재고 대시보드가 아닌, 본사가 보유한 시스템과 매장·외부사를 통합하는 허브로 설계되었습니다.
RFP는 *ERP 연동 경험*을 지원 자격으로 명시하고, *레거시 코드 분석·마이그레이션 경험*을 우대 사항으로 두었습니다. 즉 본 사업은 신규 시스템을 독립적으로 추가하는 것이 아니라, 본사가 이미 보유한 자산(ERP·자료실·PLM 등)과 연동되는 구조로 설계되어야 합니다.
본 IOM은 5종 외부 시스템과의 연동 패턴을 사전에 정의해 두어, 본사 환경에 따라 즉시 또는 단계적으로 연동을 시작할 수 있도록 했습니다. 화면 6 *데이터 자동 동기화* 의 [외부 시스템 연동 패턴] 카드에서 동일 정보를 영업 시연용 표 형태로도 확인할 수 있습니다.
| 시스템 | 도입 | 방향 | 방식 | 본 IOM에서의 역할 |
|---|---|---|---|---|
| 본사 ERP | 필수 | 양방향 | REST API + 표준 스키마 | 단가·결재 백엔드. 매장 입출고와 결합해 본사 결재 완결성 확보 |
| 본사 통합 DB 내부 영역 | 필수 | 내부 참조 | 동일 DB 인스턴스 직접 참조 | 사용자 인증·매장 마스터·회계 코드를 별도 API 호출 없이 조회 |
| 외부 물류사 | 권장 | 양방향 | REST API + Webhook | 매장↔창고 이동의 외부 구간을 운송장 번호로 추적 |
| PLM (제품 라이프사이클) | 선택 | 수신 | 표준 스키마 또는 CSV 마이그레이션 | 본사 PLM 보유 시 SKU 사양·BOM 흡수. 미보유 시 IOM 자체 마스터 사용 |
| 매장 POS | 선택 | 수신 | REST API (본사 발급 키 인증) | POS 보유 매장은 직접 연동, 미보유 매장은 IOM 웹 화면 등록 |
디자인 토큰 — 색상 · 타이포 · 라운드
Primary #0d47a1 · 폰트 11~13px · 6px 라운드. 캡틴 룰을 시스템 전반에 일관 적용.
전 화면이 단일 디자인 토큰을 공유합니다. Primary 컬러는 #0d47a1 (EMR Blue 패밀리), 데이터 텍스트는 11~13px, 헤더는 14~24px, 모든 박스 모서리는 6px 라운드로 통일됩니다.
심각도 색상은 brick crimson(#b34530) · 주황(#c2410c) · 녹색(#15803d)으로 차분한 톤을 사용하여 정보 밀도가 높은 화면에서도 시선이 분산되지 않도록 합니다.
| 용도 | 값 | 비고 |
|---|---|---|
| Primary | #0d47a1 | 강조·링크·활성 상태 |
| Primary BG | #e8eef6 | 배지·버튼 옅은 톤 |
| Text Dark | #1a1a1a | 주 텍스트 |
| Text Mid | #4a5568 | 서브 텍스트 |
| Text Muted | #64748b ~ #94a3b8 | 보조 정보 · 라벨 |
| Border | #e2e8f0 | 기본 테두리 |
| Critical | #b34530 | 긴급 알림 · 실패 |
| Warning | #c2410c | 주의 알림 · 부분 성공 |
| OK | #15803d | 정상 · 성공 |
SeverityBadge 3 variant
outline · solid · muted — 의미와 강조 수준에 따라 선택. 성공·정상은 muted로 톤다운, 부분·실패는 강조.
본 시스템의 모든 상태 배지는 SeverityBadge 컴포넌트를 사용합니다. variant는 3종으로, 같은 정보라도 화면 맥락에 따라 강조 수준을 조절합니다.
예를 들어 동기화 이력 테이블에서 *성공*은 muted(옅은 회색)로 표시하여 21건의 성공 행이 시선을 분산시키지 않게 하고, *부분*은 outline(주황 테두리), *실패*는 solid(꽉 찬 brick)으로 즉시 도드라지게 합니다.
| variant | 톤 | 사용 맥락 |
|---|---|---|
| outline | 옅은 배경 + 보더 + 진한 텍스트 | 기본 — 의미 색이 필요하지만 평소 톤 |
| solid | 꽉 찬 배경 + 흰 텍스트 | 강조 — 알림·실패처럼 즉시 인지 필요 |
| muted | 옅은 회색 (severity 무시) | 톤다운 — 성공·정상처럼 강조 불필요 |
InfoHint — 인라인 설명 도구
"이게 뭔가요?" 의문이 떠오르는 모든 자리에 InfoHint를 배치 — 호버 한 번으로 정의·기능 즉시 답변.
RBAC, SKU, 회전율, 안전 재고 분류 등 운영자가 처음 접할 수 있는 개념마다 InfoHint를 배치했습니다. 호버 시 *제목 + 정의 한 줄 + 푸른 도트 bullet* 위계로 구조화 노출됩니다.
width prop으로 콘텐츠 분량에 따라 너비를 조절할 수 있습니다. 디폴트는 320px, RBAC처럼 정의가 긴 경우 360px로 확장합니다.
시스템 구조도 — 한 장으로 이해되는 시스템
모든 화면 헤더의 ◎ 시스템 구조도 배지에서 호출됩니다. 본사 DB 신축 영역 + 4 인격 + API 게이트웨이 흐름을 한 그림에.
현재 화면이 어떤 RFP 섹션에 해당하는지 호출 시 자동 강조됩니다. 영업 자리에서 발주처에 *우리가 RFP를 어떻게 이해했는가*를 한 번에 보여주는 영업 무기로 작동합니다.
아래는 전체 시스템 구조도입니다 (현재 화면 강조 없음).