שירות 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 עם שכבת ORM SQLAlchemy 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 חתומים.