kdrug-inventory-system/.claude/inventory_origin_design.md
시골약사 2a14af59c3 docs: 서버 관리 및 시스템 설계 문서 추가
- Flask 서버 관리 스크립트 (run_server.sh) 추가
- 원산지별 재고 관리 설계 문서 추가
- Flask 프로세스 관리 문서 작성
- 다중 Flask 프로세스 문제 해결 방안 문서화

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-15 09:57:18 +00:00

2.6 KiB

원산지별 재고 관리 및 조제 시 선택 기능

🎯 완료된 기능 (2026-02-15)

1. 원산지별 재고 구분 표시

  • 재고 현황 API 개선 (/api/inventory/summary)
    • origin_count: 원산지 개수
    • min_price, max_price: 가격 범위
    • 평균 가격 표시

2. 재고 상세 API 추가 (/api/inventory/detail/<herb_id>)

  • 원산지별로 그룹화된 재고 정보
  • 각 원산지별 로트 목록
  • 평균 단가, 재고 수량, 재고 가치

3. UI 개선

  • 재고 목록에서 원산지 개수 배지 표시
  • 가격 범위 표시 (여러 원산지일 경우)
  • 클릭 시 상세 모달 표시
  • 원산지별 재고 카드형 UI

📌 실제 사례: 건강(乾薑) 약재

페루산: 5,000g @ 12.4원/g (총 62,000원)
한국산: 1,500g @ 51.4원/g (총 77,100원)

🔄 조제 시 원산지 선택 기능 (설계)

1. 데이터베이스 스키마 변경

-- compound_details 테이블에 로트 정보 추가
ALTER TABLE compound_details ADD COLUMN lot_id INTEGER;
ALTER TABLE compound_details ADD FOREIGN KEY (lot_id) REFERENCES inventory_lots(lot_id);

2. 조제 프로세스 개선

  1. 처방 선택 후 약재 목록 표시

    • 각 약재에 원산지 선택 옵션 제공
    • 기본값: 가장 저렴한 원산지
    • 선택 가능: 고품질(비싼) 원산지
  2. 원산지 선택 UI

    // 예시: 건강 30g 조제 시
    {
      herb: "건강",
      required: 30,
      options: [
        {origin: "페루", price: 12.4, available: 5000},
        {origin: "한국", price: 51.4, available: 1500}
      ]
    }
    
  3. 가격 차이 실시간 표시

    • 기본 선택: 페루산 30g = 372원
    • 프리미엄 선택: 한국산 30g = 1,542원
    • 차이: +1,170원

3. API 엔드포인트 추가

  • GET /api/herbs/<id>/lots - 약재별 가용 로트 목록
  • POST /api/compounds/calculate - 원산지별 가격 계산
  • POST /api/compounds/dispense - 원산지 지정 조제

4. FIFO 변형 전략

  • 기본: 저렴한 원산지 우선 (Cost-Optimized FIFO)
  • 선택: 특정 원산지 지정 가능
  • 혼합: 일부는 저렴, 일부는 고품질

💡 비즈니스 가치

  1. 환자 선택권: 가격 vs 품질 선택 가능
  2. 투명성: 원산지별 가격 명시
  3. 재고 관리: 원산지별 재고 추적
  4. 수익성: 프리미엄 옵션 제공

🚀 구현 우선순위

  1. 원산지별 재고 표시 (완료)
  2. 재고 상세 모달 (완료)
  3. 조제 시 원산지 선택 UI
  4. 원산지별 가격 계산
  5. 조제 이력에 원산지 기록