سروس All File Converter کو جدید Python 3.12 ایسکرونس اسٹیک پر مبنی ایک قابلِ توسیع تقسیم شدہ SaaS سسٹم کے طور پر ڈیزائن کیا گیا ہے۔ معمارੀ کو آزاد تہوں میں تقسیم کیا گیا ہے: نیٹ ورک ایونٹس کی وصولی، ٹاسک آرکیسٹریشن، بھاری بائنری پراسیسز کی آئسولیٹڈ ایگزیکیوشن اور اینالیٹیکل لوپ۔

1. مجموعی ٹیکنالوجی اسٹیک اور سسٹمز آرکیٹیکچر

پلیٹ فارم کی بنیاد ہائی تھروپٹ، کم از کم میموری کے استعمال اور خرابیوں سے بچاؤ کے اصولوں پر رکھی گئی ہے:

  • Telegram Bot Framework: Aiogram 3.13، جو سیک্রেট ٹوکنز کی توثیق اور کسٹم میسج لائف سائیکل فلٹرز کے ساتھ Webhook موڈ میں کام کرتا ہے۔
  • ویب گیٹ وے اور REST API: Uvicorn ASGI سرور پر مبنی FastAPI جو بائنری فائلوں کی ایسکرونس اسٹریمنگ (FileResponse) اور BackgroundTasks کے ذریعے پس منظر میں صفائی کی سہولت فراہم کرتا ہے۔
  • کیو بروکر اور کیش: Redis 7 (Celery ٹاسک مینجمنٹ، ریس کنڈیشنز سے بچاؤ، برٹ فورس سے تحفظ، سیشن کیشنگ)۔
  • پس منظر کا کارندہ (Task Queue): Celery 5.4 جو کہ ایک الگ تھلگ کنٹینر converter_worker میں ورکرز کے مخصوص پول کے ساتھ کام کرتا ہے۔
  • ڈیٹا بیس: PostgreSQL 16 مع ORM لیئر SQLAlchemy 2.0 (asyncpg)، مستقل کنکشنز کا پول (20+10 overflow) اور ناکام ٹرانزیکشنز کی آٹو ریٹرائی (@db_retry
  • نیٹ ورک لوپ: Middleware کے ذریعے سرور تک براہ راست IP رسائی کو مسدود کرتے ہوئے Cloudflare Zero Trust کے ذریعے ٹنلنگ۔

2. ایسکرونس کیوز اور ہیوی کمپیوٹations کی آئسولیشن (Celery + Redis)

میڈیا فائلوں اور آفس سوٹس کی کنورژن سے CPU اور RAM پر شدید دباؤ پڑتا ہے۔ اس بات کو یقینی بنانے کے لیے کہ ہیوی آپریشنز کے دوران ٹیلیگرام میں آنے والے پیغامات کی پروسیسنگ کا عمل بلاک نہ ہو، سخت آئسولیشن نافذ کی گئی ہے:

  • Redis میں ٹاسکس کی تفویض: فارمیٹ کے انتخاب پر، ٹیلیگرام ہینڈلر ڈیٹا بیس میں PROCESSING اسٹیٹس کے ساتھ ٹاسک رجسٹر کرتا ہے اور Celery کے ذریعے tasks.execute_conversion کیو میں ٹاسک ڈالتا ہے۔
  • ورکر کا آئسولیٹڈ کنٹینر: کنورژن یوٹیلیٹیز کا نفاذ ایک علیحدہ Linux کنٹینر میں ہوتا ہے جس کی اپنی پروسیسر ٹائم اور میموری کی حد ہوتی ہے۔
  • ہینگ کنٹرول اور ٹائم آؤٹس: بیرونی یوٹیلیٹیز کی کالز کو سخت ٹائم کنٹرول کے ساتھ ایسکرونس کنٹیکسٹ میں لپیٹ دیا گیا ہے (conversion_timeout_sec = 180)۔ حد سے تجاوز کرنے پر، عمل کو زبردستی proc.kill() کے ذریعے ختم کر دیا جاتا ہے تاکہ وسائل آزاد ہو جائیں۔
  • فالٹ ٹالرینٹ فال بیک: Redis بروکر کے عارضی طور پر دستیاب نہ ہونے کی صورت میں، ٹاسک خود بخود مقامی ایسکرونس ڈسپیچر کے ذریعے لے لیا جاتا ہے اور صارف کے لیے کسی خرابی کے بغیر براہ راست انجام پاتا ہے۔

3. خصوصی کنورژن انجنوں کا پائپ لائن

ہر ڈیٹا کی قسم کے لیے انتہائی مخصوص نیٹو یوٹیلیٹیز اور لائبریریز استعمال کی جاتی ہیں:

  • دستاویزات اور شیٹس (LibreOffice): DOCX، XLSX، PPTX، RTF، ODT کو PDF یا ٹیکسٹ فائلوں میں درست طریقے سے رینڈر کرنے کے لیے ہیڈلیس آفس سوٹ (soffice --headless
  • اسٹریمنگ آڈیو اور ویڈیو (FFmpeg): ویڈیو کوڈیکس (H.264)، آڈیو کوڈیکس (MP3, OGG Opus) کی ملٹی تھریڈڈ ٹرانسکوڈنگ، آڈیو ٹریکس کا اخراج، GIF جنریشن (Lanczos فلٹر) اور ٹیلیگرام ویڈیو پیغامات کی مربع تراش خراش (1:1)۔
  • ہائی اسپیڈ PDF پروسیسنگ (Poppler Utils): pdftotext (UTF-8 میں فارمیٹ شدہ متن کا فوری اخراج) اور pdftoppm (LibreOffice کے اضافی اخراجات کے بغیر PDF کو راسٹر امیجز میں صفحہ بہ صفحہ رینڈر کرنا)۔
  • آپٹیکل ریکگنیشن (Tesseract OCR): 40+ زبانوں میں اسکینز اور تصاویر سے پرنٹ شدہ متن کا نیورل نیٹ ورک کے ذریعے اخراج۔
  • راسٹر اور ویکٹر گرافکس: Pillow لائبریریز (بشمول HEIC اور AVIF فارمیٹس کے لیے سپورٹ)، ویکٹر امیجز کے لیے CairoSVG اور ٹیلیگرام اینیمیٹڈ اسٹیکرز (.TGS) کے لیے lottie۔
  • کتابیں، سب ٹائٹلز اور فونٹس: Calibre انجن (ebook-convert)، سب ٹائٹل پارسر pysubs2 (SRT, VTT, ASS, SSA) اور فونٹ کمپائلر fonttools (WOFF2 میں Brotli کمپریشن)۔

4. حفاظتی تدابیر اور وسائل کا تحفظ (System Guard)

میموری کی کمی (OOM Killer) کی وجہ سے سرور کے کریش ہونے سے بچنے کے لیے پیشگی تشخیصی سروس System Guard نافذ کی گئی ہے۔ پروسیسنگ کے لیے فائل قبول کرنے سے پہلے، سسٹم ہوسٹ کے اہم میٹرکس کی جانچ کرتا ہے:

  • خالی ریم (RAM): کم از کم 500 MB خالی جگہ (guard_min_free_ram_mb
  • ڈسک کی جگہ: /tmp ڈائریکٹری میں کم از کم 2 GB خالی جگہ (guard_min_free_disk_mb
  • ٹاسک کیو: Celery کیو کی لمبائی پر پابندی (20 سے زیادہ منتظر ٹاسکس نہیں)۔

حدود سے تجاوز کرنے پر، سروس عارضی طور پر تحفظ کو فعال کر دیتی ہے (HTTP 503 / چیٹ میں پیغام)، جس سے سرور کے اوورلوڈ ہونے سے بچاؤ ہوتا ہے اور ٹیلیگرام میں منتظمین کو فوری الرٹ چلا جاتا ہے۔

5. فائلوں کا لائف سائیکل اور سیکیورٹی (GDPR)

معمارੀ کو زیرو ڈیٹا فٹ پرنٹ ماڈل کے تحت ڈیزائن کیا گیا ہے:

  • صارفین کی فائلیں ٹاسک شناخت کنندگان پر مبنی منفرد پریفکسز کے ساتھ محفوظ والیوم tmp/conversions/ میں اپ لوڈ کی جاتی ہیں۔
  • فائلیں سختی سے ورکنگ سیشن کے دوران ہی دستیاب رہتی ہیں — 15 منٹ سے زیادہ نہیں (900 سیکنڈ)۔
  • آٹو میٹک گاربیج کلیکٹر چیٹ میں کامیابی سے بھیجے جانے کی تصدیق کے فوراً بعد یا سیشن کا ٹائم آؤٹ ختم ہونے پر اصل اور تیار شدہ فائلوں کو مٹا دیتا ہے۔
  • PostgreSQL ڈیٹا بیس بائنری فائلیں یا دستاویزات کا ذاتی متن ذخیرہ نہیں کرتا — ٹیبلز میں صرف گمنام تکنیکی میٹا ڈیٹا (فارمیٹس، بائٹس میں سائز، کام کا وقت، اسٹیٹس) درج کیے جاتے ہیں۔

6. بیرونی ویب سروسز کے لیے یونیورسل REST API

سروس کو شروع سے ہی ملٹی پلیٹ فارم بیک اینڈ کے طور پر ڈیزائن کیا گیا ہے۔ بوٹ کے ساتھ ساتھ، ویب سائٹس (مثلاً Django پر) اور تیسرے فریق کے بوٹس کے لیے ایک مکمل محفوظ پروگرامنگ انٹرفیس بھی کام کرتا ہے:

  • GET /api/v1/formats — دستیاب کنورژن ڈائریکشنز کی متحرک JSON میٹرکس، جو Google Sheets کی ترتیبات کے ساتھ ہم آہنگ ہے۔
  • POST /api/v1/convert — ایک یونیورسل اینڈ پوائنٹ جو multipart/form-data (فائل، ٹارگٹ فارمیٹ، بیرونی کلائنٹ کی آئی ڈی) قبول کرتا ہے اور براہ راست ڈاؤن لوڈ کی شکل میں بائٹس کا تیار شدہ اسٹریم دیتا ہے۔
  • secrets.compare_digest کے ذریعے ٹائم اٹیک سے تحفظ کے ساتھ Bearer ٹوکنز (WEBHOOK_REFRESH_TOKEN) کے ذریعے توثیق۔

7. کنٹرول پینل اور Observability (NiceGUI + AG Grid)

کاروباری اشاریوں اور سسٹم کی حالت کی نگرانی کو NiceGUI 2.x پر مبنی نیٹو سنگل پیج کنٹرول پینل میں منتقل کر دیا گیا ہے:

  • کسٹم ایکسل اسٹائل چیک باکس فلٹرز (aggrid_filters.js) کے ساتھ انٹرایکٹو ٹیبلز AG Grid (v32+)۔
  • کیوز، API فراہم کنندگان کی تاخیر اور PostgreSQL / Redis کے پنگ کی ریئل ٹائم مانیٹرنگ۔
  • دستخط شدہ JWT ٹوکنز کے ذریعے Metabase BI ڈیش بورڈ کے ساتھ ہموار انٹیگریشن کے ساتھ تاریخوں کے لحاظ سے جامع فلٹرنگ۔