De Service All File Converter ass als eng skalierbar, verdeelt SaaS-System op Basis vum modernen asynchrone Stack Python 3.12 entworf. D'Architektur ass an onofhängeg Schichten ënnerdeelt: den Empfang vun Netzwierk-Eventer, d'Orchestratioun vun Aufgaben, d'isoléiert Ausféierung vu schwéiere binäre Prozesser an de analytesche Kontur.
1. Allgemenge Stack vun Technologien a Systemarchitektur
D'Basis vun der Plattform bilden d'Prinzipien vun enger héijer Leeschtung (high-throughput), engem minimale Späicherverbrauch an engem Schutz virun Ausfäll:
- Telegram Bot Framework:
Aiogram 3.13, deen am Webhook-Modus mat Validatioun vu geheime Tokens a personaliséierte Filtere vum Noriichteliewenszyklus leeft. - Web-Gateway an REST API:
FastAPIop Basis vum ASGI-Server Uvicorn mat asynchroner Streaming-Gabrëch vu binäre Fichieren (FileResponse) an enger Hannergrondbereinegungsfunktioun duerchBackgroundTasks. - Quewe-Broker a Cache:
Redis 7(Verwaltung vun Celery-Aufgaben, Spärungen géint de Race-Condition-Zoustand, Schutz géint Brute-Force, Caching vu Sessiounen). - Hannergrond-Ausféierer (Task Queue):
Celery 5.4mat engem dedizéierte Pool vu Worker an engem isoléierten Containerconverter_worker. - Datebank:
PostgreSQL 16mat der ORM-SchichtSQLAlchemy 2.0 (asyncpg), engem Pool vu permanente Verbinntungen (20+10 overflow) an engem Automatesch-Wiederholl-Mechanismus fir Feelerhaft Transaktiounen (@db_retry). - Netzwierkkontur: Tunneléierung duerch
Cloudflare Zero Trustmat Sperrung vum direkten IP-Zougang zum Server iwwer Middleware.
2. Asynchron Quewen an Isolatioun vu schwéiere Berechnungen (Celery + Redis)
D'Konversioun vu Mediendateien an Office-Päck generéiert Spëtzebelaaschtungen op CPU a RAM. Fir datt de Veraarbechtungsprozess vun den ukommende Noriichten am Telegram bei schwéieren Operatiounen net blockéiert gëtt, ass eng strikt Isolatioun ëmgesat ginn:
- Delegéierung vun Aufgaben un Redis: Bei der Auswiel vum Format registréiert den Telegram-Handler d'Aufgab an der Datebank mam Status
PROCESSINGan setzt d'Aufgab an d'Quewetasks.execute_conversioniwwer Celery. - Isoléierte Worker-Container: D'Ausféierung vun de Konversiounsutilite geschitt an engem getrennten Linux-Container mat engem eegene Limit fir Prozessorzäit a Späicher.
- Kontroll vuhängende Prozesser an Zäitlimit(en): D'Aufropen vun externe Utilitéite sinn an en asynchrone Kontext mat enger strenge Zäitkontroll agewéckelt (
conversion_timeout_sec = 180). Bei Iwwerschreidung vum Limit gëtt de Prozess zwangsleefeg duerchproc.kill()beendegt, fir d'Ressourcen fräizeginn. - Feelerresistent Fallback: Bei enger temporärer Onverfügbarkeet vum Redis-Broker gëtt d'Aufgab automatesch vum lokalen asynchrone Disponent iwwerholl an direkt ouni Ausfall fir de Benotzer ausgeféiert.
3. Pipeline vu spezialiséierte Konversiounsmotoren
Fir all Datentyp ginn enk spezialiséiert nativ Utilitéiten a Bibliothéiken agesat:
- Dokumenter an Tabellen (LibreOffice): E kapelllosen Office-Pak (
soffice --headless) fir präzis Rendering vun DOCX, XLSX, PPTX, RTF, ODT an PDF-Format oder Textfichieren. - Streaming Audio a Video (FFmpeg): Multithreaded Transkodéierung vu Videocodecs (H.264), Audiocodecs (MP3, OGG Opus), Extraktioun vun Tounspueren, Generatioun vu GIF (Lanczos-Filter) a quadratescht Ausschneiden (1:1) vun Telegram-Videonoriichten.
- Héichgeschwindeg PDF-Veraarbechtung (Poppler Utils): Utilitéite
pdftotext(blëtzaarteg Extraktioun vu formatéiertem Text an UTF-8) apdftoppm(säiteweis Rendering vu PDF an Rasterbiller ouni LibreOffice-Zousazkäschten). - Optesch Zeechenerkennung (Tesseract OCR): Neural Netzwierk-Extraktioun vu gedrécktem Text aus Scans a Fotoen op iwwer 40 Sproochen.
- Raster- a Vektorgrafik: Bibliothéike
Pillow(inklusiv Ënnerstëtzung fir HEIC- an AVIF-Formater),CairoSVGfir Vektorbiller anlottiefir animéiert Telegram-Sticker (.TGS). - Bicher, Ënnertitelen a Schrëften: De Motor
Calibre(ebook-convert), den Ënnertitelparserpysubs2(SRT, VTT, ASS, SSA) an de Schrëftkompilerfonttools(Brotli-Kompressioun am WOFF2).
4. Preventive Ressourceschutz (System Guard)
Fir de Schutz virun engem Serverofstuerz wéinst Späichermangel (OOM Killer) gouf de Service fir eng preventive Diagnostik System Guard agefouert. Virun der Unhuelung vun engem Fichier an d'Veraarbechtung iwwerpréift de System d'Schlësselmetriken vum Host:
- Fräien Arbeitsspeicher (RAM): Minimum 500 MB fräie Volumen (
guard_min_free_ram_mb). - Plaz op der Festplack: Minimum 2 GB fräie Plaz am Verzeechnes
/tmp(guard_min_free_disk_mb). - Aufgabequewe: Limitéierung vun der Celery-Quewelängt (net méi wéi 20 ureechend Aufgaben).
Bei Iwwerschreidung vun de Limite schalt de Service temporäer de Schutz an (HTTP 503 / Noriicht am Chat), verhënnert sou eng Iwwerbelaaschtung vum Server a schéckt en direkten Alert un d'Administrateuren am Telegram.
5. Liewenszyklus vu Fichieren a Sécherheet (GDPR)
D'Architektur ass nom Zero-Data-Footprint-Modell entworf:
- Benotzerfichieren ginn an e geschützte Volum
tmp/conversions/mat eenzegaartege Präfixe op Basis vun den Aufgabenevenementer gelueden. - Fichiere bleiwen strikt am Kader vun der Aarbechtssessioun zougänglech — net méi wéi 15 Minutten (900 Sekonnen).
- Den automatesche Rommelssammler läscht d'Original- a prett Fichiere direkt nom Confirméiere vun der erfollegräicher Versendung an de Chat oder nom Ofleefe vum Sessiouns-Timeout.
- D'PostgreSQL-Datebank späichert keng binär Fichieren oder perséinlech Dokumententexter — an den Tabelle ginn nëmmen anonymiséiert technesch Metadaten festgehalen (Formater, Gréissten a Byte, Aarbechtszäit, Statusen).
6. Universellen REST API fir extern Webservicer
De Service ass vunUfank un als e multiplatforme Backend entworf ginn. Nieft dem Bot leeft e vollwäertege geschützten programmateschen Interface fir Websäiten (zum Beispill op Django) an drëtt Botten:
GET /api/v1/formats— eng dynamesch JSON-Matrix vun de verfügbare Konversiounsrichtungen, synchroniséiert mat den Astellunge vu Google Tabellen.POST /api/v1/convert— en universellen Endpoint, deenmultipart/form-dataakzeptéiert (Fichier, Zilformat, ID vum externe Client) an e pretten Byte-Stream als direkten Download zeréckgëtt.- Autorisatioun duerch Bearer-Tokens (
WEBHOOK_REFRESH_TOKEN) mat Schutz géint Zäitattacken iwwersecrets.compare_digest.
7. Managementpanel an Observability (NiceGUI + AG Grid)
D'Iwwerwaachung vun de Geschäftszuelen an dem Systemzoustand gouf an eng nativ Single-Page Managementpanel op Basis vun NiceGUI 2.x integréiert:
- Interaktiv Tabellen
AG Grid (v32+)mat personaliséierten Excel-style Checkbox-Filtréierungen (aggrid_filters.js). - Iwwerwaachung vu Quewen, Verzögerunge vun API-Provideren a Ping vu PostgreSQL / Redis an Echtzäit.
- Duerchgängeg Filtréierung no Datume mat nahtloser Integratioun vum BI-Dashboard
Metabaseiwwer ënnerschriwwen JWT-Tokens.