Þ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:
FastAPIbyggt á Uvicorn ASGI netþjóni með samhæfðri streymiútsendingu á tvíundarskrám (FileResponse) og bakgrunnshreinsun í gegnumBackgroundTasks. - 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.4með sérstöku vinnsluhólfi í einangruðu íláti (container)converter_worker. - Gagnagrunnur:
PostgreSQL 16með ORM-laginuSQLAlchemy 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 Trustmeð 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
PROCESSINGog setur verkefnið í biðröðinatasks.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 í gegnumproc.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) ogpdftoppm(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ð),CairoSVGfyrir vigurmyndir oglottiefyrir hreyfimyndalímmiða í Telegram (.TGS). - Bækur, textar (subtitles) og leturgerðir:
Calibrevélbúnaðurinn (ebook-convert), textagreiningartóliðpysubs2(SRT, VTT, ASS, SSA) og leturgerðarþýðandinnfonttools(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 í gegnumsecrets.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ð
MetabaseBI mælaborðið í gegnum undirrituð JWT-tákn.