All File Converter ծառայությունը նախագծված է որպես մասշտաբավորվող բաշխված SaaS համակարգ՝ հիմնված Python 3.12 ժամանակակից ասինխրոն ստեկի վրա։ Ճարտարապետությունը բաժանված է անկախ շերտերի՝ ցանցային իրադարձությունների ընդունում, առաջադրանքների օրկեստրրավորում, ծանր բինար գործընթացների մեկուսացված կատարում և վերլուծական կոնտուր:

1. Ընդհանուր տեխնոլոգիական ստեկ և համակարգային ճարտարապետություն

Պլատֆորմի հիմքում ընկած են բարձր թողունակության (high-throughput), հիշողության նվազագույն սպառման և խափանումներից պաշտպանության սկզբունքները.

  • Telegram Bot Framework: Aiogram 3.13, որն աշխատում է Webhook ռեժիմում՝ գաղտնի թոքենների վավերացմամբ և հաղորդագրությունների կյանքի ցիկլի հարմարեցված ֆիլտրերով:
  • Վեբ-շլյուզ և REST API: FastAPI՝ Uvicorn ASGI սերվերի հիման վրա՝ բինար ֆայլերի ասինխրոն հոսքային տրամադրմամբ (FileResponse) և ֆոնային մաքրմամբ BackgroundTasks-ի միջոցով:
  • Հերթերի բրոքեր և քեշ: Redis 7 (Celery առաջադրանքների կառավարում, մրցավազքի վիճակի արգելափակումներ, բրութֆորսից պաշտպանություն, սեանսների քեշավորում):
  • Ֆոնային կատարող (Task Queue): Celery 5.4՝ աշխատողների (workers) առանձնացված փուլով converter_worker մեկուսացված կոնտեյներում:
  • Տվյալների բազա: PostgreSQL 16՝ SQLAlchemy 2.0 (asyncpg) ORM շերտով, մշտական միացումների փուլով (20+10 overflow) և վթարային տարանցումների ավտոկրկնությամբ (@db_retry):
  • Ցանցային կոնտուր: Թունելավորում Cloudflare Zero Trust-ի միջոցով՝ Middleware-ի միջոցով սերվերին ուղղակի IP մուտքի արգելափակմամբ:

2. Ասինխրոն հերթեր և ծանր հաշվարկների մեկուսացում (Celery + Redis)

Մեդիաֆայլերի և գրասենյակային փաթեթների փոխարկումը ստեղծում է պիկային ծանրաբեռնվածություն CPU-ի և RAM-ի վրա: Որպեսզի Telegram-ում մուտքային հաղորդագրությունների մշակման գործընթացը չարգելափակվի ծանր գործողությունների ժամանակ, իրականացվել է խիստ մեկուսացում.

  • Առաջադրանքների պատվիրակում Redis-ին: Ձևաչափն ընտրելիս Telegram-մշակիչը գրանցում է առաջադրանքը ՏԲ-ում PROCESSING կարգավիճակով և առաջադրանքը դնում tasks.execute_conversion հերթում Celery-ի միջոցով:
  • Աշխատողի մեկուսացված կոնտեյներ: Փոխարկման գործիքների կատարումը տեղի է ունենում առանձին Linux կոնտեյներում՝ պրոցեսորային ժամանակի և հիշողության սեփական սահմանաչափով:
  • Կախվածությունների վերահսկում և թայմաուտներ: Արտաքին գործիքների կանչերը ներառված են ասինխրոն համատեքստում՝ ժամանակի խիստ վերահսկողությամբ (conversion_timeout_sec = 180): Սահմանաչափը գերազանցելիս գործընթացը հարկադրաբար ավարտվում է proc.kill()-ի միջոցով՝ ազատելով ռեսուրսները:
  • Դիմացկուն Fallback: Redis բրոքերի ժամանակավոր անհասանելիության դեպքում առաջադրանքն ավտոմատ կերպով որսացվում է տեղային ասինխրոն կարգավարի կողմից և կատարվում ուղղակիորեն՝ առանց օգտատիրոջ համար խափանումների:

3. Մասնագիտացված փոխարկման շարժիչների փոխակերպման հոսքագիծ

Տվյալների յուրաքանչյուր տեսակի համար ներգրավվում են նեղ մասնագիտացված նատիվ գործիքներ և գրադարաններ.

  • Փաստաթղթեր և աղյուսակներ (LibreOffice): Անգլուխ գրասենյակային փաթեթ (soffice --headless) DOCX, XLSX, PPTX, RTF, ODT PDF կամ տեքստային ֆայլերի ճշգրիտ ռենդերինգի համար:
  • Հոսքային աուդիո և վիդեո (FFmpeg): Վիդեոկոդեկների (H.264), աուդիոկոդեկների (MP3, OGG Opus) բազմահոսքային վերակոդավորում, ձայնային ուղիների դուրսբերում, GIF-ի գեներացում (Lanczos ֆիլտր) և Telegram տեսահաղորդագրությունների քառակուսի կտրվածք (1:1):
  • Բարձր արագությամբ PDF մշակում (Poppler Utils): pdftotext (ձևաչափված տեքստի ակնթարթային դուրսբերում UTF-8-ում) և pdftoppm գործիքներ (PDF-ի էջ առ էջ ռենդերինգ ռաստերային պատկերների LibreOffice-ի հավելյալ ծախսերից առանց):
  • Օպտիկական ճանաչում (Tesseract OCR): Տպագիր տեքստի նευրոնային ցանցի միջոցով դուրսբերում սկանավորված նյութերից և լուսանկարներից 40+ լեզուներով:
  • Ռաստերային և վեկտորային գրաֆիկա: Pillow գրադարաններ (ներառյալ HEIC և AVIF ձևաչափերի աջակցությունը), CairoSVG վեկտորային պատկերների համար և lottie Telegram անիմացիոն կպչուն պիտակների համար (.TGS):
  • Գրքեր, ենթագրեր և տառատեսակներ: Calibre շարժիչ (ebook-convert), pysubs2 ենթագրերի վերլուծիչ (SRT, VTT, ASS, SSA) և fonttools տառատեսակների կոմպիլյատոր (Brotli սեղմում WOF2-ում):

4. Ռեսուրսների կանխարգելիչ պաշտպանություն (System Guard)

Հիշողության անբավարարության պատճառով սերվերի անկումից պաշտպանվելու համար (OOM Killer) ներդրվել է System Guard կանխարգելիչ ախտորոշման ծառայությունը: Նախքան ֆայլը մշակման ընդունելը, համակարգը ստուգում է հոսթի հիմնական չափանիշները.

  • Ազատ օպերատիվ հիշողություն (RAM): Նվազագույնը 500 ՄԲ ազատ ծավալ (guard_min_free_ram_mb):
  • Տեղ սկավառակի վրա: Նվազագույնը 2 ԳԲ ազատ տարածք /tmp գրացուցակում (guard_min_free_disk_mb):
  • Առաջադրանքների հերթ: Celery հերթի երկարության սահմանափակում (ոչ ավելի, քան 20 սպասվող առաջադրանք):

Սահմանաչափերը գերազանցելիս ծառայությունը ժամանակավորապես միացնում է պաշտպանությունը (HTTP 503 / հաղորդագրություն չաթում)՝ կանխելով սերվերի գերբեռնվածությունը և Telegram-ում անմիջապես ազդանշան ուղարկելով ադմինիստրատորներին:

5. Ֆայլերի կյանքի ցիկլ և անվտանգություն (GDPR)

Ճարտարապետությունը նախագծված է Zero-Data-Footprint մոդելով.

  • Օգտատերերի ֆայլերըբեռնվում են tmp/conversions/ պաշտպանված հատոր՝ առաջադրանքների նույնացուցիչների վրա հիմնված եզակի նախածանցներով:
  • Ֆայլերը մնում են հասանելի խստորեն աշխատանքային սեանսի շրջանակներում՝ ոչ ավելի, քան 15 րոպե (900 վայրկյան):
  • Ավտոմատ աղբահավաքը ջնջում է սկզբնական և պատրաստի ֆայլերը չաթում հաջող ուղարկումը հաստատելուց անմիջապես հետո կամ սեանսի թայմաուտի սպառման դեպքում:
  • PostgreSQL տվյալների բազան չի պահում բինար ֆայլեր կամ փաստաթղթերի անձնական տեքստեր. աղյուսակներում ֆիքսվում են միայն անանունացված տեխնիկական մետատվյալներ (ձևաչափեր, չափերը բայթերով, աշխատանքային ժամանակը, կարգավիճակները):

6. Տիեզերական REST API արտաքին վեբ ծառայությունների համար

Ծառայությունը սկզբնապես նախագծված է որպես բազմապլատֆորմային բեքենդ: Բոտի հետ մեկտեղ գործում է լիարժեք պաշտպանված ծրագրային ինտերֆեյս վեբ կայքերի համար (օրինակ՝ Django-ի վրա) և երրորդ կողմի բոտերի համար.

  • GET /api/v1/formats — հասանելի փոխարկման ուղղությունների դինամիկ JSON մատրիցա, որը համաժամեցված է Google Աղյուսակների կարգավորումների հետ:
  • POST /api/v1/convert — տիեզերական էնդպոինտ, որն ընդունում է multipart/form-data (ֆայլ, թիրախային ձևաչափ, արտաքին հաճախորդի ID) և տալիս է պատրաստի բայթերի հոսք ուղղակի ներբեռնման տեսքով:
  • Ավտորիզացիա Bearer թոքեններով (WEBHOOK_REFRESH_TOKEN)՝ ըստ ժամանակի գրոհներից պաշտպանությամբ secrets.compare_digest-ի միջոցով:

7. Կառավարման վահանակ և Observability (NiceGUI + AG Grid)

Բիզնես ցուցանիշների և համակարգի վիճակի մոնիտորինգը դուրս է բերված նատիվ Single-Page կառավարման վահանակ՝ հիմնված NiceGUI 2.x-ի վրա:

  • Ինտերակտիվ AG Grid (v32+) աղյուսակներ՝ հարմարեցված Excel-style վանդակավոր ֆիլտրերով (aggrid_filters.js):
  • Հերթերի, API մատակարարների ուշացումների և PostgreSQL / Redis պինգի մոնիտորինգ իրական ժամանակում:
  • Հատվածային ֆիլտրում ըստ ամսաթվերի՝ ստորագրված JWT թոքենների միջոցով Metabase BI վահանակի անխափան ինտեգրմամբ: