README.md

7.27 KB
09/07/2025 01:10
MD
# MVP Leave Bot

ระบบบอท Telegram สำหรับการจัดการการลา และ Work From Home พร้อมระบบลงทะเบียนใหม่ที่เรียบง่าย

## การตั้งค่าระบบลงทะเบียน

### ไฟล์คอนฟิก: `config/db_config.php`

```php
// การตั้งค่าการลงทะเบียน
define('ALLOW_SELF_REGISTRATION', true); // true = เปิดให้ลงทะเบียนด้วยตัวเอง, false = ใช้เฉพาะสมาชิกในฐานข้อมูล
define('DEFAULT_MANAGER_ID', 1); // ผู้จัดการเริ่มต้นสำหรับพนักงานใหม่ (ID ของ HR หรือ Manager)
define('AUTO_GENERATE_EMPLOYEE_CODE', true); // สร้างรหัสพนักงานอัตโนมัติ
define('EMPLOYEE_CODE_PREFIX', 'EMP'); // คำนำหน้ารหัสพนักงาน
```

## ระบบลงทะเบียนใหม่

### เมื่อ `ALLOW_SELF_REGISTRATION = true`
- ผู้ใช้สามารถลงทะเบียนด้วยตัวเองผ่านคำสั่ง `/register`
- ระบบจะขอข้อมูล: ชื่อจริง, นามสกุล, อีเมล
- ข้อมูลจะถูกบันทึกลงตาราง `employees` โดยตรง
- ค่าเริ่มต้น: `is_manager = 0`, `is_hr = 0`

### เมื่อ `ALLOW_SELF_REGISTRATION = false`
- การลงทะเบียนด้วยตัวเองถูกปิดใช้งาน
- เฉพาะผู้ใช้ที่มีข้อมูลในตาราง `employees` เท่านั้นที่สามารถใช้บอทได้
- ผู้ดูแลระบบต้องเพิ่มข้อมูลผู้ใช้ผ่าน SQL โดยตรง

## การใช้งาน

### คำสั่งหลัก
- `/start` - เริ่มการสนทนา
- `/register` - ลงทะเบียนเข้าใช้งานระบบ (เมื่อเปิดใช้งาน)
- `/status` - ตรวจสอบสถานะการลงทะเบียน
- `/help` - แสดงคำสั่งที่ใช้ได้

### คำสั่งสำหรับผู้ใช้ที่ลงทะเบียนแล้ว
- `/ลา` หรือ `/leave` - เริ่มขั้นตอนการขอลา
- `/wfh` - เริ่มขั้นตอนการขอ Work From Home
- `/เช็คยอด` หรือ `/balance` - ตรวจสอบยอดวันลาคงเหลือ
- `/ยกเลิกคำขอ` หรือ `/cancelrequest` - ยกเลิกคำขอที่รออนุมัติ
- `/สรุปวันนี้` หรือ `/whosout` - (HR) สรุปผู้ที่ไม่อยู่ในออฟฟิศวันนี้
- `/cancel` - ยกเลิกการดำเนินการปัจจุบัน

## กระบวนการลงทะเบียน

1. **เริ่มต้น**: ผู้ใช้พิมพ์ `/register`
2. **ชื่อจริง**: ระบบขอชื่อจริง (อย่างน้อย 2 ตัวอักษร)
3. **นามสกุล**: ระบบขอนามสกุล (อย่างน้อย 2 ตัวอักษร)
4. **อีเมล**: ระบบขออีเมล (ตรวจสอบรูปแบบและไม่ซ้ำในระบบ)
5. **ยืนยัน**: แสดงข้อมูลให้ยืนยัน (พิมพ์ "ถูกต้อง" หรือ "ยกเลิก")
6. **เสร็จสิ้น**: บันทึกข้อมูลลงฐานข้อมูลและแสดงข้อมูลสมาชิกใหม่

## ไฟล์ State การลงทะเบียน

- เก็บไว้ในโฟลเดอร์ `logs/`
- รูปแบบ: `registration_{userId}_{chatId}.json`
- หมดอายุใน 30 นาที
- ลบอัตโนมัติเมื่อเสร็จสิ้นหรือยกเลิก

## การติดตั้ง

1. **Database**: นำเข้า `leave_bot.sql` เพื่อสร้างตารางและข้อมูลตัวอย่าง
2. **Config**: แก้ไข `config/db_config.php` และ `config/telegram_config.php`
3. **Permissions**: ตรวจสอบว่าโฟลเดอร์ `logs/` สามารถเขียนได้
4. **Webhook**: ตั้งค่า webhook ไปที่ `webhook_handler.php` (ไฟล์หลัก)

## ตารางฐานข้อมูลหลัก

- **`employees`**: ข้อมูลพนักงาน
- **`leave_types`**: ประเภทการลา
- **`leave_requests`**: คำขอลา/WFH
- **`leave_balances`**: ยอดวันลาคงเหลือ

## การจัดการสิทธิ์

- **พนักงานทั่วไป**: `is_manager = 0`, `is_hr = 0`
- **ผู้จัดการ**: `is_manager = 1`, `is_hr = 0`
- **HR**: `is_manager = 1`, `is_hr = 1`

## ข้อมูลสำคัญ

- การลงทะเบียนทำผ่านการกรอกข้อมูลโดยตรงและบันทึกลงตาราง `employees`
- การตั้งค่าทั้งหมดอยู่ในไฟล์ PHP config แทนการเก็บในฐานข้อมูล
- ระบบง่ายขึ้น ลดขั้นตอน และเหมาะสำหรับการใช้งานจริง
- **ไฟล์หลักถูกย้ายออกจาก `public/` มาที่ root directory เพื่อความสะดวกในการจัดการ**


## Structure
```
├── config/
│   ├── db_config.php       # Database configuration + Registration settings
│   └── telegram_config.php # Telegram bot token
├── src/
│   ├── Core/
│   │   └── Database.php   # Database connection class
│   ├── Handlers/
│   │   ├── LeaveApplicationHandler.php
│   │   ├── BalanceCheckHandler.php
│   │   ├── CancelRequestHandler.php
│   │   ├── ManagerActionHandler.php
│   │   ├── HrSummaryHandler.php
│   │   └── SelfRegistrationHandler.php  # NEW: Self registration
│   ├── Models/
│   │   ├── Employee.php
│   │   ├── LeaveRequest.php
│   │   ├── LeaveBalance.php
│   │   └── LeaveType.php
│   └── Services/
│       └── TelegramService.php
├── assets/                 # CSS, JS, images (if needed)
├── logs/                   # Registration state files & webhook logs
├── index.php               # Optional web interface
├── webhook_handler.php     # Main webhook handler (MOVED from public/)
└── leave_bot.sql          # Database schema (simplified)
```