Skip to content

Latest commit

 

History

History
364 lines (289 loc) · 17.6 KB

File metadata and controls

364 lines (289 loc) · 17.6 KB

أفكار تطوير تطبيق Python to EXE Converter

Context (السياق)

التطبيق الحالي عبارة عن أداة سطح مكتب مكتوبة بـ PyQt5 لتحويل ملفات بايثون إلى .exe عبر تغليف PyInstaller بواجهة عربية احترافية. الكود حالياً في ملف واحد ضخم (python_to_exe.py بحوالي 1,243 سطر) مع 4 تبويبات (رئيسي، متقدم، قوالب، عن البرنامج) و6 قوالب جاهزة. لا يوجد اختبارات، ولا CI، ولا دعم لتعدد اللغات، ولا توقيع رقمي، ولا تحرير metadata، ولا تحويل دفعي.

الهدف من هذه الوثيقة: تقديم قائمة شاملة بأفكار التطوير مع خارطة طريق تفصيلية متعددة المراحل، تشمل ميزات جديدة، تحسينات واجهة، وتحسينات تقنية.


الملف الرئيسي والكود الحالي

الملف الوصف
/home/user/python_to_exe/python_to_exe.py التطبيق الكامل في ملف واحد
/home/user/python_to_exe/README.md وثائق عربية

ملاحظة: لا يوجد requirements.txt، ولا tests/، ولا .github/workflows/، ولا تقسيم للوحدات.


القسم 1: ميزات جديدة للمستخدمين (Functional Features)

1.1 إدارة البيئات الافتراضية (Virtual Environments)

  • اكتشاف تلقائي لـ venv/conda داخل مجلد المشروع
  • زر "إنشاء venv جديد" مع تثبيت PyInstaller داخله
  • اختيار مفسر بايثون مخصص (Python interpreter selector)
  • استيراد متطلبات من requirements.txt / Pipfile / pyproject.toml / poetry.lock

1.2 محرر بيانات الإصدار (Version Info Editor)

  • واجهة لتعبئة معلومات الـ EXE: اسم المنتج، الشركة، الإصدار، حقوق النشر، وصف الملف
  • توليد ملف version.txt تلقائياً وتمريره عبر --version-file
  • معاينة كيف ستظهر المعلومات في Properties بنظام Windows

1.3 التوقيع الرقمي للملف التنفيذي (Code Signing)

  • دعم توقيع الـ EXE بشهادة Authenticode عبر signtool.exe
  • اختيار شهادة (.pfx) وكلمة المرور
  • توقيع تلقائي بعد البناء
  • التحقق من صحة التوقيع بعد العملية

1.4 تقليل البلاغات الكاذبة من مكافحات الفيروسات

  • إعدادات جاهزة لتقليل false positives (مثل --noupx، تجنب --onefile عند الحاجة)
  • اقتراحات لتجزئة الكود وتعديل entry point
  • زر فحص الـ EXE الناتج عبر VirusTotal API (اختياري)

1.5 شاشة البداية (Splash Screen)

  • اختيار صورة splash + نص ترحيب
  • تكامل مع --splash في PyInstaller
  • معاينة الصورة قبل البناء

1.6 التحويل الدفعي (Batch Conversion)

  • تحويل عدة ملفات .py في عملية واحدة (طابور)
  • تطبيق نفس الإعدادات على المجموعة
  • تقرير نهائي بنتائج كل عملية (نجاح/فشل)

1.7 دعم المشاريع متعددة الملفات

  • اختيار مجلد مشروع بأكمله (وليس ملف واحد)
  • اكتشاف نقطة الدخول تلقائياً
  • إضافة كل المجلد عبر --add-data بشكل ذكي

1.8 محلل التبعيات الذكي

  • توسيع كاشف الـ imports ليشمل:
    • __import__() و importlib.import_module()
    • قراءة requirements.txt / pyproject.toml
  • اقتراح hidden imports تلقائياً بناءً على نوع المشروع
  • تحذير من المكتبات التي يحتاجها PyInstaller hooks خاصة

1.9 وضع المعاينة الجاف (Dry-run / Preview)

  • زر "عرض الأمر" يظهر الأمر الكامل قبل التنفيذ
  • إمكانية تعديل الأمر يدوياً قبل التشغيل
  • نسخ الأمر إلى الحافظة

1.10 محرر Manifest للويندوز

  • إعدادات DPI awareness
  • متطلبات صلاحيات المدير (UAC)
  • توافق Windows 7/8/10/11

1.11 سجل البناءات السابقة (Build History)

  • حفظ آخر 20 عملية بناء مع إعداداتها
  • إعادة استخدام إعدادات سابقة بنقرة واحدة
  • مقارنة حجم/زمن البناء بين الإصدارات

1.12 محدّث تلقائي للتطبيق نفسه

  • فحص إصدار جديد من GitHub Releases
  • إشعار في الواجهة عند توفر تحديث

1.13 قوالب إضافية

  • FastAPI، Streamlit، Kivy، PySide6، Jupyter notebook → EXE
  • قالب CLI tool مع Click/Typer
  • قالب bot Discord/Telegram

1.14 تحسين حجم الـ EXE

  • مساعد "تنحيف" يقترح --exclude-module للوحدات غير المستخدمة
  • تحليل ما الذي يأخذ المساحة بعد البناء
  • تكامل مع UPX المحلي مع خيارات ضغط متقدمة

1.15 اختبار ما بعد البناء

  • تشغيل تلقائي للـ EXE الناتج للتحقق
  • اختبار أنه يعمل بدون Python مثبّت (وضع sandbox)
  • التحقق من صحة الـ exit code

القسم 2: تحسين الواجهة وتجربة المستخدم

2.1 تعدد اللغات (i18n)

  • إنشاء نظام ترجمة باستخدام QTranslator و ملفات .ts/.qm
  • دعم: العربية، الإنجليزية، الفرنسية، التركية، الإسبانية كبداية
  • مبدّل لغة في الواجهة دون إعادة تشغيل
  • استخراج كل النصوص المضمّنة من الكود إلى ملف ترجمات

2.2 السمات (Themes)

  • وضع نهاري (Light mode) بجانب الداكن الحالي
  • 3-4 سمات إضافية: Nord، Dracula، Solarized، Catppuccin (الحالي)
  • محرر سمات بسيط للمستخدم
  • حفظ السمة المفضلة في الإعدادات

2.3 إمكانية الوصول (Accessibility)

  • اختصارات لوحة المفاتيح لكل الإجراءات الأساسية
  • دعم قارئات الشاشة (setAccessibleName)
  • تحسين التباين للوضع عالي التباين
  • زيادة/تقليل حجم الخط من الإعدادات

2.4 معالج بسيط (Wizard) للمبتدئين

  • تدفق خطوة بخطوة: اختر الملف → اختر النوع → ابنِ
  • مخفي الافتراضات المعقدة عن المستخدمين الجدد
  • وضع "متقدم" للمستخدمين الخبراء

2.5 تحسين السجل (Log) في الوقت الحقيقي

  • بحث/فلترة داخل السجل
  • تلوين بالـ ANSI (تحذير/خطأ/معلومة)
  • زر تصدير السجل إلى ملف
  • طي/فتح أقسام السجل

2.6 شريط تقدم أذكى

  • استبدال heuristics بشريط تقدم بناءً على مراحل PyInstaller الفعلية (Analysis، Bundling، Building)
  • عرض الوقت المتبقي التقديري بناءً على بيانات سابقة
  • إشعارات Windows عند الانتهاء (مع QSystemTrayIcon)

2.7 السحب والإفلات (Drag and Drop)

  • إفلات ملف .py مباشرة على النافذة لتحديده
  • إفلات ملف .ico لاستخدامه كأيقونة
  • إفلات مجلد لإضافته كـ extra data

2.8 لوحة تحكم ملخصة (Dashboard)

  • شاشة رئيسية تعرض: آخر بناء، الإحصائيات، الإعدادات السريعة
  • روابط سريعة للقوالب الأكثر استخداماً

2.9 معاينة فورية للأيقونة

  • عرض الأيقونة المختارة في الواجهة بأحجام مختلفة
  • محرر أيقونة بسيط (تكبير/تصغير من PNG)

2.10 وضع مظلم/مضيء تلقائي

  • اتباع إعدادات النظام (Windows/macOS theme detection)

القسم 3: تحسينات تقنية وجودة الكود

3.1 تقسيم الملف الواحد

هيكل مقترح:

python_to_exe/
├── main.py                    # نقطة الدخول
├── ui/
│   ├── main_window.py
│   ├── tabs/
│   │   ├── basic_tab.py
│   │   ├── advanced_tab.py
│   │   ├── templates_tab.py
│   │   └── about_tab.py
│   └── widgets/
├── core/
│   ├── builder.py             # منطق PyInstaller
│   ├── dependency_analyzer.py
│   ├── config_manager.py
│   └── templates.py
├── i18n/
│   └── translations/
├── themes/
├── tests/
└── requirements.txt

3.2 إضافة اختبارات

  • pytest مع pytest-qt لاختبارات الواجهة
  • اختبارات وحدة لـ build_command() و dependency analyzer
  • اختبارات تكامل تحاكي عملية بناء كاملة
  • تغطية مستهدفة: 70%+

3.3 إعداد CI/CD

  • GitHub Actions لـ:
    • تشغيل الاختبارات على push/PR
    • فحص الكود (ruff, mypy, black)
    • بناء releases تلقائية لـ Windows/Linux/macOS
    • نشر الـ EXE المُحوَّل في Releases

3.4 إدارة التبعيات

  • إنشاء requirements.txt و requirements-dev.txt
  • إنشاء pyproject.toml بتعريف المشروع كحزمة
  • دعم تثبيت عبر pip install python-to-exe-gui

3.5 معالجة الأخطاء والتسجيل

  • استبدال try/except الصامتة بمعالجة صريحة
  • استخدام مكتبة logging بدل print
  • ملف سجل دائم في ~/.python_to_exe/logs/
  • دوران السجل (log rotation)

3.6 التحقق من المدخلات

  • التحقق أن ملف المصدر بايثون صالح (parse عبر ast)
  • التحقق من امتداد الأيقونة (.ico فقط)
  • منع تعارضات المسارات (إخراج = مصدر)
  • التحقق من حروف غير قانونية في اسم الملف

3.7 الترقية إلى PyQt6

  • التخطيط للانتقال من PyQt5 إلى PyQt6 (أو PySide6 للترخيص المرن)
  • Qt6 أكثر دعماً مستقبلياً

3.8 توافق متعدد المنصات

  • إصلاح badges الـ README لتعكس الدعم الفعلي
  • اختبار البناء على Linux/macOS
  • تعديل المسارات والأوامر لتكون cross-platform بشكل نظيف

3.9 وثائق محسّنة

  • نسخة إنجليزية من README
  • وثائق API/architecture للمطورين
  • دليل المساهمة (CONTRIBUTING.md)
  • ترخيص واضح (LICENSE)

3.10 أداء الواجهة

  • نقل عمليات I/O إلى QThread بدل threading لتجنب تجميد الـ UI
  • استخدام QProcess بدل subprocess للتكامل الأفضل مع Qt
  • lazy loading للتبويبات الثقيلة

القسم 4: خارطة الطريق (Roadmap) - متعددة المراحل

المرحلة 1: الأساسيات التقنية (1-2 أسبوع)

الهدف: قاعدة صلبة قبل إضافة ميزات

  1. تقسيم الملف الواحد إلى وحدات (ui/, core/, tests/)
  2. إضافة requirements.txt و pyproject.toml
  3. إعداد GitHub Actions أساسي (lint + test)
  4. كتابة 10-15 اختبار وحدة للوظائف الحرجة (build_command, dependency detection)
  5. استخراج كل النصوص العربية إلى ملف واحد تمهيداً للترجمة

الملفات المتأثرة: كل البنية تتغير. الملفات الحرجة:

  • python_to_exe.py → سيُقسَّم
  • ملفات جديدة: requirements.txt, pyproject.toml, .github/workflows/ci.yml, tests/test_builder.py

المرحلة 2: تحسينات UX سريعة (1 أسبوع)

الهدف: تحسينات ملموسة للمستخدم بمجهود قليل

  1. السحب والإفلات للملفات والأيقونات
  2. وضع الأمر المعاين (Dry-run) قبل التنفيذ
  3. تحسين السجل: بحث + تلوين + تصدير
  4. اختصارات لوحة المفاتيح للإجراءات الشائعة
  5. وضع نهاري (Light theme) كثانٍ

الملفات المتأثرة:

  • ui/main_window.py (drag & drop)
  • ui/tabs/basic_tab.py (preview command)
  • themes/ (سمة نهارية)

المرحلة 3: تعدد اللغات (1 أسبوع)

الهدف: فتح التطبيق لجمهور عالمي

  1. بنية ترجمة بـ QTranslator
  2. ترجمة كاملة إنجليزية
  3. مبدّل لغة في الإعدادات
  4. حفظ تفضيل اللغة
  5. (لاحقاً) إضافة فرنسية وتركية

الملفات المتأثرة:

  • i18n/translations/ar.ts, en.ts
  • ui/settings_dialog.py (مبدّل اللغة)

المرحلة 4: ميزات احترافية للمستخدمين المتقدمين (2-3 أسابيع)

الهدف: سد فجوات إنتاجية المطورين

  1. محرر Version Info / Metadata
  2. اكتشاف وإدارة venv
  3. استيراد من requirements.txt / pyproject.toml
  4. التحويل الدفعي (Batch)
  5. سجل البناءات السابقة (History)
  6. محلل تبعيات محسّن (يكشف dynamic imports)

الملفات المتأثرة:

  • core/version_editor.py (جديد)
  • core/venv_manager.py (جديد)
  • core/dependency_analyzer.py (تحسين)
  • core/build_history.py (جديد)
  • ui/tabs/batch_tab.py (جديد)

المرحلة 5: ميزات النشر والإنتاج (2 أسبوع)

الهدف: جعل التطبيق جاهز لاحتياجات النشر الحقيقي

  1. توقيع رقمي (Code signing) عبر signtool
  2. شاشة البداية (Splash screen)
  3. محرر Manifest
  4. اختبار ما بعد البناء (smoke test تلقائي)
  5. مساعد تقليل حجم الـ EXE

الملفات المتأثرة:

  • core/code_signer.py (جديد)
  • core/splash_manager.py (جديد)
  • core/manifest_editor.py (جديد)

المرحلة 6: قوالب ومحتوى إضافي (1 أسبوع)

الهدف: توسيع نطاق الاستخدام

  1. قوالب جديدة: FastAPI، Streamlit، Kivy، Discord bot، CLI Click
  2. مكتبة قوالب يساهم بها المجتمع (جلب من repo خارجي)
  3. توثيق إنجليزي شامل + دليل مساهمة

المرحلة 7: ميزات بعيدة المدى (مستقبلية)

  • التحديث الذاتي للتطبيق
  • لوحة dashboard مع إحصائيات
  • معاينة EXE في sandbox
  • تكامل VirusTotal
  • ترقية إلى PyQt6/PySide6

أولوية الميزات (ترتيب مقترح حسب القيمة/الجهد)

الأولوية الميزة السبب
🔴 عالية جداً تقسيم الكود + اختبارات + CI بدونها أي تطوير لاحق صعب
🔴 عالية جداً تعدد اللغات (إنجليزية) يضاعف الجمهور
🟠 عالية محلل تبعيات محسّن يحل أكبر مشكلة للمستخدمين (ModuleNotFoundError)
🟠 عالية محرر Version Info متطلب احترافي شائع
🟠 عالية السحب والإفلات + Dry-run تحسينات UX سريعة
🟡 متوسطة التوقيع الرقمي محدود للمستخدمين التجاريين
🟡 متوسطة تحويل دفعي للمستخدمين بعدة مشاريع
🟡 متوسطة venv management يحل تعقيد للمشاريع المعزولة
🟢 منخفضة شاشة البداية جمالي
🟢 منخفضة محدّث تلقائي nice-to-have

ملاحظات استراتيجية

  1. المخاطر التقنية: تقسيم ملف 1,243 سطر إلى وحدات قد يكسر سلوكاً ضمنياً — يحتاج اختبارات قبل التقسيم أو منهجية حذرة (refactor تدريجي).
  2. القرار حول PyQt5 vs PyQt6: PyQt5 لا يزال مستقراً لكن PyQt6 هو المستقبل. الترقية ليست ضرورية في المراحل الأولى لكن يجب أخذها في الحسبان.
  3. الترخيص: PyQt5 GPL — قد يكون PySide6 (LGPL) خياراً أفضل للمشاريع المغلقة المصدر.
  4. المجتمع: إضافة CHANGELOG.md، CONTRIBUTING.md، LICENSE، وقالب issues لتشجيع المساهمة.

التحقق (Verification)

بما أن هذا مستند أفكار (لا تنفيذ):

  • لا يحتاج اختبار تنفيذي؛ المخرَج هو الوثيقة ذاتها
  • بعد موافقة المستخدم على الأفكار، يمكن البدء بتنفيذ المرحلة 1 على فرع claude/brainstorm-app-ideas-FBuW4
  • التحقق من كل ميزة عند تنفيذها مستقبلاً سيكون عبر:
    • تشغيل التطبيق وتجربة الميزة يدوياً
    • تشغيل pytest tests/ للاختبارات
    • فحص خرج CI

الخطوات التالية المقترحة

  1. الموافقة على الوثيقة ومراجعتها
  2. اختيار المرحلة الأولى للبدء (مقترح: المرحلة 1 - الأساسيات التقنية)
  3. إنشاء issues على GitHub لكل مرحلة/ميزة
  4. البدء بالتنفيذ التدريجي على الفرع المحدد