Cấu trúc thư mục chính#
main.go: Điểm khởi đầu của ứng dụng.
server/: Cấu hình khởi tạo server, đăng ký routes và middlewares.
modules/: Chứa các module tính năng (Auth, Team, User, Schedule...). Mỗi module bao gồm:domain.go: Định nghĩa cấu trúc dữ liệu và interface.
handler.go: Giao tiếp với HTTP request/response.
usecase.go: Chứa logic nghiệp vụ chính.
routes.go: Định nghĩa các endpoints.
commons/: Chứa các thành phần dùng chung (error handling, logging, pagination, repositories base).
queries/: Các file .sql chứa câu lệnh truy vấn.
models/: Schema định nghĩa bảng.
*.sql.go: Code Go được generate tự động bởi SQLC.
pkg/: Các thư viện tích hợp bên thứ ba (Cloudinary, Mail, Elasticsearch).
cmd/: Chứa các công cụ dòng lệnh (ví dụ: searchsync để đồng bộ dữ liệu vào ES).
Luồng xử lý (Data Flow)#
Client -> Middleware -> Handler -> Use Case -> Repository (SQLC/GORM) -> Database
3. Cơ Sở Dữ Liệu (Database)#
Hệ thống sử dụng SQLC để đảm bảo tính an toàn và hiệu suất khi thao tác với MySQL.Các nhóm bảng chính#
sclass: Thông tin giải đấu.
teams: Thông tin đội bóng.
players: Thông tin cầu thủ.
schedules: Lịch thi đấu và kết quả trận đấu.
Dự đoán & Phân tích: ai_pre_direct, schedule_predictions.
Quy trình cập nhật Database#
1.
Chỉnh sửa/Thêm file .sql trong db/models/ (định nghĩa bảng) hoặc db/queries/ (định nghĩa truy vấn).
2.
Chạy lệnh: sqlc generate.
3.
SQLC sẽ tự tạo code Go tương ứng trong thư mục db/.
4. Hướng Dẫn Cài Đặt (Installation Guide)#
Yêu cầu hệ thống#
Elasticsearch (Tùy chọn cho tính năng tìm kiếm).
Các bước cài đặt#
2.
Chuyển sang nhánh Production: 3.
Cấu hình biến môi trường:Sao chép file mẫu: cp .env.example .env (hoặc copy .env.example .env trên Windows).
Chỉnh sửa file .env để cấu hình kết nối Database, Redis, SMTP, v.v.
5.
Khởi tạo Database & SQLC:Đảm bảo MySQL đang chạy và đã tạo database tương ứng.
7.
Đồng bộ dữ liệu tìm kiếm (Tùy chọn):
Nếu bạn sử dụng Elasticsearch, chạy lệnh sau để đẩy dữ liệu vào ES: Các api chính trong file#
Module Đội bóng (Team)#
Công khai (Public): /teamGET /: Lọc và danh sách đội bóng.
GET /🆔 Chi tiết đội bóng theo ID.
Công khai V2: /v2/public/teamGET /: Lọc dữ liệu đội bóng (phiên bản 2).
GET /search: Tìm kiếm đội bóng nâng cao qua Elasticsearch.
POST /sync/elasticsearch: Đồng bộ thủ công dữ liệu đội bóng lên Elasticsearch.
Quản trị (Admin - nằm trong nhóm Team): /v2/public/team/adminGET /: Xem danh sách đội bóng cho Admin.
GET /ui: Giao diện quản lý đội bóng (HTML).
POST /upload-excel: Nhập dữ liệu đội bóng từ file Excel.
PUT /:teamid/update: Cập nhật thông tin ID nguồn (Rapid ID) cho đội bóng.Module Trận đấu (Schedule/Match)#
Công khai (Public): /matchGET /: Danh sách trận đấu kèm bộ lọc.
GET /🆔 Chi tiết một trận đấu.
Công khai V2: /v2/public/matchGET /: Danh sách trận đấu V2.
GET /search: Tìm kiếm trận đấu qua Elasticsearch.
GET /all/search: Tìm kiếm tổng hợp tất cả thông tin liên quan (trận đấu, giải đấu, đội).
Ajax: /ajax/matchGET /live-event-feed: Lấy dữ liệu sự kiện trực tiếp (tỷ số, thẻ phạt...).
GET /gen-match-predictions: Tạo/Lấy dữ liệu dự đoán trận đấu.
GET /handicapdetail: Chi tiết tỷ lệ kèo chấp (Handicap).
GET /ouhandicap: Chi tiết tỷ lệ kèo Tài/Xỉu (Over/Under).
Quản trị (Admin): /v2/public/match/adminGET /: Danh sách lịch thi đấu cho Admin.
GET /ui: Giao diện quản lý lịch thi đấu.
POST /upload-excel: Import lịch thi đấu từ Excel.
PUT /:scheduleid/update: Cập nhật ID sự kiện từ nguồn ngoài.Module Cầu thủ (Player)#
Công khai: /player và /v2/public/playerGET /: Danh sách cầu thủ.
GET /🆔 Chi tiết cầu thủ.
GET /v2/public/player/search: Tìm kiếm cầu thủ trên Elasticsearch.Module Giải đấu (Sclass)#
Công khai: /sclass và /v2/public/sclassGET /: Thông tin giải đấu.
GET /🆔 Chi tiết giải đấu.
GET /search: Tìm kiếm giải đấu qua ES.
Ajax: (Gốc /ajax/)GET /ajax/get-league-rank: Lấy bảng xếp hạng giải đấu.
GET /ajax/get-match-result: Lấy kết quả các trận đã đấu.Module Dự đoán AI (AiPredirect)#
Công khai V2: /v2/public/aiPredirectGET /schedule/🆔 Lấy dữ liệu dự đoán AI cho một trận đấu cụ thể theo ID.Module Bài viết/Tip (SchedulePrediction)#
Công khai V2: /v2/public/tipGET /: Danh sách các bài nhận định/tip bóng đá.
GET /:slug: Chi tiết bài nhận định thông qua đường dẫn thân thiện (slug).Module Chuyển nhượng (PlayerZH)#
GET /ajax/player-hot-transfer: Thông tin chuyển nhượng cầu thủ hot.
GET /ajax/player-hot-transfer-ver-db: Thông tin chuyển nhượng hot từ database.Module Admin (Tổng quát)#
GET /team-import: Giao diện trang import đội bóng.
POST /team-import/upload: Xử lý upload và lưu trữ dữ liệu đội bóng từ Excel.Modified at 2026-04-16 10:25:45