Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| # -*- coding: utf-8 -*- | |
| """ | |
| ملف تشخيص مشكلة زر التلخيص - معالجة شاملة | |
| """ | |
| import subprocess | |
| import sys | |
| import json | |
| import requests | |
| import time | |
| import os | |
| def check_server_process(): | |
| """التحقق من عملية الخادم""" | |
| print("🔍 البحث عن عملية الخادم...") | |
| try: | |
| # البحث في العمليات الجارية | |
| result = subprocess.run( | |
| ['tasklist', '/FI', 'IMAGENAME eq python.exe'], | |
| capture_output=True, text=True, shell=True | |
| ) | |
| python_processes = [] | |
| for line in result.stdout.split('\n'): | |
| if 'python.exe' in line: | |
| python_processes.append(line.strip()) | |
| print(f"عدد العمليات Python الجارية: {len(python_processes)}") | |
| if python_processes: | |
| print("✅ العمليات الموجودة:") | |
| for proc in python_processes[:5]: # أول 5 فقط | |
| print(f" {proc}") | |
| return len(python_processes) > 0 | |
| except Exception as e: | |
| print(f"❌ خطأ في فحص العمليات: {e}") | |
| return False | |
| def check_port_status(): | |
| """فحص حالة المنافذ""" | |
| print("\n🌐 فحص حالة المنافذ...") | |
| ports_to_check = [5001, 5054, 8501] | |
| port_status = {} | |
| for port in ports_to_check: | |
| try: | |
| result = subprocess.run( | |
| ['netstat', '-an'], | |
| capture_output=True, text=True, shell=True | |
| ) | |
| is_listening = f':{port}' in result.stdout and 'LISTENING' in result.stdout | |
| port_status[port] = is_listening | |
| status_emoji = "✅" if is_listening else "❌" | |
| print(f" {status_emoji} Port {port}: {'LISTENING' if is_listening else 'NOT LISTENING'}") | |
| except Exception as e: | |
| print(f" ❌ Port {port}: خطأ في الفحص - {e}") | |
| port_status[port] = False | |
| return port_status | |
| def test_cors_issue(): | |
| """اختبار مشكلة CORS""" | |
| print("\n🔧 اختبار مشكلة CORS...") | |
| try: | |
| # طلب OPTIONS | |
| response = requests.options( | |
| 'http://localhost:5001/summarize', | |
| timeout=5 | |
| ) | |
| print(f"Status Code: {response.status_code}") | |
| # فحص CORS headers | |
| headers = dict(response.headers) | |
| cors_origin = headers.get('Access-Control-Allow-Origin', 'غير موجود') | |
| print(f"CORS Origin: '{cors_origin}'") | |
| # تحقق من المشكلة | |
| if ',' in cors_origin: | |
| print("❌ مشكلة CORS: القيمة تحتوي على فواصل متعددة!") | |
| print(" هذا يسبب الخطأ: 'multiple values *, *'") | |
| return False | |
| elif cors_origin == '*': | |
| print("✅ CORS header صحيح") | |
| return True | |
| else: | |
| print(f"⚠️ CORS header غير متوقع: {cors_origin}") | |
| return False | |
| except requests.exceptions.ConnectionError: | |
| print("❌ لا يمكن الاتصال بالخادم - الخادم غير مشتغل") | |
| return False | |
| except Exception as e: | |
| print(f"❌ خطأ في اختبار CORS: {e}") | |
| return False | |
| def test_summarize_functionality(): | |
| """اختبار وظيفة التلخيص""" | |
| print("\n🤖 اختبار وظيفة التلخيص...") | |
| test_data = { | |
| "text": "Hello, how are you? What are you doing today? Tell me about your work.", | |
| "language": "arabic", | |
| "type": "full" | |
| } | |
| try: | |
| response = requests.post( | |
| 'http://localhost:5001/summarize', | |
| json=test_data, | |
| headers={'Content-Type': 'application/json'}, | |
| timeout=30 | |
| ) | |
| print(f"Status Code: {response.status_code}") | |
| if response.status_code == 200: | |
| data = response.json() | |
| print(f"Response Keys: {list(data.keys())}") | |
| if data.get('success'): | |
| print("✅ التلخيص نجح!") | |
| print(f"Summary Type: {data.get('type', 'غير محدد')}") | |
| if 'summary' in data: | |
| summary_preview = str(data['summary'])[:100] + "..." | |
| print(f"Summary Preview: {summary_preview}") | |
| return True | |
| else: | |
| print("⚠️ لا يوجد ملخص في الاستجابة") | |
| return False | |
| else: | |
| print(f"❌ فشل التلخيص: {data.get('error', 'خطأ غير معروف')}") | |
| return False | |
| else: | |
| error_text = response.text[:200] | |
| print(f"❌ خطأ HTTP {response.status_code}: {error_text}") | |
| return False | |
| except requests.exceptions.Timeout: | |
| print("❌ انتهت مهلة الطلب - الخادم بطيء أو لا يستجيب") | |
| return False | |
| except Exception as e: | |
| print(f"❌ خطأ في اختبار التلخيص: {e}") | |
| return False | |
| def check_dependencies(): | |
| """فحص المكتبات المطلوبة""" | |
| print("\n📦 فحص المكتبات المطلوبة...") | |
| required_packages = [ | |
| 'flask', 'flask-cors', 'requests', | |
| 'google-generativeai', 'librosa', 'soundfile' | |
| ] | |
| missing_packages = [] | |
| for package in required_packages: | |
| try: | |
| result = subprocess.run( | |
| [sys.executable, '-c', f'import {package.replace("-", "_")}'], | |
| capture_output=True, text=True | |
| ) | |
| if result.returncode == 0: | |
| print(f" ✅ {package}") | |
| else: | |
| print(f" ❌ {package} - غير مثبت") | |
| missing_packages.append(package) | |
| except Exception as e: | |
| print(f" ❌ {package} - خطأ في الفحص: {e}") | |
| missing_packages.append(package) | |
| if missing_packages: | |
| print(f"\n⚠️ المكتبات المفقودة: {', '.join(missing_packages)}") | |
| print("تشغيل الأمر: pip install " + " ".join(missing_packages)) | |
| return False | |
| else: | |
| print("\n✅ جميع المكتبات مثبتة") | |
| return True | |
| def restart_server_suggestion(): | |
| """اقتراحات لإعادة تشغيل الخادم""" | |
| print("\n🔄 اقتراحات الإصلاح:") | |
| print("1. إيقاف الخادم الحالي (Ctrl+C في التيرمينال)") | |
| print("2. تشغيل الخادم مرة أخرى:") | |
| print(" python recorder_server.py") | |
| print("\n3. أو استخدام ملف البدء:") | |
| print(" python start_debug.py") | |
| print("\n4. التحقق من تشغيل الخادم:") | |
| print(" curl http://localhost:5001/record") | |
| def main(): | |
| """الدالة الرئيسية للتشخيص""" | |
| print("=" * 60) | |
| print("🚀 تشخيص شامل لمشكلة زر التلخيص") | |
| print("=" * 60) | |
| # فحص العمليات | |
| has_python_process = check_server_process() | |
| # فحص المنافذ | |
| port_status = check_port_status() | |
| # فحص المكتبات | |
| dependencies_ok = check_dependencies() | |
| # إذا كان المنفذ مفتوح، اختبر CORS والتلخيص | |
| if port_status.get(5001, False): | |
| cors_ok = test_cors_issue() | |
| if cors_ok: | |
| summarize_ok = test_summarize_functionality() | |
| else: | |
| summarize_ok = False | |
| print("\n❌ لا يمكن اختبار التلخيص بسبب مشكلة CORS") | |
| else: | |
| cors_ok = False | |
| summarize_ok = False | |
| print("\n❌ لا يمكن اختبار CORS/التلخيص - الخادم غير مشتغل") | |
| # النتيجة النهائية | |
| print("\n" + "=" * 60) | |
| print("📊 ملخص التشخيص:") | |
| print("=" * 60) | |
| print(f" 📦 المكتبات: {'✅ موجودة' if dependencies_ok else '❌ مفقودة'}") | |
| print(f" 🔧 عملية Python: {'✅ تعمل' if has_python_process else '❌ لا تعمل'}") | |
| print(f" 🌐 المنفذ 5001: {'✅ مفتوح' if port_status.get(5001) else '❌ مغلق'}") | |
| print(f" 🔧 CORS: {'✅ صحيح' if cors_ok else '❌ مشكلة'}") | |
| print(f" 🤖 التلخيص: {'✅ يعمل' if summarize_ok else '❌ لا يعمل'}") | |
| if summarize_ok: | |
| print("\n🎉 جميع الاختبارات نجحت! المشكلة محلولة.") | |
| elif not port_status.get(5001): | |
| print("\n🔄 يجب تشغيل الخادم أولاً") | |
| restart_server_suggestion() | |
| elif not cors_ok: | |
| print("\n🔄 مشكلة CORS - يجب إعادة تشغيل الخادم") | |
| restart_server_suggestion() | |
| else: | |
| print("\n🔍 هناك مشكلة أخرى تحتاج لمزيد من التحقق") | |
| print("=" * 60) | |
| if __name__ == "__main__": | |
| main() | |