Tài liệu Hand Counter Tournament
Hand Counter Tournament là hệ thống vận hành giải poker theo mô hình semi-automated tournament control, giúp club quản lý hand progression, seating và chip tracking theo thời gian thực mà không cần chip RFID hoặc camera tracking.
Mục tiêu sản phẩm
- Chuẩn hóa vận hành tournament theo hướng digital-first workflow.
- Giảm sai sót thủ công khi ghi chép hand/move/chip status.
- Cung cấp leaderboard realtime theo từng hand để Floor và Owner kiểm soát tình trạng giải.
- Tối ưu thao tác Dealer: mỗi hành động khoảng 0.5 giây/tap.
- Không thay đổi flow deal truyền thống, Dealer học nhanh và không gây "tech shock".
Vai trò người dùng
| Role | Quyền chính | Mục tiêu sử dụng |
|---|---|---|
| Dealer | Gán seat, Next Hand, cập nhật trạng thái | Vận hành bàn nhanh, ít thao tác |
| Floor | Move / Reject / Correct | Kiểm soát logic tournament |
| Owner | Theo dõi toàn giải, audit | Giám sát và báo cáo |
Thời gian đào tạo
Club chỉ cần 30 phút training Dealer là có thể vận hành.
Luồng vận hành tổng quan
- Player check-in bằng
player_uidhoặc QR Member. - Dealer scan rồi assign vào seat.
- Dealer tap Next Hand sau mỗi hand.
- System snapshot leaderboard realtime.
- Floor can intervene nếu cần move/reject/adjust.
Quick Start
Yêu cầu hệ thống
- Tablet hoặc iPad tại mỗi table (khuyến nghị >=10").
- WiFi nội bộ ổn định (LAN preferred).
- 1 màn hình TV/Dashboard để hiển thị leaderboard.
Checklist triển khai nhanh
- ✔ Tạo Tournament trong Admin
- ✔ Import danh sách Player (hoặc dùng DB có sẵn của club)
- ✔ In QR Member (optional nhưng khuyến nghị)
- ✔ Gán thiết bị cho từng Table
- ✔ Test Next Hand sync
- ✔ Verify Leaderboard realtime
- ✔ Go-Live
Data Model
Core Entities
tournament
| Field | Type | Description |
|---|---|---|
| tournament_id | text | ID giải đấu |
| name | text | Tên giải |
| starting_chips | int | Stack khởi điểm |
| status | enum | pending / running / closed |
table
| Field | Type |
|---|---|
| table_id | text |
| tournament_id | fk |
| max_seats | int |
seat
| Field | Type |
|---|---|
| seat_id | text |
| table_id | fk |
| player_uid | nullable |
| is_active | bool |
player
| Field | Type |
|---|---|
| player_uid | text (club-defined) |
| player_name | text |
| member_qr | optional |
Có thể dùng luôn player_uid hiện tại của club, không cần migrate hệ thống cũ.
API / Events
Next Hand Event
Trigger chính của hệ thống.
POST /event/next-hand
{
"table_id": "T12",
"dealer_id": "D03",
"hand_no": 128
}
System sẽ:
- Lock state bàn
- Commit snapshot leaderboard
- Broadcast realtime update
- Unlock
Latency mục tiêu: <300ms
Bảo mật
Role-Based Access Control
| Action | Dealer | Floor | Owner |
|---|---|---|---|
| Next Hand | ✔ | ✔ | ✔ |
| Assign Seat | ✔ | ✔ | ✔ |
| Move Player | ✖ | ✔ | ✔ |
| Reject Action | ✖ | ✔ | ✔ |
| Audit Logs | ✖ | ✖ | ✔ |
Troubleshooting
Leaderboard không update
- Check Next Hand đã tap chưa.
- Check network latency.
- Re-sync snapshot.
Dealer nhập sai seat
Floor dùng Move (non-destructive correction).
Mất kết nối
Local queue sẽ sync lại khi online.
Hand Counter Tournament Documentation
Hand Counter Tournament is a poker tournament operations system based on a semi-automated tournament control model. It helps clubs manage hand progression, seating, and chip tracking in real time without RFID chips or camera tracking.
Product Goals
- Standardize tournament operations with a digital-first workflow.
- Reduce manual errors in hand/move/chip status logging.
- Provide real-time hand-by-hand leaderboards for Floor and Owner visibility.
- Optimize Dealer actions to around 0.5 seconds per tap.
- Keep the traditional dealing flow, so dealers learn quickly without tech shock.
User Roles
| Role | Main Permissions | Usage Goal |
|---|---|---|
| Dealer | Assign seat, Next Hand, status updates | Fast table operations with minimal taps |
| Floor | Move / Reject / Correct | Control tournament logic |
| Owner | Monitor tournament and audit | Oversight and reporting |
Training Time
A club typically needs only 30 minutes of dealer training to operate.
Operational Flow Overview
- Player checks in using
player_uidor member QR. - Dealer scans and assigns a seat.
- Dealer taps Next Hand after each hand.
- System creates a real-time leaderboard snapshot.
- Floor can intervene for move/reject/adjust actions when needed.
Quick Start
System Requirements
- A tablet or iPad at each table (recommended >=10 inches).
- Stable local Wi-Fi (LAN preferred).
- One TV/dashboard screen for leaderboard display.
Fast Deployment Checklist
- ✔ Create Tournament in Admin
- ✔ Import player list (or use existing club DB)
- ✔ Print member QR codes (optional but recommended)
- ✔ Assign devices to each table
- ✔ Test Next Hand sync
- ✔ Verify real-time leaderboard
- ✔ Go Live
Data Model
Core Entities
tournament
| Field | Type | Description |
|---|---|---|
| tournament_id | text | Tournament ID |
| name | text | Tournament name |
| starting_chips | int | Starting stack |
| status | enum | pending / running / closed |
table
| Field | Type |
|---|---|
| table_id | text |
| tournament_id | fk |
| max_seats | int |
seat
| Field | Type |
|---|---|
| seat_id | text |
| table_id | fk |
| player_uid | nullable |
| is_active | bool |
player
| Field | Type |
|---|---|
| player_uid | text (club-defined) |
| player_name | text |
| member_qr | optional |
You can reuse the club's existing player_uid without migrating legacy systems.
API / Events
Next Hand Event
Main trigger of the system.
POST /event/next-hand
{
"table_id": "T12",
"dealer_id": "D03",
"hand_no": 128
}
System will:
- Lock table state
- Commit leaderboard snapshot
- Broadcast real-time update
- Unlock
Target latency: <300ms
Security
Role-Based Access Control
| Action | Dealer | Floor | Owner |
|---|---|---|---|
| Next Hand | ✔ | ✔ | ✔ |
| Assign Seat | ✔ | ✔ | ✔ |
| Move Player | ✖ | ✔ | ✔ |
| Reject Action | ✖ | ✔ | ✔ |
| Audit Logs | ✖ | ✖ | ✔ |
Troubleshooting
Leaderboard not updating
- Check whether Next Hand was tapped.
- Check network latency.
- Re-sync snapshot.
Dealer assigned the wrong seat
Floor should use Move (non-destructive correction).
Network disconnected
Local queue will sync automatically when online again.