Dự án áp dụng cấu trúc thư mục phân lớp rõ ràng (Layered Architecture), giúp tách biệt giữa logic nghiệp vụ, xử lý hàng đợi và tầng dữ liệu.
1. Sơ đồ cây thư mục tổng quát#
.
├── .env.example # Biến môi trường mẫu.
├── package.json # Khai báo thư viện và scripts của dự án.
├── Apidog_Import_Collection.json # File dùng để import API vào Apidog/Postman.
├── src/
│ ├── api/ # Tầng Controller (Tiếp nhận HTTP Request).
│ │ ├── index.ts # Khai báo router tổng.
│ │ └── task/ # Module quản lý Task (Controller & DTO).
│ │
│ ├── models/ # Tầng Schema Database (Typegoose / Mongoose).
│ │ ├── task.model.ts # Định nghĩa cấu trúc bảng "tasks".
│ │ └── report.model.ts # Schema cho báo cáo thống kê.
│ │
│ ├── repositories/ # Tầng Database Access Layer (DAL).
│ │ └── task.repository.ts # Logic truy vấn MongoDB tách biệt khỏi Controller.
│ │
│ ├── bootstrap/ # Tầng Engine & Background Jobs (Concurrency).
│ │ ├── queue_task.ts # Quản lý hàng đợi và chia task cho Worker Thread.
│ │ ├── queue_webhook.ts # Xử lý hàng đợi gửi kết quả về Webhook.
│ │ └── worker_task.ts # Script thực thi Puppeteer chạy ngầm.
│ │
│ ├── config/ # Cấu hình kết nối Database.
│ ├── pkg/ # Tích hợp dịch vụ ngoài (Telegram Bot).
│ ├── utils/ # Tiện ích: Logger, Middleware, Error Handling.
│ ├── constants/ # Định nghĩa các hằng số và tin nhắn hệ thống.
│ └── index.ts # Entry Point: Điểm khởi chạy chính của dự án.
│
└── storage/ # Dữ liệu Runtime.
├── log/ # Lưu trữ text log theo ngày yyyy-mm-dd.
└── videos/ & images/ # Lưu trữ tạm file quay/chụp tại local.
Modified at 2026-03-27 10:57:57