# Seed Scripts for Employees

ไฟล์สำหรับ seed พนักงานจาก CSV

## ไฟล์ที่สร้างขึ้น

### 1. `src/db/seed-branches.ts`

สร้าง branches ที่จำเป็นต้องใช้กับพนักงานจาก CSV

### 2. `src/db/seed-emp.ts`

อ่านพนักงานจากไฟล์ `alla-emp.csv` และ seed เข้า database

## วิธีใช้งาน

### ขั้นตอนที่ 1: Seed Branches

```bash
npx tsx src/db/seed-branches.ts
```

สคริปต์นี้จะสร้าง 3 สาขาที่ตรงกับ branch_id ใน CSV:

- `b6722de8-562b-4d51-8ad2-1f6df826a772` - สาขาหลัก (ที่ 1)
- `c76ce8ec-6062-4e48-9d22-0aaaa6be79b2` - สาขาหลัก (ที่ 2)
- `8724a231-108b-4c74-a778-0eafd282edd4` - สาขาหลัก (ที่ 3)

### ขั้นตอนที่ 2: Seed Employees

```bash
npx tsx src/db/seed-emp.ts
```

สคริปต์นี้จะ:

- อ่านไฟล์ `alla-emp.csv` จาก project root
- ตรวจสอบว่าทุก branch_id มีอยู่ใน database หรือไม่
- ตรวจสอบพนักงานที่มีอยู่แล้ว (เพื่อหลีกเลี่ยง duplicate)
- Insert พนักงานใหม่เป็น batch 50 คนต่อครั้ง
- แสดงรายงานผล

## ข้อมูลใน CSV

ไฟล์ `alla-emp.csv` มีโครงสร้างดังนี้:

```
id,employee_id,name,branch_id,pin
```

- `id`: UUID ของพนักงาน
- `employee_id`: รหัสพนักงาน (เช่น 00001, 01756, etc.)
- `name`: ชื่อพนักงาน
- `branch_id`: UUID ของสาขา
- `pin`: PIN hash (SHA-256)

## ข้อมูลสรุป

- จำนวนพนักงานทั้งหมด: **424 คน**
- จำนวนสาขา: **3 สาขา**
- PIN เริ่มต้น: ทุกคนใช้ PIN เดียวกัน (hash ของ "1234")

## การจัดการข้อผิดพลาด

### กรณีไม่พบไฟล์ CSV

```
❌ CSV file not found: .../alla-emp.csv
   Please make sure alla-emp.csv is in the project root directory.
```

### กรณีไม่พบ Branch

```
❌ Missing branches in database:
   - b6722de8-562b-4d51-8ad2-1f6df826a772
   ...
❌ Please run seed.ts first to create branches, or add the missing branches manually.
```

## การใช้งานซ้ำ

หาก run `seed-emp.ts` ซ้ำ:

- จะข้ามพนักงานที่มีอยู่แล้ว (based on ID)
- เพิ่มเฉพาะพนักงานใหม่ที่ยังไม่มีใน database

## หมายเหตุ

- สคริปต์เหล่านี้แยกจาก `seed.ts` ดั้งเดิม
- สามารถใช้ร่วมกับ `seed.ts` หรือแยกอิสระก็ได้
- ไม่มีผลกระทบกับข้อมูล candidates, votes, หรือ settings
