kdrug-inventory-system/README.md
시골약사 116712aa24 docs: 데이터베이스 스키마 및 API 문서 추가
- database_schema.md: 전체 테이블 구조 상세 설명
  - 27개 테이블의 컬럼 정의 및 설명
  - 테이블 간 관계 설명
  - 주요 비즈니스 규칙 문서화

- database_erd.md: ER 다이어그램 및 데이터 플로우
  - Mermaid 다이어그램으로 시각화
  - 재고 흐름도, 처방-조제 흐름 설명
  - 인덱스 전략 및 데이터 무결성 규칙

- api_documentation.md: REST API 상세 명세
  - 약재, 처방, 조제, 재고, 환자 관리 API
  - 요청/응답 형식 예시
  - 에러 처리 방식

- README 업데이트: 문서 링크 추가

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

Co-Authored-By: Claude <noreply@anthropic.com>
2026-02-15 19:07:34 +00:00

214 lines
6.8 KiB
Markdown

# 한약 재고관리 시스템
한의원/한약방을 위한 웹 기반 재고관리 및 조제관리 시스템입니다.
## 주요 기능
### 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 차감**: 오래된 재고부터 우선 사용
- **원가 추적**: 로트별 단가 기준 정확한 원가 계산
## 📚 문서
- [데이터베이스 스키마](docs/database_schema.md) - 전체 테이블 구조 상세 설명
- [ER 다이어그램](docs/database_erd.md) - 엔티티 관계도 및 데이터 플로우
- [API 문서](docs/api_documentation.md) - REST API 엔드포인트 상세 명세
## 설치 방법
### 1. 필수 요구사항
- Python 3.8 이상
- pip (Python 패키지 관리자)
### 2. 설치 과정
```bash
# 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. 초기 설정
1. 시스템 실행 후 웹 브라우저로 접속
2. 약재 마스터 데이터 준비 (Excel 업로드로 자동 생성 가능)
### 2. Excel 입고장 업로드
Excel 파일 형식 (필수 컬럼):
- 제품코드 (보험코드 9자리)
- 업체명
- 약재명
- 구입일자 (YYYYMMDD)
- 구입량 (그램 단위)
- 구입액 (원)
- 원산지
### 3. 환자 등록
1. 좌측 메뉴에서 "환자 관리" 클릭
2. "새 환자 등록" 버튼 클릭
3. 필수 정보 입력 (이름, 전화번호)
4. 선택 정보 입력 (주민번호, 성별, 생년월일 등)
### 4. 처방 등록 (약속 처방)
1. 좌측 메뉴에서 "처방 관리" 클릭
2. "새 처방 등록" 버튼 클릭
3. 처방명 입력 (예: 쌍화탕, 보중익기탕 등)
4. 구성 약재 추가
- 약재 선택
- 1첩당 용량(g) 입력
5. 저장
### 5. 조제 실행
1. 좌측 메뉴에서 "조제 관리" 클릭
2. "새 조제" 버튼 클릭
3. 환자 선택
4. 처방 선택 (등록된 처방 템플릿)
5. 제수 입력 (기본 1제)
6. 약재 가감 (필요시)
- 용량 조정
- 약재 추가/삭제
7. "조제 실행" 클릭
8. 자동으로 재고 차감 및 원가 계산
### 6. 재고 확인
1. 좌측 메뉴에서 "재고 현황" 클릭
2. 약재명으로 검색 가능
3. 현재 재고량, 로트 수, 평균 단가, 재고 금액 확인
## 시스템 특징
### 장점
- **간편한 Excel 업로드**: 기존 Excel 입고장을 그대로 활용
- **약속 처방 기능**: 자주 사용하는 처방을 템플릿으로 저장
- **가감 기능**: 처방 기본 구성에서 유연한 조정 가능
- **정확한 원가 계산**: 로트별 단가 추적으로 정확한 원가 산출
- **FIFO 재고 관리**: 선입선출 원칙 자동 적용
- **웹 기반**: 별도 설치 없이 브라우저에서 사용
### 보안 고려사항
- 주민번호 등 민감 정보는 암호화 필요 (프로덕션 환경)
- 사용자 인증/권한 관리 기능 추가 필요
- HTTPS 적용 권장
## 향후 개발 계획
1. **보험 청구 연동**
- 건강보험 첩약 코드 완벽 지원
- 청구 자료 자동 생성
2. **고급 리포트**
- 월별/분기별 매출 분석
- 약재별 사용량 통계
- 환자별 처방 이력
3. **모바일 지원**
- 반응형 웹 디자인
- 모바일 앱 개발
4. **재고 알림**
- 최소 재고 수준 설정
- 재고 부족 알림
- 유효기간 임박 알림
5. **다중 사용자**
- 사용자 계정 관리
- 권한별 접근 제어
- 작업 이력 추적
## 기술 스택
- **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
## 라이선스
이 프로젝트는 교육 및 테스트 목적으로 제작되었습니다.
상업적 사용 시 별도 협의가 필요합니다.
## 문의
기술 지원 및 문의사항은 이슈 트래커를 통해 등록해주세요.