Bộ sơ đồ Mermaid toàn diện — Tổ chức, Vai trò, Quy trình, Luồng dữ liệu

📚 Mục lục — 16 Sơ đồ

🏢 Phần I — Tổ chức & Vai trò

🏢 01. Cấu trúc Tổ chức Phân cấp Organization

Hệ thống multi-tenant 4 cấp: Quốc gia → Tỉnh → Quận/Huyện → CLB. Mỗi cấp có vai trò và quyền hạn riêng biệt.

graph TD
    VCT["🏛 Liên đoàn VCT Việt Nam
Federation - Tenant gốc"] VCT --> BKT["📋 Ban Kỹ thuật"] VCT --> BTT["⚖ Ban Trọng tài"] VCT --> BKL["⚖ Ban Kỷ luật"] VCT --> BTC_QG["💰 Ban Tài chính"] VCT --> BDN["🌐 Ban Đối ngoại"] VCT --> HN["🌏 LĐ Hà Nội"] VCT --> BD["🌏 LĐ Bình Định"] VCT --> HCM["🌏 LĐ TP.HCM"] VCT --> DOTS["🌏 ... 31 LĐ Tỉnh khác"] HN --> HN_BCH["👥 Ban chấp hành tỉnh"] HN --> HN_QH["🏢 Hội/Chi hội Quận/Huyện"] HN --> HN_TT["⚖ TT cấp tỉnh"] HN_QH --> CLB1["🏠 CLB Thăng Long VCT"] HN_QH --> CLB2["🏠 CLB Bạch Đằng"] HN_QH --> CLB3["🏠 ..."] CLB1 --> HLV1["🥋 HLV"] CLB1 --> VS1["🏃 Võ sinh / VĐV"] CLB1 --> LOP1["📚 Lớp học"] BD --> BD_CLB["🏠 CLB Bình Định các"] HCM --> HCM_CLB["🏠 CLB TP.HCM các"] style VCT fill:#4f46e5,color:#fff,stroke:#4f46e5 style HN fill:#16a34a,color:#fff,stroke:#16a34a style BD fill:#16a34a,color:#fff,stroke:#16a34a style HCM fill:#16a34a,color:#fff,stroke:#16a34a style CLB1 fill:#0891b2,color:#fff,stroke:#0891b2 style CLB2 fill:#0891b2,color:#fff,stroke:#0891b2

👥 02. Phân quyền RBAC 12 Vai trò Security

Hệ thống 12 vai trò phân cấp — mỗi vai trò chỉ truy cập được dữ liệu trong phạm vi tổ chức (tenant isolation).

graph LR
    subgraph PLATFORM["⚙ Platform Level"]
        admin["🔴 admin
Toàn quyền hệ thống"] end subgraph FEDERATION["🏛 Federation Level"] president["🟣 federation_president
Chủ tịch LĐ"] secretary["🟣 federation_secretary
Tổng Thư ký"] tech_dir["🔵 technical_director
Giám đốc Kỹ thuật"] end subgraph PROVINCE["🌏 Provincial Level"] prov_admin["🟢 provincial_admin
Admin LĐ Tỉnh"] end subgraph TOURNAMENT["🏆 Tournament Level"] btc["🟠 btc
Ban Tổ Chức"] ref_mgr["🩷 referee_manager
Tổng Trọng tài"] referee["🩷 referee
Trọng tài"] medical["🟠 medical_staff
Y tế"] end subgraph MEMBER["🏃 Member Level"] coach["🟢 coach
HLV"] delegate["🔵 delegate
Trưởng đoàn"] athlete["🟢 athlete
VĐV - Read only"] end admin --> president admin --> prov_admin president --> secretary president --> tech_dir prov_admin --> btc btc --> ref_mgr ref_mgr --> referee btc --> medical prov_admin --> coach coach --> delegate delegate --> athlete

🚀 Phần II — Kiến trúc & Luồng Dữ liệu

🖥 03. Kiến trúc Hệ thống Tổng thể Architecture

4 tầng kiến trúc: Client → API Gateway → Domain Services → Data Infrastructure. Event-driven với WebSocket.

graph TB
    subgraph CLIENTS["📱 Frontend Clients"]
        WEB["🖥 Web App
Next.js + React"] MOB["📱 Mobile
Expo / React Native"] PWA["📱 PWA
Offline Support"] PUB["👁 Spectator Portal
Public"] end subgraph GATEWAY["🔐 API Gateway & Middleware"] AUTH["🔑 JWT Auth
Access + Refresh Token"] RBAC["👮 RBAC Middleware
12 Roles"] RATE["⚡ Rate Limiter"] AUDIT["📝 Audit Logger"] end subgraph DOMAIN["⚙ Domain Services - 23 Modules"] direction LR FED[federation] PROV[provincial] CLUB[club] TOUR[tournament] SCORE[scoring] ATH[athlete] DISC[discipline] APPR[approval] FIN[finance] TRAIN[training] CERT[certification] BRACK[bracket] PAR[parent] DOC[document] INTL[international] end subgraph INFRA["🗄 Data & Infrastructure"] PG["🐘 PostgreSQL
ACID + RLS + Migrations"] WS["⚡ WebSocket Hub
Live Scoring"] EVT["📋 Event Bus
Domain Events"] NOTIF["🔔 Notifications
Push / Email / SMS"] STORE["📁 File Storage"] end CLIENTS --> GATEWAY GATEWAY --> DOMAIN DOMAIN --> INFRA WS -.->|"real-time"| CLIENTS EVT -.->|"triggers"| NOTIF

🔄 04. Luồng Dữ liệu giữa 9 Phân hệ Data Flow

Sơ đồ dữ liệu luân chuyển hai chiều giữa các phân hệ qua REST API và WebSocket.

graph TD
    LDQG["🏛 LĐ Quốc gia"]
    LDT["🌏 34 LĐ Tỉnh/TP"]
    CLB["🏠 1000+ CLB"]
    GIAI["🏆 Giải đấu"]
    TT["⚖ Trọng tài"]
    VDV["🏃 50K+ VĐV"]
    KL["⚖ Kỷ luật"]
    TC["💰 Tài chính"]
    PH["👁 Công chúng"]
    
    LDQG -->|"Quy chế, Master Data"| LDT
    LDQG -->|"Config giải"| GIAI
    LDQG -->|"Ban Kỷ luật"| KL
    
    LDT -->|"Báo cáo"| LDQG
    LDT -->|"Quản lý CLB"| CLB
    LDT -->|"ĐK đoàn"| GIAI
    LDT -->|"Hồ sơ VĐV"| VDV
    
    CLB -->|"ĐK VĐV"| GIAI
    CLB -->|"Quản lý VĐV"| VDV
    CLB -->|"Hồ sơ"| LDT
    
    GIAI -->|"Phân công sàn"| TT
    GIAI -->|"Kết quả, BXH"| VDV
    GIAI -->|"Vi phạm"| KL
    GIAI -->|"Live Score"| PH
    GIAI -->|"KQ tổng hợp"| LDQG
    
    TT -->|"Điểm real-time"| GIAI
    TT -.->|"WebSocket"| PH
    
    KL -->|"Đình chỉ"| VDV
    KL -->|"Xử phạt"| CLB
    KL -->|"Cấm thi đấu"| GIAI
    KL -->|"Báo cáo"| LDQG
    
    TC -->|"Hóa đơn"| CLB
    TC -->|"Hội phí"| LDT
    TC -->|"Phí giải"| GIAI

    style LDQG fill:#4f46e5,color:#fff
    style LDT fill:#16a34a,color:#fff
    style CLB fill:#0891b2,color:#fff
    style GIAI fill:#d97706,color:#fff
    style TT fill:#db2777,color:#fff
    style VDV fill:#16a34a,color:#fff
    style KL fill:#dc2626,color:#fff
    style TC fill:#6366f1,color:#fff
    style PH fill:#64748b,color:#fff

🏆 Phần III — Quy trình Giải đấu

🏆 05. Vòng đời Giải đấu (Tournament Lifecycle) Tournament

Từ khởi tạo giải → đăng ký → vận hành → kết thúc. Mỗi giai đoạn có trạng thái và vai trò chịu trách nhiệm riêng.

stateDiagram-v2
    [*] --> Draft: LĐ/BTC tạo giải
    Draft --> Configuration: Cấu hình nội dung, hạng cân
    Configuration --> OpenRegistration: Mở đăng ký
    
    OpenRegistration --> ClosedRegistration: Hết hạn / BTC đóng
    OpenRegistration --> OpenRegistration: CLB đăng ký đoàn & VĐV
    
    ClosedRegistration --> WeighIn: Cân đo kiểm tra
    WeighIn --> DrawBracket: Bốc thăm xếp lịch
    DrawBracket --> InProgress: Bắt đầu thi đấu
    
    InProgress --> InProgress: Chấm điểm real-time 🔴
    InProgress --> Completed: Tất cả nội dung kết thúc
    
    Completed --> Finalized: Duyệt KQ + Trao giải
    Finalized --> Archived: Lưu trữ
    Finalized --> [*]
    
    OpenRegistration --> Cancelled: Hủy giải
    Draft --> Cancelled: Hủy giải
    Cancelled --> [*]

    note right of InProgress
        WebSocket live scoring
        5 giám định/sàn
        Auto bracket update
    end note

🏋 06. Vòng đời Vận động viên Athlete

Từ khi đăng ký vào CLB → huấn luyện → thi đai → thi đấu → thành tích → chuyển nhượng. Vòng lặp suốt sự nghiệp.

graph LR
    A["📝 Đăng ký
CLB nhập hồ sơ"] --> B["🥋 Huấn luyện
Lộ trình đai, lớp, điểm danh"] B --> C["🎓 Thi lên Đai
Lý thuyết + Thực hành + Thể lực"] C --> D["🏆 Thi đấu
ĐK giải, cân đo, thi"] D --> E["📊 BXH & Thành tích
Huy chương, xếp hạng"] E --> B D --> F["⚖ Vi phạm?"] F -->|"Không"| E F -->|"Có"| G["🚨 Kỷ luật
Đình chỉ / Cấm thi"] G --> B B --> H["🔄 Chuyển nhượng
Sang CLB mới (Approval)"] H --> B E --> I["🥋 Lên Huyền đai
Trở thành HLV"] style A fill:#16a34a,color:#fff style C fill:#9333ea,color:#fff style D fill:#d97706,color:#fff style G fill:#dc2626,color:#fff

🏠 07. Quy trình Thành lập CLB mới Club

CLB nộp hồ sơ qua platform → LĐ Tỉnh xét duyệt → LĐ Quốc gia phê duyệt (nếu cần) → Cấp mã.

sequenceDiagram
    participant CLB as 🏠 CLB (Người sáng lập)
    participant SYS as ⚙ VCT Platform
    participant LDT as 🌏 LĐ Tỉnh
    participant LDQG as 🏛 LĐ Quốc gia
    
    CLB->>SYS: Nộp hồ sơ thành lập
    Note over CLB,SYS: Tên CLB, địa chỉ, HLV trưởng,
giấy phép, ảnh cơ sở SYS->>SYS: Tạo Approval Request (pending) SYS->>LDT: 🔔 Thông báo yêu cầu mới LDT->>SYS: Xem hồ sơ chi tiết alt Thiếu giấy tờ LDT->>SYS: Return (yêu cầu bổ sung) SYS->>CLB: 🔔 Thông báo cần bổ sung CLB->>SYS: Nộp bổ sung SYS->>LDT: 🔔 Hồ sơ đã cập nhật end LDT->>SYS: ✅ Approve bước 1 SYS->>LDQG: 🔔 Chuyển phê duyệt bước 2 LDQG->>SYS: ✅ Approve bước 2 SYS->>SYS: Cấp mã CLB + Tạo tenant SYS->>CLB: 🔔 CLB đã được phê duyệt! SYS->>LDT: 🔔 CLB đã hoạt động Note over SYS: Audit log ghi nhận toàn bộ

🔄 08. Chuyển nhượng VĐV giữa CLB Transfer

Quy trình 3 bước phê duyệt: CLB mới tạo yêu cầu → CLB cũ đồng ý → LĐ Tỉnh xác nhận.

sequenceDiagram
    participant NEW as 🏠 CLB mới
    participant SYS as ⚙ Platform
    participant OLD as 🏠 CLB cũ
    participant LDT as 🌏 LĐ Tỉnh
    participant VDV as 🏃 VĐV
    
    NEW->>SYS: Tạo yêu cầu chuyển nhượng VĐV
    SYS->>SYS: Tạo Approval (3 bước)
    
    SYS->>OLD: 🔔 Yêu cầu cho VĐV chuyển
    OLD->>SYS: ✅ Đồng ý (Bước 1)
    
    SYS->>LDT: 🔔 Xin phê duyệt chuyển nhượng
    LDT->>SYS: Kiểm tra điều kiện
    Note over LDT,SYS: Không nợ phí, không đang bị kỷ luật,
đủ thời gian tối thiểu tại CLB cũ LDT->>SYS: ✅ Phê duyệt (Bước 2) SYS->>SYS: Cập nhật CLB_ID của VĐV SYS->>VDV: 🔔 Bạn đã chuyển sang CLB mới SYS->>NEW: 🔔 VĐV đã gia nhập SYS->>OLD: 🔔 VĐV đã rời CLB Note over SYS: Lịch sử CLB được lưu trữ

✅ Phần IV — Phê duyệt & Quản lý

✅ 09. Approval Engine — State Machine Core Engine

Engine phê duyệt đa bước tổng quát — áp dụng cho CLB, chuyển nhượng, giải đấu, chứng chỉ, kỷ luật.

stateDiagram-v2
    [*] --> pending: Submit yêu cầu
    
    pending --> in_review: Người duyệt mở xem
    
    in_review --> approved: ✅ Approve
    in_review --> rejected: ❌ Reject (bắt buộc lý do)
    in_review --> returned: ↩ Return (yêu cầu bổ sung)
    
    returned --> pending: Người tạo cập nhật & re-submit
    
    approved --> approved: Bước tiếp (nếu multi-step)
    
    pending --> cancelled: Người tạo hủy
    in_review --> cancelled: Người tạo hủy
    
    pending --> expired: ⏰ Quá hạn deadline
    in_review --> expired: ⏰ Quá hạn deadline
    
    approved --> [*]: Hoàn tất (all steps done)
    rejected --> [*]
    cancelled --> [*]
    expired --> [*]

    note right of approved
        Mỗi bước ghi:
        - action_by (UUID)
        - action_at (timestamp)
        - comment (text)
        - from_step → to_step
    end note
    
    note left of pending
        Áp dụng cho:
        - CLB mới
        - Chuyển nhượng VĐV
        - Đăng cai giải
        - Cấp chứng chỉ
        - Thi lên đai
        - Khiếu nại
    end note

🏋 10. Quy trình Thi lên Đai Training

HLV đề nghị → Thi 4 phần (Lý thuyết 20% + Quyền 40% + Kỹ thuật 20% + Thể lực 20%) → Tổng ≥65 điểm → Cấp đai.

graph TD
    A["🥋 HLV đề nghị
VĐV đủ tháng tập"] --> B["📝 Tạo đơn thi đai"] B --> C{"LĐ Tỉnh
duyệt đơn?"} C -->|"❌ Từ chối"| Z1["Trả lại CLB"] C -->|"✅ Duyệt"| D["📖 Phần 1: Lý thuyết
Viết/vấn đáp — 20%"] D --> E["🥋 Phần 2: Quyền thuật
Bắt buộc + Tự chọn — 40%"] E --> F["⚔ Phần 3: Kỹ thuật/Đối luyện
Thực hành — 20%"] F --> G["💪 Phần 4: Thể lực
Chống đẩy, bụng, chạy — 20%"] G --> H{"Tổng ≥ 65
điểm?"} H -->|"✅ Đạt"| I["🎓 Cấp chứng nhận đai mới"] H -->|"Trượt 1 môn"| J["⏳ Thi lại sau 3 tháng"] H -->|"Trượt ≥2 môn"| K["⏳ Thi lại toàn bộ sau 6 tháng"] I --> L["📋 Cập nhật hồ sơ VĐV"] L --> M["🔔 Thông báo CLB & VĐV"] style A fill:#16a34a,color:#fff style I fill:#4f46e5,color:#fff style J fill:#d97706,color:#fff style K fill:#dc2626,color:#fff

⚖ 11. Luồng Chấm điểm Real-time Scoring

Event-driven: TT chấm → WebSocket broadcast → Scoreboard, Bracket, Notification, Integrity đồng thời.

sequenceDiagram
    participant BTC as 🏆 BTC
    participant TT as ⚖ Trọng tài (x5)
    participant API as ⚙ API Server
    participant WS as ⚡ WebSocket Hub
    participant SB as 📊 Scoreboard
    participant BR as 🏅 Bracket
    participant NT as 🔔 Notifications
    participant IG as 🚨 Integrity Check
    
    BTC->>API: Mở trận (gán VĐV + sàn)
    API->>WS: Broadcast "match.started"
    WS->>SB: Hiển thị trận
    
    loop Mỗi hiệp / mỗi đòn
        TT->>API: Submit điểm (tablet)
        API->>API: Validate & Save to DB
        API->>WS: Broadcast "score.submitted"
        
        par Fan-out Events
            WS->>SB: Update Scoreboard LIVE
            WS->>BR: Cập nhật bracket (nếu kết thúc)
            API->>NT: Push to đoàn + VĐV
            API->>IG: Kiểm tra gian lận điểm
        end
    end
    
    BTC->>API: Kết thúc trận
    API->>API: Bỏ điểm cao/thấp nhất → TB
    API->>WS: Broadcast "match.completed"
    WS->>SB: Hiện kết quả chính thức
    API->>BR: Auto-advance winner

⚖ 12. Quy trình Kỷ luật & Vi phạm Discipline

Từ phát hiện vi phạm → điều tra → điều trần → xử phạt → giám sát thi hành. 10 loại VP, 7 hình thức xử phạt.

stateDiagram-v2
    [*] --> reported: 🚨 Phát hiện vi phạm
    
    reported --> investigating: Mở hồ sơ, phân loại mức độ
    
    investigating --> hearing_scheduled: Đủ chứng cứ → Lập lịch điều trần
    investigating --> dismissed: Không đủ cơ sở → Bác bỏ
    
    hearing_scheduled --> hearing: ⚖ Phiên điều trần
    
    hearing --> sanctioned: Có vi phạm → Xử phạt
    hearing --> dismissed: Không vi phạm → Bác bỏ
    
    sanctioned --> monitoring: Thi hành quyết định

    monitoring --> completed: Hết thời hạn xử phạt
    monitoring --> escalated: Vi phạm thêm → Tăng nặng
    
    escalated --> sanctioned: Xử phạt nặng hơn
    completed --> [*]
    dismissed --> [*]
    
    note right of sanctioned
        7 Hình thức:
        • Cảnh cáo
        • Phạt tiền
        • Đình chỉ thi đấu
        • Cấm vĩnh viễn
        • Hủy kết quả
        • Quản chế
        • Chuyển pháp luật
    end note
    
    note left of reported
        10 Loại vi phạm:
        • Khai gian cân/tuổi
        • Phi thể thao
        • Doping
        • Vi phạm quy chế
        • Xúc phạm TT
        • Giả mạo giấy tờ
        • Dàn xếp kết quả
        • Vi phạm an toàn
        • Hành chính
    end note

📜 13. Cấp Chứng chỉ HLV / Trọng tài Certification

Từ nộp hồ sơ → đào tạo → thi → Ban KT duyệt → TTK cấp chứng chỉ (ký số PKI). Hiệu lực 3-4 năm.

graph LR
    A["📝 Nộp hồ sơ
Bằng cấp + KN"] --> B["📖 Đào tạo
Khóa 3-7 ngày"] B --> C["🥋 Thi thực hành
Chấm / Vận hành"] C --> D{"Đạt?"} D -->|"❌"| E["Thi lại
Sau 6 tháng"] D -->|"✅"| F["📋 Ban KT duyệt"] F --> G["🔏 TTK cấp CC
Ký số PKI"] G --> H["📅 Hiệu lực
3-4 năm"] H --> I{"Hết hạn?"} I -->|"Gia hạn"| J["📝 Nộp đơn GH
50% phí cấp mới"] J --> F I -->|"Không GH"| K["❌ Hết hiệu lực"] style A fill:#6366f1,color:#fff style G fill:#16a34a,color:#fff style K fill:#dc2626,color:#fff

💰 14. Quy trình Tài chính & Thu phí Finance

4 luồng thu phí chính: Giải đấu, Chứng chỉ, Hội phí, Sự kiện. Audit trail đầy đủ.

graph TD
    subgraph PHIGIAI["🏆 Phí Giải đấu"]
        G1["Phí/VĐV: 50K-500K"]
        G2["Phí/Đoàn: 500K-5M"]
        G3["Đặt cọc: 0-10M"]
    end
    
    subgraph PHICC["📜 Phí Chứng chỉ"]
        C1["HLV: 1M-2M"]
        C2["TT: 800K-3M"]
        C3["Gia hạn: 50% phí gốc"]
    end
    
    subgraph HOIPHI["💳 Hội phí Thường niên"]
        H1["VĐV: 200K/năm"]
        H2["HLV/TT: 500K/năm"]
        H3["CLB: 2M-5M/năm"]
        H4["LĐ Tỉnh: 10M/năm"]
    end
    
    subgraph PHIDAI["🥋 Phí Thi Đai"]
        D1["Đai màu: 200K+100K"]
        D2["Huyền đai 1-3: 500K+300K"]
        D3["Huyền đai 4+: 1M+500K"]
    end
    
    PHIGIAI --> INV["📄 Tạo hóa đơn"]
    PHICC --> INV
    HOIPHI --> INV
    PHIDAI --> INV
    
    INV --> NOTIFY["📧 Gửi thông báo
Email + Push + SMS"] NOTIFY --> PAY["🏦 Thanh toán
Online / Chuyển khoản"] PAY --> CONFIRM["✅ Xác nhận
Tự động / Thủ công"] CONFIRM --> REPORT["📊 Báo cáo tổng hợp"] REPORT --> AUDIT_F["🔍 Kiểm toán"] style INV fill:#d97706,color:#fff style CONFIRM fill:#16a34a,color:#fff style AUDIT_F fill:#6366f1,color:#fff

📈 Phần V — Hệ thống Đai & Vận hành

🥋 15. Hệ thống Đai Võ Cổ Truyền Belt Ranks

14 cấp bậc đai từ Trắng → Cửu đẳng Huyền đai. Timeline từ 0 đến 50+ năm tu luyện.

graph LR
    W["⬜ Trắng
0 tháng"] --> Y["🟡 Vàng
6 tháng"] Y --> G["🟢 Xanh lá
12 tháng"] G --> B["🔵 Xanh dương
24 tháng"] B --> BR["🟤 Nâu
36 tháng"] BR --> H1["⬛ Sơ đẳng
4 năm - HLV tập sự"] H1 --> H2["⬛ Nhị đẳng
6 năm - Dạy độc lập"] H2 --> H3["⬛ Tam đẳng
9 năm - HLV tỉnh"] H3 --> H4["⬛ Tứ đẳng
13 năm - HLV QG"] H4 --> H5["⬛ Ngũ đẳng
18 năm - VÕ SƯ"] H5 --> H6["⬛ Lục đẳng
24 năm"] H6 --> H7["⬛ Thất đẳng
31 năm - ĐẠI VÕ SƯ"] H7 --> H89["⬛ Bát-Cửu đẳng
40-50 năm - VINH DANH"] style W fill:#e2e8f0,color:#334155 style Y fill:#fbbf24,color:#78350f style G fill:#22c55e,color:#fff style B fill:#3b82f6,color:#fff style BR fill:#92400e,color:#fff style H1 fill:#1e293b,color:#f1f5f9 style H5 fill:#4f46e5,color:#fff style H7 fill:#9333ea,color:#fff style H89 fill:#dc2626,color:#fff

🏟 16. Vận hành Ngày thi đấu (Match Day) Operations

Timeline một ngày thi đấu từ check-in sáng → cân đo → thi đấu → trao giải. Mỗi bước có vai trò chịu trách nhiệm.

sequenceDiagram
    participant DOAN as 👥 Đoàn/VĐV
    participant BTC as 🏆 BTC Giải
    participant YTE as 🏥 Ban Y tế
    participant TTT as ⚖ Tổng TT
    participant TT as ⚖ Trọng tài
    participant SYS as ⚙ Platform
    
    rect rgb(40, 60, 40)
        Note over DOAN,SYS: ☀ SÁNG — Check-in & Chuẩn bị
        DOAN->>BTC: Check-in đoàn (quét QR)
        BTC->>SYS: Xác nhận có mặt
        BTC->>YTE: Chuyển VĐV cân đo
        YTE->>SYS: Ghi cân nặng, kiểm tra sức khỏe
        YTE->>BTC: Cấp phép thi đấu ✅
        BTC->>SYS: Khóa danh sách VĐV đủ ĐK
    end
    
    rect rgb(60, 40, 40)
        Note over DOAN,SYS: ⚔ THI ĐẤU — Real-time Scoring
        TTT->>TT: Phân công sàn + trận
        BTC->>SYS: Mở trận (gán VĐV)
        SYS->>TT: 🔔 Trận sắp bắt đầu
        
        loop Mỗi trận
            TT->>SYS: Chấm điểm real-time 📱
            SYS->>SYS: ⚡ WebSocket broadcast
            SYS->>DOAN: 📊 Update scoreboard
        end
        
        BTC->>SYS: Kết thúc → Auto bracket
    end
    
    rect rgb(40, 40, 60)
        Note over DOAN,SYS: 🏅 CHIỀU — Trao giải & Tổng kết
        SYS->>BTC: Tổng hợp kết quả toàn đoàn
        BTC->>DOAN: 🏅 Trao HCV / HCB / HCĐ
        BTC->>SYS: Finalize kết quả
        SYS->>SYS: Cập nhật BXH VĐV + thành tích
    end