QR-Line คือระบบจัดการคิวร้านอาหารผ่าน QR Code สำหรับหน้าร้าน เดลิเวอรี่ หน้าจอประกาศคิว และหลังร้านในแอปเดียว
โค้ดหลักของระบบอยู่ใน src/qrline/ และรันผ่าน app.py.
ถ้าได้รับโปรเจคเป็นไฟล์ zip:
- แตกไฟล์ zip ไปไว้ในโฟลเดอร์ที่ต้องการ
- เปิด PowerShell ในโฟลเดอร์โปรเจค
- รันคำสั่ง:
uv sync
uv run streamlit run app.pyถ้าต้องการดึงจาก GitHub:
git clone https://github.com/Teerapat-Vatpitak/qr-line-teaching.git
cd qr-line-teaching
uv sync
uv run streamlit run app.pyเปิดแอปที่ http://localhost:8501
| ส่วน | ใช้ทำอะไร |
|---|---|
| Home | ดูภาพรวมจำนวนคิว เมนู และสถิติวันนี้ |
| Staff | เพิ่มคิวลูกค้า เลือกเมนู เลือกช่องทาง และสร้าง QR สำหรับลูกค้า |
| Customer | ให้ลูกค้าดูสถานะคิวจาก QR หรือเลขคิว พร้อมเวลารอโดยประมาณ |
| Monitor | หน้าจอประกาศคิวสำหรับเปิดบนจอหน้าร้าน |
| Admin | เข้าระบบหลังร้าน เรียกคิว จบคิว ข้ามคิว ยกเลิกคิว ดูสถิติและ feedback |
- สารบัญเอกสารทั้งหมด
- คู่มือติดตั้งเครื่องมือจากเครื่องเปล่า
- คู่มือติดตั้ง
- Configuration reference
- Tech stack
- คู่มือสร้าง Google Sheets key
- คู่มือเทรน ETA/AI
- คู่มือใช้งานโปรแกรม
- คู่มือดูแลระบบ
- Production checklist
- Architecture
- Deployment
- Validation workflow
- Repo source of truth
| Path | บทบาท |
|---|---|
app.py |
launcher หลักสำหรับ Streamlit และ Streamlit Cloud |
src/qrline/ |
production package: pages, services, repositories, settings, theme |
data/runtime/ |
runtime state แบบ local JSON เช่น queue/history/feedback/audio |
data/ |
utility ที่ระบบใช้ร่วมกัน เช่น menu, Google Sheets helper, ETA/ML, voice |
scripts/ |
คำสั่งดูแลระบบ เช่น init Google Sheet, seed data, train ETA model |
tests/ |
automated tests |
docs/ |
เอกสารติดตั้ง ใช้งาน deploy และดูแลระบบ |
ดูค่า config ทั้งหมดที่ docs/configuration.md และตัวอย่าง secrets ที่ .streamlit/secrets.toml.example
QR-Line ใช้ backend ได้ 2 แบบ:
| Backend | เหมาะกับ | รายละเอียด |
|---|---|---|
local |
รันในเครื่องเดียวหรือ demo แบบ offline | เก็บข้อมูลที่ data/runtime/ |
google_sheets |
ใช้งานหลายเครื่องหรืออยากให้ข้อมูลอยู่บน Google Sheets | sync กับชีตจริงและมี local fallback |
เตรียม Google Sheets ด้วยคำสั่ง:
uv run python scripts/init_sheet.pyก่อนปล่อยใช้งานหรือ push code ให้รัน:
uv run pytest
uv run ruff check .
uv run pyright- ห้าม commit
.streamlit/secrets.tomlหรือ service account JSON ตัวจริง - เปลี่ยนรหัสผ่าน owner/staff ก่อนเปิดใช้งานจริง
- ให้สิทธิ์ Google Sheet เฉพาะ service account ที่ใช้กับระบบ
- ใช้ HTTPS สำหรับ URL จริงของลูกค้า เพื่อให้ QR ทำงานปลอดภัยกว่า local URL