Dịch vụ All File Converter được thiết kế như một hệ thống SaaS phân tán có khả năng mở rộng dựa trên ngăn xếp Python 3.12 bất đồng bộ hiện đại. Kiến trúc được chia thành các lớp độc lập: tiếp nhận sự kiện mạng, điều phối tác vụ, thực thi cô lập các tiến trình nhị phân nặng và luồng phân tích.

1. Ngăn xếp công nghệ tổng quan và kiến trúc hệ thống

Nền tảng dựa trên các nguyên tắc hiệu suất cao (high-throughput), tiêu thụ bộ nhớ tối thiểu và chống lỗi:

  • Telegram Bot Framework: Aiogram 3.13, hoạt động ở chế độ Webhook với xác thực token bảo mật và bộ lọc vòng đời tin nhắn tùy chỉnh.
  • Cổng Web và REST API: FastAPI dựa trên máy chủ ASGI Uvicorn với khả năng truyền phát file nhị phân bất đồng bộ (FileResponse) và dọn dẹp nền qua BackgroundTasks.
  • Trình môi giới hàng đợi và bộ nhớ đệm: Redis 7 (quản lý tác vụ Celery, khóa chống trạng thái cạnh tranh, chống brute-force, lưu trữ phiên).
  • Trình thực thi nền (Task Queue): Celery 5.4 với nhóm worker chuyên dụng trong container cô lập converter_worker.
  • Cơ sở dữ liệu: PostgreSQL 16 với lớp ORM SQLAlchemy 2.0 (asyncpg), nhóm kết nối liên tục (20+10 overflow) và tự động thử lại giao dịch lỗi (@db_retry).
  • Vòng lặp mạng: Định tuyến qua Cloudflare Zero Trust với tính năng chặn quyền truy cập IP trực tiếp vào máy chủ thông qua Middleware.

2. Hàng đợi bất đồng bộ và cô lập tính toán nặng (Celery + Redis)

Việc chuyển đổi file phương tiện và gói văn phòng tạo ra tải đỉnh trên CPU và RAM. Để quá trình xử lý tin nhắn đến trong Telegram không bị chặn trong các hoạt động nặng, việc cô lập nghiêm ngặt đã được triển khai:

  • Ủy quyền tác vụ vào Redis: Khi chọn định dạng, trình xử lý Telegram đăng ký tác vụ trong cơ sở dữ liệu với trạng thái PROCESSING và đưa công việc vào hàng đợi tasks.execute_conversion thông qua Celery.
  • Container worker cô lập: Việc thực thi các tiện ích chuyển đổi diễn ra trong một Linux container riêng biệt với giới hạn thời gian xử lý và bộ nhớ của riêng nó.
  • Kiểm soát đóng băng và thời gian chờ: Các lệnh gọi tiện ích bên ngoài được bọc trong ngữ cảnh bất đồng bộ với việc kiểm soát thời gian nghiêm ngặt (conversion_timeout_sec = 180). Khi vượt quá giới hạn, tiến trình sẽ bị buộc kết thúc qua proc.kill(), giải phóng tài nguyên.
  • Fallback chịu lỗi: Khi trình môi giới Redis tạm thời không khả dụng, tác vụ sẽ tự động bị chặn bởi trình điều phối bất đồng bộ cục bộ và được thực thi trực tiếp mà không gây lỗi cho người dùng.

3. Đường ống chuyển đổi chuyên dụng

Đối với mỗi loại dữ liệu, các tiện ích và thư viện gốc chuyên specialized được sử dụng:

  • Tài liệu và bảng tính (LibreOffice): Gói văn phòng không giao diện (soffice --headless) để kết xuất chính xác DOCX, XLSX, PPTX, RTF, ODT thành định dạng PDF hoặc file văn bản.
  • Âm thanh và video trực tuyến (FFmpeg): Chuyển mã đa luồng cho các codec video (H.264), codec âm thanh (MP3, OGG Opus), trích xuất âm thanh, tạo GIF (bộ lọc Lanczos) và cắt hình vuông (1:1) cho tin nhắn video Telegram.
  • Xử lý PDF tốc độ cao (Poppler Utils): Các tiện ích pdftotext (trích xuất tức thì văn bản định dạng UTF-8) và pdftoppm (kết xuất PDF thành hình ảnh raster từng trang mà không có chi phí chung của LibreOffice).
  • Nhận dạng quang học (Tesseract OCR): Trích xuất văn bản in từ các bản quét và ảnh dựa trên mạng nơ-ron bằng hơn 40 ngôn ngữ.
  • Đồ họa raster và vector: Thư viện Pillow (bao gồm hỗ trợ định dạng HEIC và AVIF), CairoSVG cho hình ảnh vector và lottie cho nhãn dán hoạt hình Telegram (.TGS).
  • Sách, phụ đề và phông chữ: Công cụ Calibre (ebook-convert), trình phân tích cú pháp phụ đề pysubs2 (SRT, VTT, ASS, SSA) và trình biên dịch phông chữ fonttools (nén Brotli trong WOFF2).

4. Bảo vệ tài nguyên dự phòng (System Guard)

Để bảo vệ chống sập máy chủ do thiếu bộ nhớ (OOM Killer), dịch vụ chẩn đoán dự phòng System Guard đã được tích hợp. Trước khi nhận file để xử lý, hệ thống kiểm tra các chỉ số chính của máy chủ:

  • Bộ nhớ RAM trống: Tối thiểu 500 MB dung lượng trống (guard_min_free_ram_mb).
  • Dung lượng đĩa: Tối thiểu 2 GB không gian trống trong thư mục /tmp (guard_min_free_disk_mb).
  • Hàng đợi tác vụ: Giới hạn độ dài hàng đợi Celery (không quá 20 tác vụ đang chờ).

Khi vượt quá giới hạn, dịch vụ sẽ tạm thời bật tính năng bảo vệ (HTTP 503 / thông báo trong trò chuyện), ngăn ngừa quá tải máy chủ và gửi cảnh báo tức thì cho quản trị viên qua Telegram.

5. Vòng đời file và bảo mật (GDPR)

Kiến trúc được thiết kế theo mô hình Zero-Data-Footprint:

  • File của người dùng được tải lên phân vùng được bảo vệ tmp/conversions/ với các tiền tố duy nhất dựa trên ID tác vụ.
  • File vẫn có thể truy cập nghiêm ngặt trong phiên làm việc — không quá 15 phút (900 giây).
  • Trình thu gom rác tự động xóa các file gốc và file đã hoàn thành ngay sau khi xác nhận gửi thành công vào cuộc trò chuyện hoặc sau khi hết thời gian chờ phiên.
  • Cơ sở dữ liệu PostgreSQL không lưu trữ file nhị phân hoặc văn bản tài liệu cá nhân — các bảng chỉ ghi lại siêu dữ liệu kỹ thuật ẩn danh (định dạng, kích thước tính bằng byte, thời gian chạy, trạng thái).

6. REST API đa năng cho các dịch vụ web bên ngoài

Dịch vụ ban đầu được thiết kế như một backend đa nền tảng. Cùng với bot, một giao diện lập trình an toàn đầy đủ chức năng hoạt động cho các trang web (ví dụ: trên Django) và các bot của bên thứ ba:

  • GET /api/v1/formats — ma trận JSON động các hướng chuyển đổi có sẵn, được đồng bộ hóa với cài đặt của Google Trang tính.
  • POST /api/v1/convert — điểm cuối đa năng nhận multipart/form-data (file, định dạng mục tiêu, ID khách hàng bên ngoài) và trả về luồng byte đã sẵn sàng dưới dạng tải xuống trực tiếp.
  • Xác thực bằng Bearer token (WEBHOOK_REFRESH_TOKEN) được bảo vệ chống tấn công thời gian thông qua secrets.compare_digest.

7. Bảng điều khiển và Observability (NiceGUI + AG Grid)

Việc theo dõi các chỉ số kinh doanh và trạng thái hệ thống được đưa vào bảng điều khiển Single-Page gốc dựa trên NiceGUI 2.x:

  • Bảng tương tác AG Grid (v32+) với bộ lọc hộp kiểm kiểu Excel tùy chỉnh (aggrid_filters.js).
  • Theo dõi hàng đợi, độ trễ của nhà cung cấp API và ping PostgreSQL / Redis trong thời gian thực.
  • Lọc xuyên suốt theo ngày với tích hợp liền mạch bảng điều khiển BI Metabase thông qua JWT token đã ký.