Tjänsten All File Converter är utformad som ett skalbart, distribuerat SaaS-system baserat på en modern asynkron Python 3.12-stack. Arkitekturen är uppdelad i oberoende skikt: nätverkshändelsemottagning, aktivitetsorkestrering, isolerat utförande av tunga binära processer och analyskretsen.

1. Övergripande teknikstack och systemarkitektur

Plattformen bygger på principer om hög genomströmning (high-throughput), minimal minnesförbrukning och felkrysskydd:

  • Telegram Bot Framework: Aiogram 3.13, som körs i Webhook-läge med validering av hemliga token och anpassade filter för meddelandets livscykel.
  • Webb-gateway och REST API: FastAPI baserat på ASGI-servern Uvicorn med asynkron strömmande leverans av binärfiler (FileResponse) och bakgrundsrensning via BackgroundTasks.
  • Kö-mäklare och cache: Redis 7 (hantering av Celery-uppgifter, lås mot race conditions, skydd mot brute force, sessionscachdning).
  • Bakgrundsexekutor (Task Queue): Celery 5.4 med en dedikerad pool av workers i en isolerad converter_worker-container.
  • Databas: PostgreSQL 16 med ORM-lagret SQLAlchemy 2.0 (asyncpg), en pool med permanenta anslutningar (20+10 overflow) och automatisk omstart av misslyckade transaktioner (@db_retry).
  • Nätverkskrets: Tunnelering via Cloudflare Zero Trust med blockering av direkt IP-åtkomst till servern via Middleware.

2. Asynkrona köer och isolering av tunga beräkningar (Celery + Redis)

Konvertering av mediefiler och kontorspaket skapar toppbelastningar på CPU och RAM. För att säkerställa att bearbetningen av inkommande meddelanden i Telegram inte blockeras vid tunga åtgärder har strikt isolering implementerats:

  • Delegering av uppgifter till Redis: Vid val av format registrerar Telegram-hanteraren uppgiften i databasen med statusen PROCESSING och placerar jobbet i kön tasks.execute_conversion via Celery.
  • Isolerad worker-container: Körningen av konverteringsverktyg sker i en separat Linux-container med en egen gräns för processtid och minne.
  • Hängningskontroll och tidsgränser: Anrop till externa verktyg är inneslutna i en asynkron kontext med strikt tidsstyrning (conversion_timeout_sec = 180). Om gränsen överskrids avbryts processen tvångsvis via proc.kill(), vilket frigör resurser.
  • Tålig Fallback: Vid tillfällig otillgänglighet för Redis-mäklaren fångas uppgiften automatiskt upp av den lokala asynkrona disponenten och utförs direkt utan avbrott för användaren.

3. Pipeline för specialiserade konverteringsmotorer

För varje datatyp används hårt specialiserade inbyggda verktyg och bibliotek:

  • Dokument och kalkylblad (LibreOffice): Ett headless-kontorspaket (soffice --headless) för exaktrendering av DOCX, XLSX, PPTX, RTF, ODT till PDF-format eller textfiler.
  • Strömmande ljud och video (FFmpeg): Multitrådad omkodning av videocodec (H.264), audiocodec (MP3, OGG Opus), extrahering av ljudspår, generering av GIF (Lanczos-filter) och kvadratisk beskärning (1:1) av Telegram-videomeddelanden.
  • Höghastighetshantering av PDF (Poppler Utils): Verktygen pdftotext (omedelbar extrahering av formaterad text till UTF-8) och pdftoppm (sidvis rendering av PDF till rasterbilder utan LibreOffices overhead).
  • Optisk teckenläsning (Tesseract OCR): Neural nätverksbaserad extrahering av tryckt text från scannade dokument och foton på 40+ språk.
  • Raster- och vektorgrafik: Biblioteken Pillow (inklusive stöd för HEIC- och AVIF-format), CairoSVG för vektorbilder och lottie för animerade Telegram-klistermärken (.TGS).
  • Böcker, undertexter och typsnitt: Motorn Calibre (ebook-convert), undertextparsern pysubs2 (SRT, VTT, ASS, SSA) och typsnittskompilatorn fonttools (Brotli-komprimering i WOFF2).

4. Preventivt resursskydd (System Guard)

För att skydda mot serverkrascher på grund av minnesbrist (OOM Killer) har diagnostiktjänsten System Guard implementerats. Innan en fil tas emot för bearbetning kontrollerar systemet värdens nyckeltal:

  • Ledigt primärminne (RAM): Minst 500 MB ledig volym (guard_min_free_ram_mb).
  • Utrymme på hårddisk: Minst 2 GB ledigt utrymme i katalogen /tmp (guard_min_free_disk_mb).
  • Aktivitetskö: Begränsning av Celery-köns längd (högst 20 väntande uppgifter).

Om gränserna överskrids aktiverar tjänsten tillfälligt skydd (HTTP 503 / meddelande i chatten), vilket förhindrar överbelastning av servern och skickar en omedelbar varning till administratörer i Telegram.

5. Filens livscykel och säkerhet (GDPR)

Arkitekturen är utformad enligt Zero-Data-Footprint-modellen:

  • Användarfiler laddas upp till en skyddad volym tmp/conversions/ med unika prefix baserade på uppgiftsidentifierare.
  • Filer förblir tillgängliga strikt inom ramen för arbetssessionen — högst 15 minuter (900 sekunder).
  • En automatisk skräpsamlare raderar käll- och färdiga filer omedelbart efter bekräftelse på att de har skickats till chatten eller när sessionstiden har löpt ut.
  • PostgreSQL-databasen lagrar inte binära filer eller personliga dokumenttexter — tabellerna sparar endast anonymiserade tekniska metadata (format, storlek i byte, körtid, statusar).

6. Universellt REST API för externa webbtjänster

Tjänsten är ursprungligen utformad som en multiplattforms-backend. Vid sidan av boten finns ett fullt fungerande och skyddat programmeringsgränssnitt för webbplatser (till exempel på Django) och tredjepartsbotar:

  • GET /api/v1/formats — en dynamisk JSON-matris med tillgängliga konverteringsriktningar, synkroniserad med Google Sheets-inställningar.
  • POST /api/v1/convert — en universell endpoint som tar emot multipart/form-data (fil, målformat, extern klient-ID) och returnerar en färdig byte-ström för direkt nedladdning.
  • Auktorisering via Bearer-tokens (WEBHOOK_REFRESH_TOKEN) med skydd mot tidsattacker via secrets.compare_digest.

7. Kontrollpanel och Observability (NiceGUI + AG Grid)

Övervakning av affärsmått och systemstatus har flyttats till en inhemsk Single-Page-kontrollpanel baserad på NiceGUI 2.x:

  • Interaktiva tabeller AG Grid (v32+) med anpassade kryssruta-filter i Excel-stil (aggrid_filters.js).
  • Övervakning i realtid av köer, fördröjningar från API-leverantörer samt ping till PostgreSQL / Redis.
  • Genomgående datumfiltrering med sömlös integration av BI-dashboarden Metabase via signerade JWT-tokens.