From 831584f75203d70acafd8317efe6266bc57559be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=8B=9C=EA=B3=A8=EC=95=BD=EC=82=AC?= Date: Wed, 18 Feb 2026 02:46:27 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20=EC=9E=85=EA=B3=A0=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EA=B0=80=EC=9D=B4=EB=93=9C=EB=9D=BC=EC=9D=B8=20?= =?UTF-8?q?=EB=B0=8F=20=EA=B0=9C=EB=B0=9C=20=EA=B7=9C=EC=B9=99=20=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 입고장 → 입고 라인 → LOT 생성 프로세스 명시 - inventory_lots 직접 INSERT 금지 규칙 - 재고 계산 모드별 설명 - 데이터베이스 구조 및 흐름도 추가 - 개발 시 주의사항 정리 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .claude/claude.md | 123 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 .claude/claude.md diff --git a/.claude/claude.md b/.claude/claude.md new file mode 100644 index 0000000..ac79255 --- /dev/null +++ b/.claude/claude.md @@ -0,0 +1,123 @@ +# 한약 재고관리 시스템 - 개발 가이드라인 + +## 📋 테스트 데이터 입력 규칙 + +### 🔴 중요: 입고 테스트 시 필수 준수사항 + +**모든 재고 입고 테스트는 반드시 다음 프로세스를 따라야 합니다:** + +1. **입고장 생성 (purchase_receipts)** + - 공급업체, 날짜, 총액 등 기본 정보 등록 + - VAT 포함/미포함 구분 + +2. **입고 라인 생성 (purchase_receipt_lines)** + - 각 약재별 상세 입고 정보 + - 수량, 단가, 원산지 등 기록 + +3. **재고 LOT 자동 생성 (inventory_lots)** + - 입고 라인에 따라 자동으로 LOT 생성 + - `receipt_line_id`로 입고장과 연결 + - 재고 추적 및 이력 관리 + +### ❌ 금지사항 +- inventory_lots 테이블에 직접 데이터 INSERT 금지 +- 입고장 없이 재고만 추가하는 것은 테스트 목적 외 금지 + +### ✅ 올바른 예시 + +```python +# 1. 입고장 생성 +INSERT INTO purchase_receipts (supplier_id, receipt_date, receipt_no, ...) +VALUES (1, '2024-02-18', 'PR-20240218-001', ...); + +# 2. 입고 라인 추가 +INSERT INTO purchase_receipt_lines (receipt_id, herb_item_id, quantity_g, ...) +VALUES (1, 47, 1000, ...); + +# 3. LOT은 자동 생성되거나 트리거로 처리 +INSERT INTO inventory_lots (receipt_line_id, ...) # receipt_line_id 필수! +``` + +### 📌 특수 케이스 + +**입고장 없는 재고 테스트가 필요한 경우:** +- `receipt_line_id = 0` 사용 (입고장 없음 표시) +- 반드시 테스트 완료 후 삭제 또는 원복 +- 실제 운영 환경에서는 사용 금지 + +--- + +## 🗂️ 데이터베이스 구조 + +### 핵심 테이블 관계 +``` +purchase_receipts (입고장) + ↓ +purchase_receipt_lines (입고 상세) + ↓ +inventory_lots (재고 LOT) - receipt_line_id로 연결 + ↓ +compound_consumptions (소비 내역) +``` + +### 재고 계산 방식 + +1. **전체 재고 (all)** + - 모든 LOT 포함 + - `receipt_line_id = 0` 포함 + +2. **입고장 기준 (receipt_only)** + - `receipt_line_id > 0`인 LOT만 + - 정식 입고된 재고만 계산 + +3. **검증된 재고 (verified)** + - 현재는 입고장 기준과 동일 + - 향후 별도 검증 플래그 추가 예정 + +--- + +## 🔄 재고 흐름 + +```mermaid +graph LR + A[입고장 등록] --> B[입고 라인 생성] + B --> C[LOT 자동 생성] + C --> D[재고 보유] + D --> E1[복합제 소비] + D --> E2[처방 출고] + D --> E3[재고 보정] +``` + +--- + +## 💡 개발 시 주의사항 + +1. **재고 자산 계산** + - 효능 태그 JOIN 시 중복 주의 + - GROUP BY 전에 DISTINCT 사용 + - 태그는 별도 쿼리로 조회 권장 + +2. **LOT 관리** + - receipt_line_id는 NOT NULL 제약 + - 0 = 입고장 없음 (특수 케이스) + - NULL 사용 불가 + +3. **단가 처리** + - 입고 시점 단가 저장 + - 출고 시 LOT의 단가 사용 + - 가중평균 계산 시 주의 + +--- + +## 📝 테스트 체크리스트 + +- [ ] 입고장 생성 확인 +- [ ] 입고 라인과 LOT 연결 확인 +- [ ] 재고 자산 계산 정확성 +- [ ] 소비 후 재고 차감 확인 +- [ ] 재고 보정 처리 확인 + +--- + +*Last Updated: 2024-02-18* +*작성자: Claude & User* \ No newline at end of file