#!/usr/bin/env python3 # health_check.py - فحص صحة النظام قبل النشر import os import sys import torch import logging from pathlib import Path def check_python_version(): """فحص إصدار Python""" version = sys.version_info if version.major == 3 and version.minor >= 9: print(f"✅ Python {version.major}.{version.minor}.{version.micro}") return True else: print(f"❌ Python {version.major}.{version.minor}.{version.micro} - يتطلب Python 3.9+") return False def check_pytorch(): """فحص PyTorch""" try: print(f"✅ PyTorch {torch.__version__}") device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print(f"✅ Device: {device}") return True except Exception as e: print(f"❌ PyTorch Error: {e}") return False def check_required_files(): """فحص الملفات المطلوبة""" required_files = [ "app.py", "model_definition.py", "simulation_modules.py", "requirements.txt", "Dockerfile", "app_config.yaml", "model/best_model.pth" ] missing_files = [] for file in required_files: if Path(file).exists(): size = Path(file).stat().st_size print(f"✅ {file} ({size:,} bytes)") else: print(f"❌ {file} - مفقود") missing_files.append(file) return len(missing_files) == 0 def check_model_loading(): """فحص تحميل النموذج""" try: from model_definition import InterfuserModel, create_model_config, load_and_prepare_model # إنشاء إعدادات النموذج config = create_model_config("model/best_model.pth") print("✅ تم إنشاء إعدادات النموذج") # تحميل النموذج device = torch.device("cpu") model = load_and_prepare_model(config, device) print("✅ تم تحميل النموذج بنجاح") return True except Exception as e: print(f"❌ خطأ في تحميل النموذج: {e}") return False def check_api_imports(): """فحص استيراد مكونات الـ API""" try: from app import app print("✅ تم استيراد FastAPI app") from simulation_modules import DisplayInterface, InterfuserController print("✅ تم استيراد وحدات المحاكاة") return True except Exception as e: print(f"❌ خطأ في استيراد الـ API: {e}") return False def main(): """الفحص الشامل للنظام""" print("🔍 فحص صحة نظام Baseer Self-Driving API") print("=" * 50) checks = [ ("Python Version", check_python_version), ("PyTorch", check_pytorch), ("Required Files", check_required_files), ("API Imports", check_api_imports), ("Model Loading", check_model_loading), ] passed = 0 total = len(checks) for name, check_func in checks: print(f"\n🔍 {name}:") try: if check_func(): passed += 1 else: print(f"❌ فشل في فحص {name}") except Exception as e: print(f"❌ خطأ في فحص {name}: {e}") print("\n" + "=" * 50) print(f"📊 النتيجة النهائية: {passed}/{total} فحوصات نجحت") if passed == total: print("🎉 النظام جاهز للنشر!") return True else: print("⚠️ يجب إصلاح المشاكل قبل النشر") return False if __name__ == "__main__": success = main() sys.exit(0 if success else 1)