# 10. 옷장 시딩 스크립트

데모 시작 시 `unknown` 사용자 옷장을 프리셋 이미지로 한 번에 채우는 CLI 스크립트입니다. 서버를 띄울 필요 없이 터미널에서 바로 실행할 수 있습니다.

각 이미지에 대해 LLM 분석 + 고스트 마네킹 생성까지 수행하므로 수 분이 걸립니다(17장 기준).

## 전제 조건

- 프리셋 이미지가 아래 경로에 존재해야 합니다 (기본값):
  - `/home/ubuntu/ootd-poc/resources/men_garments/`
  - `/home/ubuntu/ootd-poc/resources/women_garments/`
- DB는 `alembic upgrade head`로 최신 상태여야 합니다.
- `.env`의 `LLM_PROVIDER`, API 키가 설정되어 있어야 합니다.

## 실행

레포 루트에서 venv 활성화 후:

```bash
source .venv/bin/activate

# 전체 초기화 후 시딩 (DB/스토리지 비움, unknown 사용자만 보존)
python scripts/seed_wardrobe.py --mode reset

# 기존 옷장 유지하고 추가 (재실행 시 중복 생성됨)
python scripts/seed_wardrobe.py --mode add

# 커스텀 리소스 디렉터리 (반복 지정 가능)
python scripts/seed_wardrobe.py --mode add \
  --resource-dir /path/to/more_garments \
  --resource-dir /path/to/other_garments
```

## 플래그

| 플래그 | 기본값 | 설명 |
|--------|--------|------|
| `--mode {reset,add}` | `add` | `reset`: DB+스토리지 초기화 후 시딩. `add`: 기존 유지, 추가만. |
| `--resource-dir PATH` | 기본 2개 경로 | 반복 지정 가능. 미지정 시 `men_garments` + `women_garments` 사용. |

## 출력

진행 상황이 stdout에 실시간 출력되고, 마지막에 서머리 JSON이 찍힙니다:

```json
{
  "mode": "reset",
  "images_processed": 17,
  "garments_created": 17,
  "ghosts_generated": 17,
  "errors": [],
  "reset_summary": {
    "deleted_garments": 0,
    "deleted_faces": 0,
    "deleted_users": 0,
    "deleted_files": 0
  }
}
```

- `errors`가 하나라도 있으면 exit code `1`로 종료됩니다.
- `errors[*].stage`: `"read"` (파일 읽기 실패) / `"analyze"` (LLM 분석 실패 또는 0개 반환) / `"ghost"` (고스트 생성 실패).
- 고스트 생성이 실패해도 garment 레코드는 유지되며, 나중에 `POST /api/v1/garments/{id}/ghost`로 개별 재시도할 수 있습니다.

## 참고 — HTTP 엔드포인트로도 가능

서버가 이미 실행 중이라면 `POST /api/v1/admin/seed`로 같은 동작을 트리거할 수 있습니다. 자세한 스펙은 [07-api-reference.md](07-api-reference.md#관리)를 참고하세요. 단, fetch는 블로킹이므로 장시간 대기하는 UI가 필요합니다 — 일반적으로 CLI 스크립트가 더 편리합니다.
