- 전화번호 포맷팅 (010-1234-5678 형식) 전역 적용
- 주민번호 마스킹 포맷팅 (980520-1****** 형식)
- 대시보드에 총 마일리지, 이번달 매출, 마진, 마진율 통계 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 환자 목록에 마일리지 잔액 컬럼 추가
- 마일리지가 있는 회원은 돼지저금통 아이콘 표시
- 환자 편집 모달에 마일리지 관리 섹션 추가
- 현재 잔액, 총 적립, 총 사용 표시
- 마일리지 적립/차감 버튼 (추후 구현 예정)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 판매 관리 기능 추가
- compounds 테이블에 판매 관련 컬럼 추가 (payment_method, discount_rate, delivery_method 등)
- 판매 상태 관리 (조제완료→결제대기→결제완료→배송대기→배송완료)
- 판매 처리 모달 UI 구현
- 9가지 상태별 뱃지 표시
- 마일리지 시스템 구축
- patients 테이블에 마일리지 컬럼 추가 (balance, earned, used)
- mileage_transactions 테이블 생성 (거래 이력 관리)
- 마일리지 사용/적립 기능 구현
- 복합 결제 기능
- 할인율(%) / 할인액(원) 직접 입력 선택 가능
- 마일리지 + 현금 + 카드 + 계좌이체 복합 결제
- 결제 금액 자동 검증
- 결제 방법 자동 분류 (복합결제 지원)
- API 엔드포인트 추가
- POST /api/compounds/<id>/status (상태 업데이트)
- PUT /api/compounds/<id>/price (가격 조정)
- GET /api/sales/statistics (판매 통계)
- 데이터베이스 설정 통합
- config.py 생성하여 DB 경로 중앙화
TODO: 처방별 기본가격 정책 시스템 (price_policies 테이블 활용)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 개발/테스트 스크립트를 dev_scripts/ 폴더로 이동
- 스크린샷을 screenshots/ 폴더로 이동
- 백업 파일 보존 (.backup)
- 처방 관련 추가 스크립트 포함
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- DB: formulas 테이블에 efficacy 칼럼 추가
- API: 처방 생성/수정/조회 시 efficacy 필드 처리
- UI: 처방 등록/수정 모달에 주요 효능 입력 필드 추가
- UI: 처방 상세 화면에 주요 효능 표시
- 기존 처방들의 주요 효능 데이터 입력 완료
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## 구현 내용
### 1. 백엔드 (app.py)
- 수동 로트 배분 지원 (lot_assignments 배열 처리)
- 각 로트별 지정 수량만큼 재고 차감
- 검증: 배분 합계 확인, 재고 충분 확인
- compound_consumptions 테이블에 각 로트별 소비 기록
### 2. 프론트엔드 (app.js, index.html)
- 로트 배분 모달 UI 구현
- 로트별 재고, 단가 표시
- 수동 입력 및 자동 배분 기능
- 실시간 합계 계산 및 검증
- 원산지 선택에 "수동 배분" 옵션 추가 (로트 2개 이상 시)
- 조제 저장 시 lot_assignments 포함
### 3. 테스트
- 테스트용 당귀 로트 추가 (한국산)
- E2E 테스트 성공
- 당귀 100g을 2개 로트(중국산 60g + 한국산 40g)로 배분
- 각 로트별 재고 정확히 차감
- 소비 내역 올바르게 기록
## 장점
- DB 스키마 변경 없음
- 기존 자동 선택과 호환
- 재고 부족 시 여러 로트 조합 가능
- 원가 최적화 가능
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- /api/herbs/by-ingredient 엔드포인트에서 specification이 '기타'로 표시되는 문제 수정
- specification 값이 없을 때 '일반'으로 표시
- '세화' 제조사 추가 인식
- 실제 specification 값을 그대로 표시하도록 개선
- 칼럼 헤더 '원산지 선택' → '제품/로트 선택'으로 변경
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 환자 처방 내역 모달에서 처방 행 클릭 시 상세 정보 펼침
- 중첩 모달 문제 해결을 위해 인라인 표시 방식으로 변경
- 구성 약재 정보 테이블 표시 (약재명, 보험코드, 첩당용량, 총용량)
- 재고 소비 내역 테이블 표시 (약재명, 원산지, 도매상, 사용량, 단가, 원가)
- 총 원가 자동 계산 및 표시
- chevron 아이콘으로 펼침/접힘 상태 표시
- 다른 행 클릭 시 자동으로 이전 행 닫기
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 환자 목록에 처방 횟수 표시 (배지)
- 환자별 처방 내역 조회 버튼 추가
- 환자 처방 내역 모달 추가 (통계 + 상세 내역)
- 총 처방 횟수, 최근 방문일, 총 제수, 총 처방비
- 전체 처방 내역 테이블 (조제일, 처방명, 상태 등)
- 각 처방의 상세 보기 기능 연동
- 환자 개별 조회 API 엔드포인트 추가 (GET /api/patients/<id>)
- 환자 편집 버튼 UI 추가 (기능 준비)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 재고 보정 모달 UI 추가 (약재, 로트, 수량 관리)
- 재고 보정 내역 조회 모달 추가
- 재고 보정 상세 조회 모달 추가
- 자동 델타 계산 기능 (보정 전/후 비교)
- 로트별 재고 선택 및 원산지별 그룹화
- 보정 유형: 감모/손실, 발견, 재고조사, 파손, 유통기한 경과
- API 데이터 형식 수정 (items → details)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## 재고 보정 기능
- 재고 보정 테이블 추가 (stock_adjustments, stock_adjustment_details)
- 보정 타입: LOSS(감모), FOUND(발견), RECOUNT(재고조사), DAMAGE(파손), EXPIRE(유통기한)
- 보정 번호 자동 생성: ADJ-YYYYMMDD-XXXX
## API 엔드포인트
- GET /api/stock-adjustments - 보정 내역 조회
- GET /api/stock-adjustments/<id> - 보정 상세 조회
- POST /api/stock-adjustments - 보정 생성
## 재고 원장 연동
- 보정 내역이 stock_ledger에 자동 기록 (ADJUST 타입)
- 입출고 원장에서 보정 내역 필터링 가능
- 참고번호: ADJ-20260215-0001
## 사용자 추적
- created_by 필드로 보정 담당자 기록
- 향후 계정 시스템 연동 준비
한약재 loss 관리 및 재고조사 기능 완비!
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## 처방 관리 (조제) 기능
- compounds API 추가 (목록/상세/환자별 조회)
- 조제 시 자동 재고 차감 (FIFO)
- 조제 내역 UI (EMR 스타일)
- 조제 상세보기 모달 (처방구성, 재고소비내역)
- 오늘/이번달 조제 통계 표시
## 재고 원장 시스템
- stock-ledger API 구현
- 입출고 내역 실시간 추적
- 재고 현황 페이지 개선 (통계 카드 추가)
- 입출고 원장 모달 UI
- 약재별/전체 입출고 내역 조회
## 확인된 동작
- 박주호 환자 오미자 200g 조제
- 재고 2000g → 1800g 정확히 차감
- 모든 입출고 stock_ledger에 기록
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
DB 구조 개선:
- 454개 주성분코드 기반 herb_masters 테이블 생성
- 53,769개 제품 데이터를 herb_products 테이블에 임포트
- 128개 업체 정보를 product_companies 테이블에 추가
- 기존 herb_items에 ingredient_code 매핑 (100% 완료)
UI/API 개선:
- 급여 약재 보유 현황 표시 (28/454 = 6.2%)
- 재고 현황에 프로그레스 바 추가
- 주성분코드 기준 통계 API 추가
문서화:
- 데이터베이스 리팩토링 제안서 작성
- 리팩토링 결과 보고서 작성
- 백업 정보 문서화
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
API 개선:
- /api/herbs, /api/inventory/summary에 효능 태그 추가
- 조제 시 원산지 선택 처리 로직 추가
- 원산지별 FIFO 또는 자동 선택 (저렴한 것부터)
UI 개선:
- 재고 목록에 효능 태그 표시 (녹색 배지)
- 처방 선택에 "직접조제" 옵션 추가
- 조제 시 원산지 선택 드롭다운 추가
- JavaScript 주석 블록 오류 수정
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
✨ 새로운 기능
- 입고장 목록 조회 (날짜/공급업체 필터링)
- 입고장 상세 보기 (모달 팝업)
- 입고장 삭제 (재고 미사용시만 가능)
- 입고장 라인별 수정 API
📊 화면 구성
1. 입고장 목록 테이블
- 입고일, 공급업체, 품목수, 총수량, 총금액
- 상세보기, 삭제 버튼
2. 입고장 필터링
- 시작일/종료일 선택
- 공급업체별 조회
🔧 백엔드 API
- GET /api/purchase-receipts - 입고장 목록
- GET /api/purchase-receipts/<id> - 입고장 상세
- PUT /api/purchase-receipts/<id>/lines/<line_id> - 라인 수정
- DELETE /api/purchase-receipts/<id> - 입고장 삭제
🛡️ 안전장치
- 이미 조제에 사용된 재고는 수정/삭제 불가
- 재고 원장에 모든 변동사항 기록
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
✨ 주요 기능
- 환자 관리: 환자 등록 및 조회 (이름, 전화번호, 주민번호, 성별)
- 입고 관리: Excel 파일 업로드로 대량 입고 처리
- 처방 관리: 약속 처방 템플릿 등록 및 관리
- 조제 관리: 처방 기반 조제 및 약재 가감 기능
- 재고 관리: 실시간 재고 현황 및 로트별 관리
🛠️ 기술 스택
- Backend: Flask (Python 웹 프레임워크)
- Database: SQLite (경량 관계형 데이터베이스)
- Frontend: Bootstrap + jQuery
- Excel 처리: pandas + openpyxl
🔧 핵심 개념
- 1제 = 20첩 = 30파우치 (기본값)
- FIFO 방식 재고 차감
- 로트별 원산지/단가 관리
- 정확한 조제 원가 계산
📁 프로젝트 구조
- app.py: Flask 백엔드 서버
- database/: 데이터베이스 스키마 및 파일
- templates/: HTML 템플릿
- static/: JavaScript 및 CSS
- sample/: 샘플 Excel 파일
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>