שירות All File Converter תוכנן כמערכת SaaS מבוזרת וניתנת לקיבולת על בסיס סט אסינכרוני מודרני של Python 3.12. הархитектура מחולקת לשכבות עצמאיות: קליטת אירועי רשת, תזמור משימות, ביצוע מבודד של תהליכים בינאריים כבדים ולולאת אנליטיקה.
1. סט טכנולוגיות כללי וархитектура מערכת
הפלטפורמה מבוססת על עקרונות של ביצועים גבוהים (high-throughput), צריכת זיכרון מינימלית והגנה מפני כשלים:
- Telegram Bot Framework:
Aiogram 3.13, הפועל במצב Webhook עם אימות טוקנים סודיים ומסננים מותאמים אישית למחזור חיי ההודעות. - שער ווב ו-REST API:
FastAPIעל בסיס שרת Uvicorn ASGI עם הזרמת קבצים בינאריים אסינכרונית (FileResponse) וניקוי ברקע דרךBackgroundTasks. - מתווך תורים ומטמון:
Redis 7(ניהול משימות Celery, נעילות מפני תנאי מירוץ, הגנה מפני בրუტ-פורס, מטמון סשנים). - מעבד ברקע (Task Queue):
Celery 5.4עם מאגר עובדים ייעודי בקונטיינר מבודדconverter_worker. - מסד נתונים:
PostgreSQL 16עם שכבת ORMSQLAlchemy 2.0 (asyncpg), מאגר חיבורים קבועים (20+10 overflow) וניסיון חוזר אוטומטי לטרנזקציות שנכשלו (@db_retry). - מעטפת רשת: תעול דרך
Cloudflare Zero Trustעם חסימת גישת IP ישירה לשרת דרך Middleware.
2. תורים אסינכרוניים ובידוד חישובים כבדים (Celery + Redis)
המרת קבצי מולטימדיה וחבילות משרדיות יוצרת עומסי שיא על ה-CPU וה-RAM. על מנת שתהליך עיבוד ההודעות הנכנסות ב-Telegram לא ייחסם בפעולות כבדות, מיושם בידוד קפדני:
- האצלת משימות ל-Redis: בעת בחירת פורמט, מעבד ה-Telegram רושם את המשימה במסד הנתונים עם סטטוס
PROCESSINGומציב את המשימה בתורtasks.execute_conversionדרך Celery. - קונטיינר עובד מבודד: ביצוע כלי ההמרות מתבצע בקונטיינר Linux נפרד עם מגבלת זמן מעבד וזיכרון משלו.
- בקרת תקיעות ופסקי זמן: קריאות לכלים חיצוניים עטופות בהקשר אסינכרוני עם בקרה קפדנית על הזמן (
conversion_timeout_sec = 180). בחריגה מהמגבלה, התהליך מופסק בכוח דרךproc.kill(), מה שמשחרר משאבים. - Fallback עמיד בפני תקלות: בזמינות זמנית חלקית של מתווך ה-Redis, המשימה נתפסת אוטומטית על ידי מנהל אסינכרוני מקומי ומבוצעת ישירות ללא תקלה עבור המשתמש.
3. צינור מנועי המרה מתמחים
עבור כל סוג נתונים מופעלים כלי עזר וספריות מקומיים מתמחים:
- מסמכים וטבלאות (LibreOffice): חבילת משרד ללא ראש (
soffice --headless) לעיבוד מדויק של DOCX, XLSX, PPTX, RTF, ODT לפורמט PDF או קבצי טקסט. - אודיו וידאו בסטרימינג (FFmpeg): קידוד חוזר מרובה ליבות של קודקי וידאו (H.264), קודקי אודיו (MP3, OGG Opus), הפקת רצועות שמע, יצירת GIF (מסנן Lanczos) וגזירת ריבוע (1:1) להודעות וידאו ב-Telegram.
- עיבוד PDF במהירות גבוהה (Poppler Utils): כלי
pdftotext(הפקת טקסט מעוצב ב-UTF-8 באופן מיידי) ו-pdftoppm(עיבוד עמוד אחר עמוד של PDF לתמונות רסטר ללא תקורה של LibreOffice). - זיהוי תווים אופטי (Tesseract OCR): הפקת טקסט מודפס מסריקות ותמונות באמצעות רשת עצבית ב-40+ שפות.
- גרפיקת רסטר ווקטור: ספריות
Pillow(כולל תמיכה בפורמטים HEIC ו-AVIF),CairoSVGלתמונות ווקטוריות ו-lottieמדבקות מונפשות ב-Telegram (.TGS). - ספרים, כתוביות ופונטים: מנוע
Calibre(ebook-convert), מנתח כתוביותpysubs2(SRT, VTT, ASS, SSA) ומהדר פונטיםfonttools(דחיסת Brotli ב-WOFF2).
4. הגנה מונעת משאבים (System Guard)
כדי להגן מפני נפילת השרת עקב מחסור בזיכרון (OOM Killer), הוטמע שירות אבחון מונע System Guard. לפני קבלת קובץ לעיבוד, המערכת בודקת מדדי מאضيف מרכזיים:
- זיכרון גישה אקראית פנוי (RAM): מינימום 500 מגה-בייט נפח פנוי (
guard_min_free_ram_mb). - מקום בדיסק: מינימום 2 ג'יגה-בייט שטח פנוי בספריה
/tmp(guard_min_free_disk_mb). - תור משימות: הגבלת אורך תור ה-Celery (לא יותר מ-20 משימות ממתינות).
כאשר חורגים מהמגבלות, השירות מפעיל זמנית הגנה (HTTP 503 / הודעה בצ'אט), מונע עומס יתר על השרת ושולח התראה מיידית למנהלי המערכת ב-Telegram.
5. מחזור חיי קבצים ואבטחה (GDPR)
הархитектура תוכננה לפי מודל Zero-Data-Footprint:
- קבצי משתמשים מועלים לנפח מאובטח
tmp/conversions/עם קידומות ייחודיות המבוססות על מזהי משימות. - קבצים נשארים זמינים אך ורק במסגרת סשן העבודה — לא יותר מ-15 דקות (900 שניות).
- אספן האשפה האוטומטי מוחק קבצים מקוריים ומוכנים מיד לאחר אישור שליחה מוצלחת לצ'אט או עם פקיעת פסק הזמן של הסשן.
- מסד הנתונים PostgreSQL אינו שומר קבצים בינאריים או טקסטים אישיים של מסמכים — בטבלאות מתועדים רק מטא-נתונים טכניים אנונימיים (פורמטים, גדלים בבתים, זמן עבודה, סטטוסים).
6. REST API אוניברסלי שירותי ווב חיצוניים
השירות תוכנן מראש כ-backend מרובה פלטפורמות. לצד הבוט, פועל ממשק תכנות יישומים מאובטח ומלא עבור אתרי ווב (למשל, על Django) ובוטים צד שלישי:
GET /api/v1/formats— מטריצת JSON דינמית של כיווני המרה זמינים, מסונכרנת עם הגדרות Google Sheets.POST /api/v1/convert— קצה (endpoint) אוניברסלי, המקבלmultipart/form-data(קובץ, פורמט יעד, מזהה לקוח חיצוני) ומחזיר זרם בייטים מוכן בצורה של הורדה ישירה.- הרשאה באמצעות טוקני Bearer (
WEBHOOK_REFRESH_TOKEN) עם הגנה מפני התקפות זמן דרךsecrets.compare_digest.
7. לוח בקרה ו-Observability (NiceGUI + AG Grid)
ניטור מדדים עסקיים ומצב המערכת הועבר ללוח בקרה נטיבי Single-Page על בסיס NiceGUI 2.x:
- טבלאות אינטראקטיביות
AG Grid (v32+)עם מסנני תיבות סימון מותאמים אישית בסגנון Excel (aggrid_filters.js). - ניטור תורים, עיכובי ספקי API ופינג של PostgreSQL / Redis בזמן אמת.
- סינון קצה לקצה לפי תאריכים עם אינטגרציה חלקה של לוח מחוונים BI
Metabaseדרך טוקני JWT חתומים.