Korean Traditional Medicine Inventory Management System - 한약 재고관리 시스템
- 100처방 마스터 CRUD API (목록조회/수정/구성약재조회) - 100처방 시드 데이터 100개 처방 로드 (init_db) - formulas API에 official_formula_id 및 가감(추가/제거/변경) 정보 포함 - create_formula: herb_item_id → ingredient_code 기반으로 수정 - create_formula: official_formula_id 저장 지원 - 조제 취소(CANCELLED) 시 inventory_lots 재고 복원 + stock_ledger RETURN 기록 - 입고장 삭제 시 취소된 조제의 compound_consumptions 정리 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| backups | ||
| database | ||
| dev_scripts | ||
| docs | ||
| migrations | ||
| refactoring | ||
| sample | ||
| screenshots | ||
| static | ||
| templates | ||
| uploads | ||
| .gitignore | ||
| add_efficacy_column.py | ||
| add_mileage_system.py | ||
| add_missing_herbs.py | ||
| add_prescription_data.py | ||
| add_sales_columns.py | ||
| add_sample_herb_data.py | ||
| add_samsoeun_formula.py | ||
| add_test_dangui_lot.py | ||
| add_wolbitang_formulas.py | ||
| add_wolbitang_prescriptions.py | ||
| app.py | ||
| app.py.backup_20260217_030950 | ||
| apply_variants_to_lots.py | ||
| check_compound_detail.py | ||
| check_compound_ingredients.py | ||
| check_compound_schema.py | ||
| claude.md | ||
| CLAUDE.md | ||
| config.py | ||
| create_adjustment_tables.py | ||
| create_sales_tables.py | ||
| direct_mapping.py | ||
| excel_processor.py | ||
| find_duplicate_issue.py | ||
| find_jihwang.py | ||
| find_jinpi.py | ||
| fix_database.py | ||
| get_ingredient_codes.py | ||
| gitea.md | ||
| import_hanisarang_catalog.py | ||
| insert_ssanghwa.py | ||
| README.md | ||
| reset_purchase_data.py | ||
| run_server.sh | ||
| test_custom_prescription.html | ||
| test_herb_select.html | ||
| test_lot_modal.html | ||
| update_existing_custom_prescriptions.py | ||
| update_receipt_numbers.py | ||
| update_sipjeondaebotang.py | ||
| update_ssanghwatang_danggui.py | ||
| update_wolbitang_jinpi.py | ||
| verify_samsoeun.py | ||
| verify_wolbitang.py | ||
| 기획문서.md | ||
한약 재고관리 시스템
한의원/한약방을 위한 웹 기반 재고관리 및 조제관리 시스템입니다.
주요 기능
1. 환자 관리
- 환자 등록 (이름, 전화번호, 주민번호, 성별, 생년월일)
- 환자 검색 및 조회
- 환자별 조제 이력 관리
2. 입고 관리
- Excel 파일을 통한 대량 입고 처리
- 도매상별 입고 관리
- 로트별 재고 추적 (원산지, 입고일, 단가 등)
3. 처방 관리 (약속 처방)
- 자주 사용하는 처방 템플릿 등록
- 처방별 구성 약재 및 용량 설정
- 처방 재사용 및 가감 기능
4. 조제 관리
- 처방 선택 후 즉시 조제
- 약재 가감 기능
- FIFO 방식 재고 차감
- 조제 원가 자동 계산
5. 재고 현황
- 실시간 재고 조회
- 약재별 재고 수량 및 금액
- 로트별 상세 재고 현황
시스템 아키텍처
┌─────────────────────────────────────────┐
│ 웹 브라우저 (클라이언트) │
│ HTML + Bootstrap + jQuery │
└──────────────────┬──────────────────────┘
│ HTTP/AJAX
│
┌──────────────────▼──────────────────────┐
│ Flask 웹 서버 (Backend) │
│ REST API + 템플릿 렌더링 │
└──────────────────┬──────────────────────┘
│
┌──────────────────▼──────────────────────┐
│ SQLite Database │
│ (재고, 환자, 처방, 조제 데이터) │
└─────────────────────────────────────────┘
데이터베이스 구조
핵심 테이블
herb_masters- 약재 마스터 (성분코드 기준, 454개 표준 약재)herb_items- 약재 제품 (제조사별 개별 제품)patients- 환자 정보suppliers- 도매상 정보purchase_receipts- 입고장 헤더purchase_receipt_lines- 입고장 상세inventory_lots- 로트별 재고formulas- 처방 마스터formula_ingredients- 처방 구성 약재 (ingredient_code 기반)compounds- 조제 작업compound_consumptions- 로트별 차감 내역stock_ledger- 재고 원장 (모든 변동 기록)
핵심 개념
- 성분코드 (ingredient_code): 표준 약재 식별자
- 2단계 약재 체계: 마스터(성분) → 제품(제조사별)
- 1제 = 20첩 = 30파우치 (기본값, 조정 가능)
- 로트 관리: 입고 시점별로 재고를 구분 관리
- FIFO 차감: 오래된 재고부터 우선 사용
- 원가 추적: 로트별 단가 기준 정확한 원가 계산
📚 문서
- 데이터베이스 스키마 - 전체 테이블 구조 상세 설명
- ER 다이어그램 - 엔티티 관계도 및 데이터 플로우
- API 문서 - REST API 엔드포인트 상세 명세
설치 방법
1. 필수 요구사항
- Python 3.8 이상
- pip (Python 패키지 관리자)
2. 설치 과정
# 1. 프로젝트 클론 또는 다운로드
cd kdrug
# 2. 가상환경 생성 및 활성화
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 3. 필요 패키지 설치
pip install flask flask-cors pandas openpyxl
# 4. 서버 실행
python app.py
3. 웹 브라우저에서 접속
http://localhost:5001
사용 방법
1. 초기 설정
- 시스템 실행 후 웹 브라우저로 접속
- 약재 마스터 데이터 준비 (Excel 업로드로 자동 생성 가능)
2. Excel 입고장 업로드
Excel 파일 형식 (필수 컬럼):
- 제품코드 (보험코드 9자리)
- 업체명
- 약재명
- 구입일자 (YYYYMMDD)
- 구입량 (그램 단위)
- 구입액 (원)
- 원산지
3. 환자 등록
- 좌측 메뉴에서 "환자 관리" 클릭
- "새 환자 등록" 버튼 클릭
- 필수 정보 입력 (이름, 전화번호)
- 선택 정보 입력 (주민번호, 성별, 생년월일 등)
4. 처방 등록 (약속 처방)
- 좌측 메뉴에서 "처방 관리" 클릭
- "새 처방 등록" 버튼 클릭
- 처방명 입력 (예: 쌍화탕, 보중익기탕 등)
- 구성 약재 추가
- 약재 선택
- 1첩당 용량(g) 입력
- 저장
5. 조제 실행
- 좌측 메뉴에서 "조제 관리" 클릭
- "새 조제" 버튼 클릭
- 환자 선택
- 처방 선택 (등록된 처방 템플릿)
- 제수 입력 (기본 1제)
- 약재 가감 (필요시)
- 용량 조정
- 약재 추가/삭제
- "조제 실행" 클릭
- 자동으로 재고 차감 및 원가 계산
6. 재고 확인
- 좌측 메뉴에서 "재고 현황" 클릭
- 약재명으로 검색 가능
- 현재 재고량, 로트 수, 평균 단가, 재고 금액 확인
시스템 특징
장점
- 간편한 Excel 업로드: 기존 Excel 입고장을 그대로 활용
- 약속 처방 기능: 자주 사용하는 처방을 템플릿으로 저장
- 가감 기능: 처방 기본 구성에서 유연한 조정 가능
- 정확한 원가 계산: 로트별 단가 추적으로 정확한 원가 산출
- FIFO 재고 관리: 선입선출 원칙 자동 적용
- 웹 기반: 별도 설치 없이 브라우저에서 사용
보안 고려사항
- 주민번호 등 민감 정보는 암호화 필요 (프로덕션 환경)
- 사용자 인증/권한 관리 기능 추가 필요
- HTTPS 적용 권장
향후 개발 계획
-
보험 청구 연동
- 건강보험 첩약 코드 완벽 지원
- 청구 자료 자동 생성
-
고급 리포트
- 월별/분기별 매출 분석
- 약재별 사용량 통계
- 환자별 처방 이력
-
모바일 지원
- 반응형 웹 디자인
- 모바일 앱 개발
-
재고 알림
- 최소 재고 수준 설정
- 재고 부족 알림
- 유효기간 임박 알림
-
다중 사용자
- 사용자 계정 관리
- 권한별 접근 제어
- 작업 이력 추적
기술 스택
- Backend: Flask 3.1.2 (Python Web Framework)
- Database: SQLite (경량 관계형 데이터베이스)
- Frontend: Bootstrap 5.1.3 + jQuery 3.6.0
- Excel 처리: pandas + openpyxl
- API: RESTful JSON API
라이선스
이 프로젝트는 교육 및 테스트 목적으로 제작되었습니다. 상업적 사용 시 별도 협의가 필요합니다.
문의
기술 지원 및 문의사항은 이슈 트래커를 통해 등록해주세요.