This commit is contained in:
phaichayon
2026-04-17 23:26:17 +07:00
commit d5ad7f841f
105 changed files with 31656 additions and 0 deletions

92
SEED_README.md Normal file
View File

@@ -0,0 +1,92 @@
# 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