Paslauga All File Converter suprojektuota kaip keičiamo mastelio paskirstyta SaaS sistema, pagrįsta moderniu asinhroniniu Python 3.12 steku. Architektūra padalinta į nepriklausomus sluoksnius: tinklo įvykių priėmimą, užduočių orkestravimą, izoliuotą sunkiųjų dvejetainių procesų vykdymą ir analitinį kontūrą.
1. Bendras technologijų stekas ir sisteminė architektūra
Platformos pagrindą sudaro didelio našumo (high-throughput), minimalaus atminties sunaudojimo ir apsaugos nuo gedimų principai:
- Telegram Bot Framework:
Aiogram 3.13, veikiantis Webhook režimu su slaptų žetonų (tokenų) patvirtinimu ir pasirinktiniais pranešimų gyvavimo ciklo filtrais. - Žiniatinklio šliuzas ir REST API:
FastAPI, pagrįstas ASGI serveriu Uvicorn su asinhroniniu dvejetainių failų srautiniu siuntimu (FileResponse) ir foniniu valymu perBackgroundTasks. - Eilių brokeris ir talpykla (cache):
Redis 7(Celery užduočių valdymas, lenktynių būsenos blokavimas, apsauga nuo brute-force, sesijų kaupimas talpykloje). - Foninis vykdytojas (Task Queue):
Celery 5.4su paskirtu darbuotojų (worker) telkiniu izoliuotame konteineryjeconverter_worker. - Duomenų bazė:
PostgreSQL 16su ORM sluoksniuSQLAlchemy 2.0 (asyncpg), nuolatinių jungčių base'u (20+10 overflow) ir nesėkmingų operacijų automatiniu pakartojimu (@db_retry). - Tinklo kontūras: Tuneliavimas per
Cloudflare Zero Trustsu tiesioginio IP pasiekimo prie serverio blokavimu per Middleware.
2. Asinhroninės eilės ir sunkiųjų skaičiavimų izoliacija (Celery + Redis)
Mediacijos failų ir biuro paketų konvertavimas sukelia dideles apkrovas CPU ir RAM. Kad įeinančių pranešimų apdorojimo procesas Telegram nebūtų blokuojamas atliekant sunkias operacijas, įgyvendinta griežta izoliacija:
- Užduočių delegavimas į Redis: Pasirinkus formatą, Telegram apdorojimo modulis užregistruoja užduotį duomenų bazėje su būsena
PROCESSINGir įtraukia užduotį į eilętasks.execute_conversionper Celery. - Izoliuotas darbuotojo konteineris: Konvertavimo įrankių vykdymas vyksta atskirame Linux konteineryje su savo procesoriaus laiko ir atminties langu.
- Užstrigimų kontrolė ir skirtieji laikai (timeouts): Išorinių įrankių iškvietimai apvilkti asinhroniniu kontekstu su griežta laiko kontrole (
conversion_timeout_sec = 180). Viršijus limitą, procesas priverstinai nutraukiamas perproc.kill(), atlaisvinant išteklius. - Atsparus gedimams Fallback: Laikinai nepasiekiamam Redis brokeriui, užduotį automatiškai perima vietinis asinhroninis dispečeris ir ji įvykdoma tiesiogiai, be trikdžių vartotojui.
3. Specializuotų konvertavimo variklių konvejeris
Kiekvienam duomenų tipui naudojami specializuoti aparatiniai įrankiai ir bibliotekos:
- Dokumentai ir lentelės (LibreOffice): Beagalvis (headless) biuro paketas (
soffice --headless), skirtas tiksliam DOCX, XLSX, PPTX, RTF, ODT atvaizdavimui į PDF formatą arba tekstinius failus. - Srautinis audio ir video (FFmpeg): Daugiagijis video kodekų (H.264), audio kodekų (MP3, OGG Opus) perkodavimas, garso takelių išskyrimas, GIF generavimas (Lanczos filtras) ir kvadratinis Telegram video žinučių apkirpimas (1:1).
- Didelės spartos PDF apdorojimas (Poppler Utils): Įrankiai
pdftotext(momentinis suformatuoto teksto išskyrimas į UTF-8) irpdftoppm(puslapis po puslapio PDF atvaizdavimas į rastrinius paveikslėlius be LibreOffice pridėtinių išlaidų). - Optinis atpažinimas (Tesseract OCR): Dirbtinio intelekto pagrindu veikiantis spausdinto teksto išskyrimas iš nuskaitytų dokumentų ir nuotraukų daugiau nei 40 kalbų.
- Rastrinė ir vektoriaus grafika: Bibliotekos
Pillow(įskaitant HEIC ir AVIF formatų palaikymą),CairoSVGvektoriniams paveikslėliams irlottieanimuotiems Telegram lipdukams (.TGS). - Knygos, subtitrai ir šriftai: Variklis
Calibre(ebook-convert), subtitrų analizatoriuspysubs2(SRT, VTT, ASS, SSA) ir šriftų kompiliatoriusfonttools(Brotli kompresija į WOFF2).
4. Prevencinė išteklių apsauga (System Guard)
Siekiant apsaugoti serverį nuo nulūžimo dėl atminties trūkumo (OOM Killer), įdiegta prevencinė diagnostikos paslauga System Guard. Prieš priimant failą apdorojimui, sistema patikrina pagrindinius pagrindinio kompiuterio (host) metrikas:
- Laisva operatyvioji atmintis (RAM): Mažiausiai 500 MB laisvos talpos (
guard_min_free_ram_mb). - Vieta diske: Mažiausiai 2 GB laisvos vietos
/tmpdirektyvoje (guard_min_free_disk_mb). - Užduočių eilė: Celery eilės ilgio apribojimas (ne daugiau kaip 20 laukiančių užduočių).
Viršijus limitus, paslauga laikinai įjungia apsaugą (HTTP 503 / žinutė pokalbyje), taip užkirsdama kelią serverio perkrovai ir siųsdama momentinį įspėjimą (alert) administratoriams į Telegram.
5. Failų gyvavimo ciklas ir saugumas (GDPR)
Architektūra suprojektuota pagal Zero-Data-Footprint modelį:
- Vartotojų failai įkeliami į apsaugotą tomą
tmp/conversions/su unikaliis priešdėliais, pagrįstais užduočių identifikatoriais. - Failai išlieka pasiekiami griežtai darbo sesijos metu — ne ilgiau kaip 15 minučių (900 sekundžių).
- Automatinis šiukšlių rinktuvas (garbage collector) ištrina pradinius ir paruoštus failus iš karto po sėkmingo išsiuntimo į pokalbį patvirtinimo arba pasibaigus sesijos skirtajam laikui.
- PostgreSQL duomenų bazė nesaugo dvejetainių failų ar asmeninių dokumentų tekstų — lentelėse fiksuojami tik nuasmeninti techniniai metaduomenys (formatai, dydis baitais, veikimo laikas, būsenos).
6. Universalus REST API išorinėms žiniatinklio paslaugoms
Paslauga iš pradžių buvo suprojektuota kaip daugialypė (multi-platform) backend sistema. Kartu su botu veikia pilnavertė apsaugota programinė sąsaja (API) svetainėms (pavyzdžiui, Django pagrindu) ir trečiųjų šalių botams:
GET /api/v1/formats— dinaminė galimų konvertavimo krypčių JSON matrica, suderinta su Google Lentelių nustatymais.POST /api/v1/convert— universalus galutinis taškas (endpoint), priimantismultipart/form-data(failą, tikslinį formatą, išorinio kliento ID) ir grąžinantis paruoštą baitų srautą tiesioginio atsisiuntimo pavidalu.- Autorizacija per Bearer žetonus (
WEBHOOK_REFRESH_TOKEN) su apsauga nuo laiko atakų persecrets.compare_digest.
7. Valdymo skydelis ir Observability (NiceGUI + AG Grid)
Verslo rodiklių ir sistemos būsenos stebėjimas perkeltas į vietinį Single-Page valdymo skydelį, pagrįstą NiceGUI 2.x:
- Interaktyvios lentelės
AG Grid (v32+)su pasirinktiniais Excel stiliaus žymimųjų langelių filtrais (aggrid_filters.js). - Eilių, API teikėjų vėlavimų ir PostgreSQL / Redis pingo stebėjimas realiuoju laiku.
- Nuoseklus filtravimas pagal datas su sklandžia BI prietaisų skydelio
Metabaseintegracija per pasirašytus JWT žetonus.