Þjónustan All File Converter er hönnuð sem stigstærðanleg og dreifð SaaS-kerfi byggt á nútímalegum og samhæfðum Python 3.12 grunni. Arkitektúrnum er skipt í sjálfstæð lög: móttaka netskilaboða, stýring verkefna, einangruð keyrsla þungra tvíundarferla (binary processes) og greiningarlag.

1. Almennur tæknistakkur og kerfisarkitektúr

Grundvöllur pallarins byggist á meginreglum um mikla afköst (high-throughput), lágmarksminnisnotkun og bilanaþol:

  • Telegram Bot Framework: Aiogram 3.13, sem keyrir í Webhook ham með staðfestingu á leynitáknum (secret tokens) og sérsniðnum síum fyrir lífsferil skilaboða.
  • Vefgátt og REST API: FastAPI byggt á Uvicorn ASGI netþjóni með samhæfðri streymiútsendingu á tvíundarskrám (FileResponse) og bakgrunnshreinsun í gegnum BackgroundTasks.
  • Biðraðamiðlari og skyndiminni: Redis 7 (stjórnun Celery verkefna, læsingar gegn keppnisskilyrðum (race conditions), vörn gegn árásum og skyndiminnisvistun lotna).
  • Bakgrunnsframkvæmdaraðili (Task Queue): Celery 5.4 með sérstöku vinnsluhólfi í einangruðu íláti (container) converter_worker.
  • Gagnagrunnur: PostgreSQL 16 með ORM-laginu SQLAlchemy 2.0 (asyncpg), tengipúlu fyrir fastar tengingar (20+10 overflow) og sjálfvirkri endurtöku á biluðum færslum (@db_retry).
  • Netlag: Göngun í gegnum Cloudflare Zero Trust með lokun á beinum IP-aðgangi að netþjóninum í gegnum Middleware.

2. Samhæfðar biðraðir og einangrun þungra útreikninga (Celery + Redis)

Umbreyting margmiðlunarskráa og skrifstofupakka veldur álagstoppum á örgjörva (CPU) og vinnsluminni (RAM). Til að vinnsla á innkomnum skilaboðum í Telegram stíflist ekki við þungar aðgerðir er ströng einangrun innleidd:

  • Framseld verkefni yfir í Redis: Við val á sniði skráir Telegram-meðhöndlarinn verkefnið í gagnagrunninn með stöðunni PROCESSING og setur verkefnið í biðröðina tasks.execute_conversion í gegnum Celery.
  • Einangrað vinnsluílát (worker container): Framkvæmd umbreytingatækja fer fram í sérstöku Linux-íláti með sín eigin takmörk á vinnslutíma örgjörva og minni.
  • Tímatakmörk og eftirlit með frystingu: Köll í ytri tól eru vafin inn í samhæft samhengi með ströngu eftirliti með tíma (conversion_timeout_sec = 180). Ef mörkum er náð er ferlinu hætt með valdi í gegnum proc.kill() til að losa um auðlindir.
  • Bilanaþolinn varakostur (Fallback): Ef Redis biðraðamiðlarinn er tímabundið óaðgengilegur grípur staðbundinn samhæfður stjórnandi verkefnið sjálfkrafa og keyrir það beint án þess að það valdi bilun fyrir notandann.

3. Pípa sérhæfðra umbreytingarvéla

Fyrir hverja gagnagerð eru notaðar þröngt sérhæfðar innfæddar tól og söfn (libraries):

  • Skjöl og töflur (LibreOffice): Skrifstofupakki án myndskjás (soffice --headless) fyrir nákvæma myndgerð (rendering) á DOCX, XLSX, PPTX, RTF, ODT yfir í PDF snið eða textaskrár.
  • Straumspilun hljóðs og myndbands (FFmpeg): Fjölþráða umkóðun myndbandakóða (H.264), hljóðkóða (MP3, OGG Opus), útdráttur hljóðrása, gerð GIF (Lanczos-síu) og ferköntuð sniðmát (1:1) fyrir Telegram myndboð.
  • Hraðvirk PDF vinnsla (Poppler Utils): Tólin pdftotext (stundvís útdráttur á sniðnum texta í UTF-8) og pdftoppm (síðubundin myndgerð PDF yfir í punktafylkismyndir án aukakostnaðar frá LibreOffice).
  • Sjónræn textagreining (Tesseract OCR): Útdráttur prentaðs texta úr skanna og myndum á yfir 40 tungumálum með hjálp tauganeta.
  • Punktafylkis- og vigurgrafík: Söfnin Pillow (þar með talið stuðningur við HEIC og AVIF snið), CairoSVG fyrir vigurmyndir og lottie fyrir hreyfimyndalímmiða í Telegram (.TGS).
  • Bækur, textar (subtitles) og leturgerðir: Calibre vélbúnaðurinn (ebook-convert), textagreiningartólið pysubs2 (SRT, VTT, ASS, SSA) og leturgerðarþýðandinn fonttools (Brotli þjöppun í WOFF2).

4. Fyrirbyggjandi auðlindavörn (System Guard)

Til að verjast hruni netþjónsins vegna skorts á vinnsluminni (OOM Killer) hefur þjónustan fyrirbyggjandi greiningu System Guard innleidd. Áður en skrá er tekin til vinnslu athugar kerfið helstu mælikvarða hýsilsins:

  • Laust vinnsluminni (RAM): Lágmark 500 MB laust pláss (guard_min_free_ram_mb).
  • Diskpláss: Lágmark 2 GB laust pláss í möppunni /tmp (guard_min_free_disk_mb).
  • Verkefnabiðröð: Takmörkun á lengd Celery biðraðarinnar (ekki fleiri en 20 biðjandi verkefni).

Ef farið er yfir takmörkin kveikir þjónustan tímabundið á vörn (HTTP 503 / skilaboð í spjalli), kemur í veg fyrir ofhleðslu á netþjóninum og sendir stjórnendum tafarlaus viðvörun í Telegram.

5. Lífstími skráa og öryggi (GDPR)

Arkitektúrinn er hannaður samkvæmt Zero-Data-Footprint líkaninu:

  • Skrár notenda eru hlaðnar upp í öruggt gagnasvæði tmp/conversions/ með einstökum forskeytum sem byggjast á auðkenni verkefna.
  • Skrár eru aðgengilegar stranglega innan vinnulotunnar — ekki lengur en í 15 mínútur (900 sekúndur).
  • Sjálfvirkur ruslasöfnunaraðili eyðir upprunalegum og tilbúnum skrám strax eftir staðfestingu á að sending í spjall hafi heppnast eða þegar tímatakmörk lotu renna út.
  • PostgreSQL gagnagrunnurinn geymir ekki tvíundarskrár eða persónulegan texta skjala — í töflunum eru eingöngu skráðar nafnlausar tæknilegar lýsigögn (snið, stærð í bætum, vinnslutími, stöður).

6. Alhliða REST API fyrir ytri vefþjónustur

Þjónustan var frá upphafi hönnuð sem fjölpalls bakendi (multi-platform backend). Til hliðar við botninn starfar fullbúið og öruggt forritunarviðmót fyrir vefsíður (til dæmis á Django) og þriðja aðila botna:

  • GET /api/v1/formats — breytileg JSON fylki yfir tiltækar umbreytingarleiðir, samstillt við stillingar Google Sheets.
  • POST /api/v1/convert — alhliða endapunktur sem tekur við multipart/form-data (skrá, markmiðssnið, auðkenni ytri viðskiptavinar) og skilar tilbúnum bætestraum sem beinu niðurhali.
  • Auðkenning með Bearer-táknum (WEBHOOK_REFRESH_TOKEN) með vörn gegn tímaárásum í gegnum secrets.compare_digest.

7. Stjórnborð og Observability (NiceGUI + AG Grid)

Vöktun á viðskiptatölum og stöðu kerfisins hefur verið færð í innlent Single-Page stjórnborð byggt á NiceGUI 2.x:

  • Gagnvirkar töflur AG Grid (v32+) með sérsniðnum Excel-stíl gátreitasíum (aggrid_filters.js).
  • Vöktun á biðröðum, töfum API veitenda og pingu í PostgreSQL / Redis í rauntíma.
  • Í gegnumgangandi síun eftir dagsetningum með órofa samþættingu við Metabase BI mælaborðið í gegnum undirrituð JWT-tákn.