HBIV000_재고관리 (앱 개요)
(Hereby) 재고관리 > 앱 개요
| 앱 | 재고관리 (HBIV) |
| 대상 사용자 | 조건1 [재고관리 권한] |
| 프로토타입 | TBU |
| 관련 정책 | [[POL_마약류관리]] (TBU) |
| Status | review |
| Owner | 카나 (PM) |
개요
- 재고관리(Hereby Inventory)는 병원 소모품·의약품·장비 품목을 관리하는 재고 현황판 + 품목 master다. 현재 라이브 구현 = 품목 현황판이며, 정본 데이터는 inventory_categories · inventory_items 테이블 2개로 이뤄진다.
- 현재 구현 범위는 대시보드 / 재고관리(품목 목록) / 구분(카테고리) / 관리(반품 대상)까지다. 수량 변경은 delta + 사유 수준의 조정이며, 입고/출고는 별도 원장이 아니라 수량 변경으로 흡수된다.
- [Donue 신규 SCM = 설계 예정]: 구매요청 → 승인 → 발주 → 입고검수 → 재고반영 → 부서불출/청구 → 월마감 체인과 로트/배치(FEFO) · 약가(DrugPrice) · 마약류 법정대장(ControlledSubstance/NIMS) · 재고원장(InventoryLedger)은 라이브 미구현 설계 후보다. 현재 구현과 명확히 분리한다.
문서 히스토리
| 날짜 | 작성자 | 팀 | 변경 내용 |
|---|---|---|---|
| 2026-07-06 | 카나 | PM | 최초 작성 |
| 2026-07-10 | 카나 | PM | 라이브 기능 검토 반영 |
| 2026-07-21 | 카나 | PM | GC700 깊이 재작성 + 확정 스타일 |
Data I/O
Server → Client
| 변수 | 엔티티.컬럼 | 값 없을 때 | 비고 |
|---|---|---|---|
| $ | InventoryItem count | 0 | 전체 품목 수 |
| $ | InventoryCategory count | 0 | 카테고리 수 |
| $ | InventoryItem.expirationDate (90일 이내) | 0 | 유효기간 임박 수 |
| $ | InventoryItem (quantity < minimumStock) | 0 | 재고 부족 수 |
| $ | InventoryItem.isRefundCandidate | 0 | 반품 대상 수 |
| $ | InventoryItem[] | empty | 품목 목록 |
| $ | InventoryCategory[] | empty | 카테고리 목록 |
Client → Server
| 액션 | 전달 값 | tRPC procedure | 권한 토큰 |
|---|---|---|---|
| 품목 추가/수정/삭제 | item fields | sdk.inventory.item.create/update/delete() (추정) | inventory:write (추정) |
| 수량 변경 | itemId, delta, reason | sdk.inventory.quantity.adjust() (추정) | inventory:write (추정), destructive, 사람 확정 |
| 반품 flag 저장 | itemId, refundTarget | sdk.inventory.refund.mark() (추정) | inventory:write (추정) |
| 카테고리 추가/수정/삭제 | category fields | sdk.inventory.category.create/update/delete() (추정) | inventory:write (추정) |
외부 통합 (설계 후보 — 라이브 미구현)
| 외부 시스템 | 데이터 | 동기/비동기 | 비고 |
|---|---|---|---|
| NIMS (마약류통합관리시스템) | 마약류 반출입·폐기·재고 차이 법정대장 | TBU | ControlledSubstance 신규 record 후보. 라이브 미구현 (TBU) |
| SCM 신규 record 계열 | PurchaseRequest · PurchaseApproval · PurchaseOrder · GoodsReceipt · Lot/Batch · DrugPrice · InventoryLedger · StockIssue · ReturnDisposal · InventoryClose | TBU | 신규 record. 라이브 미구현 (TBU) |
화면 플로우
앱 개요 사양표
| 번호 | 항목/기능명 | 타입 | 사양 및 기능 설명 | 연관/영향 범위 | 비고 |
|---|---|---|---|---|---|
| 00 | 화면 진입 조건 | - | 조건1 [재고관리 권한] 인증 시 노출 | inventory scope | |
| 01 | 초기 상태 | - | /inventory/ 진입 시 대시보드 기본 노출 | [[HBIV200_대시보드]] | |
| 10 | 앱 정체성 (현재 구현) | - | "재고관리 / Hereby Inventory" = 품목 현황판 + 품목 master. 정본 = inventory_categories · inventory_items 테이블 2개 | InventoryItem · InventoryCategory | 라이브 census 6/30 |
| 20 | 현재 구현 화면군 | - | 대시보드 / 재고관리(품목) / 구분(카테고리) / 관리(반품 대상). 수량 변경은 delta + 사유, 입고/출고는 수량 변경으로 흡수 | HBIV200-230 | |
| 30 | [Donue 신규 SCM = 설계 예정] | - | 구매요청 → 승인 → 발주 → 입고검수 → 재고반영 → 부서불출/청구 → 월마감 체인. 라이브 미구현 설계 후보 | HBIV800-880 | 미구현 |
| ㄴ31 | 로트/약가/마약류 | - | 로트/배치(FEFO) · DrugPrice(약가/수가) · ControlledSubstance(마약류 법정대장/NIMS 연동)는 병원 특화 신규 엔티티 후보. 미구현 설계 | Lot/Batch · DrugPrice · ControlledSubstance | 법적 요건 검토 TBU |
| ㄴ32 | 재고원장 | - | 입고/출고/조정/반품/폐기 immutable ledger(InventoryLedger). 현재 미구현, 정본 경계 설계 후보 | InventoryLedger | InventoryTransaction 존재 여부 TBU |
| 40 | 마약류 카테고리 seed 안내 | - | 카테고리 "항정신성 의약품"에 "마약류인 경우 주기적으로 당국에 신고 필수" 규제 안내문구가 seed됨 → 마약류/NIMS 연동의 병원 특화 진입점 | InventoryCategory · [[HBIV220_구분 (카테고리 관리)]] | 규제 특화 포인트 |
| 50 | 화면 목록 (I.A.) | - | [[HBIV100_Shell·탭]] / [[HBIV200_대시보드]] / [[HBIV210_재고관리 (품목 목록)]] / [[HBIV211_품목 추가·수정 모달]] / [[HBIV212_수량 변경·반품 모달]] / [[HBIV220_구분 (카테고리 관리)]] / [[HBIV230_관리 (반품 대상 목록)]] | 앱 하위 화면 | |
| 60 | AI 접점 요약 | - | 현재 live AI 표면 없음(greenfield). SCM과 함께 설계할 후보 6종: 재고/만료 브리프 · 발주점 추천 · 자연어 구매요청 · 만료 FEFO/반품 제안 · 수요예측 · 마약류 감사 브리프. AI는 read/suggest/draft/preflight까지, 수량조정·발주·입고·월마감 확정은 사람 | Inventory + SCM 신규 | SCM과 함께 설계 |
AI 접점 요약
Inventory AI는 재고를 직접 바꾸는 자동 운영자가 아니라, 부족·만료·소진율·리드타임을 읽고 구매요청/발주/입고 초안을 만드는 보조자다. 수량조정·발주확정·입고확정·월마감은 사람이 확정한다. 현재 live AI 표면은 없으므로 아래는 greenfield 후보이며 Donue 신규 SCM과 함께 설계한다.
| AI Skill | 동작 | 안전 경계 | 우선도 |
|---|---|---|---|
| inventory.expiryBrief | 부족 N개·만료임박 M개·반품대상 K개처럼 현재 재고 위험을 요약 | 읽기 전용 | ★★★★☆ |
| inventory.reorderSuggest | 소진율 × 리드타임 × 최소재고 기준 발주점·수량 추천 | suggest, 사람 발주 | ★★★★★ |
| scm.purchaseRequestDraft | "거즈 10박스 신청" 자연어를 PurchaseRequest draft로 변환 | draft, 사람 제출 | ★★★★★ |
| inventory.expiryFEFO | 만료임박 FEFO 불출 우선순위 + 반품/폐기 후보 draft 제안 | suggest, confirm 필요 | ★★★★☆ |
| inventory.demandForecast | 과거 소진율·부서 사용량·환자수/병동 운영량 기준 차월 수요·결품 위험 예측 | 읽기/suggest | ★★★★☆ |
| controlledSubstanceAudit | 마약류 반출입·폐기·재고 차이를 법정대장/NIMS 기준으로 점검하는 감사 초안 | read/export draft, 법적 검수 | ★★★★☆ |
권한·상태 분기 요약
| 시나리오 | 트리거 | 결과 | 비고 |
|---|---|---|---|
CASE01 [재고관리 권한 진입] | 인증 세션 + inventory scope | 대시보드 노출 | |
CASE02 [수량 변경] | 품목 row "수량" → "변경" | delta + 사유로 수량 조정 (destructive) | ledger 영속 TBU |
CASE03 [SCM 확정 계열] | 발주/입고/월마감 | 미구현. 설계 시 사람 확정 경계 | Donue 신규 |
Open Question
- 콸 SCM P2 결정 반영: 구매요청·승인·발주·입고검수·부서불출·월마감 SCM 화면군(HBIV8xx)은 1차 범위 제외(설계 예정). P1 범위 확정 = TBU
- 마약류/NIMS 연동: 현재 category memo seed 수준 → 별도 ControlledSubstance/NIMS 정책 승격 여부 = TBU
- 수량 변경 history/audit 조회 UI, InventoryTransaction 원장 존재 여부 = TBU
- 공급사 master(현재 text field) · 약가/수가 청구 기준 = TBU
- Inventory ↔ General Affairs 자산/장비, Management Dashboard 비용/수요예측 연결 = TBU