# 실습 데이터: 동정광 도입 실적 대시보드

가상의 동제련사(온산메탈) 원료부문 데이터입니다. **모든 공급사·광산·선박·계약 조건·수치는 생성된 가짜 데이터**이며 실제 기업·계약과 무관합니다.

기준일: **2026-08-31** (당월 = 2026년 8월). 기간: 최근 24개월(2024-09 ~ 2026-08).

수강생 배포 주소: **https://ax-workshop-site.vercel.app/ls-workshop/** (ore-data-files.zip). 소스 `~/sideproject/ax-workshop-site/ls-workshop/ore-data/`.

## 파일

| 파일 | 내용 | 행 수 |
|---|---|---|
| `shipments.csv` | 선적(하역) 건별 실적 — 중량·품위·TC/RC·QP·가정산/최종정산 | 271건 |
| `contracts.csv` | 계약 마스터 — 공급사별 조건(지급률·QP·TC/RC·페널티) | 7건 (장기 5 · 스팟 2) |
| `inventory_monthly.csv` | 월별 원료 재고 — 기초·입고·투입·기말·안전재고 | 24개월 |
| `generate_mock_ore.py` | 생성 스크립트 (seed 고정, 표준 라이브러리만) | — |

인코딩은 UTF-8(BOM) — 엑셀에서 바로 열립니다. 금액은 USD.

## shipments.csv 컬럼

| 컬럼 | 값 | 비고 |
|---|---|---|
| 선적번호 | `SHP-2026-0143` | 선적연도-순번 |
| 계약번호 | `LT-CAM-2025`, `SP-ANT` … | contracts.csv와 조인 키 |
| 공급사 / 광산 / 원산국 | 가상 명칭 | 스팟 트레이더는 광산이 "혼합" |
| 계약유형 | 장기 / 스팟 | |
| 선박명 / 선적항 | | |
| 선적일 / 입항일 / 하역완료일 | YYYY-MM-DD | 선적일 = B/L 일자, 입항일 = NOR 제출일 |
| 하역지연일 | 일 | 입항 후 표준 2일을 넘긴 일수 |
| 습중량_WMT / 수분_pct / 건중량_DMT | | **도입량은 건중량(DMT)으로 집계** — WMT로 합치면 틀림 |
| Cu_pct / Au_gpt / Ag_gpt / As_ppm / Pb_pct | 온산 확정 품위 | |
| TC_usd_dmt / RC_c_lb | 적용 단가 | 스팟은 건별(마이너스 가능) |
| QP월 / LME_Cu_QP평균_usd_t | | 장기 M+1, 스팟 M+0 |
| 가정산금액_usd | 공급사 수치·B/L 시점 가격 기준 100% 가치 | |
| 최종정산금액_usd | 온산 확정치·QP 평균 기준 | 정산상태가 가정산이면 빈칸 |
| 정산차이_usd | 최종 − 가정산 | 음수면 가정산 대비 최종이 낮음 |
| 정산상태 | 가정산 / 최종 / 분쟁 | 분쟁 = 검질 umpire 진행 중 |
| 품질이슈 | 없음 / 수분초과 / As초과 / 검질분쟁 (복수는 ·로 연결) | 수분 > 9.5%, As > 2,000 ppm |

## contracts.csv 컬럼

계약번호, 공급사, 광산, 원산국, 계약유형, 계약시작, 계약종료, 연간물량_DMT, 선적항, TC_2025_usd_dmt, RC_2025_c_lb, TC_2026_usd_dmt, RC_2026_c_lb, Cu지급률_pct, Cu최소공제_unit, Au지급률_pct, Au최소공제_gpt, Ag지급률_pct, Ag최소공제_gpt, QP기준, As페널티기준_ppm, As페널티_usd_dmt_per_1000ppm, 수분상한_pct, 인도조건

## inventory_monthly.csv 컬럼

월, 기초재고_DMT, 입고_DMT, 투입_DMT, 기말재고_DMT, 안전재고_DMT, 안전재고대비_pct, 재고일수

## 자주 쓰는 계산 정의

- **도입량**: 하역완료일 기준 월별 건중량(DMT) 합계
- **평균 품위**: 건중량 가중 평균 (단순 평균 아님)
- **정산 손익**: 최종정산금액 − 가정산금액 (최종 건만)
- **분쟁률**: 정산상태 = 분쟁 건수 ÷ 최종 정산 대상 건수
- **하역 지연율**: 하역지연일 ≥ 3 건수 ÷ 전체
- **재고일수**: 기말재고 ÷ (당월 투입 ÷ 30)
- **안전재고 하회**: 기말재고 < 안전재고

## 재생성

```bash
python3 generate_mock_ore.py
```

## 1차 대시보드 예시

상위 폴더의 `build_dashboard.py`가 CSV 3개로 `dashboard.html`(단일 파일, 외부 의존 없음)을 만듭니다. 브라우저에서 열면 공급사·계약유형·원산국·기간 필터가 즉시 재계산됩니다.

```bash
python3 ../build_dashboard.py
```
