Spaces:
Runtime error
Runtime error
| #!/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) | |