Files

1 line
128 KiB
JSON

{"repo": "ah95ed/wishcrafted", "files": {"lib/Controller/DashboardContorller/dashboardcontroller.dart": {"65701d95d5e2d5e28beb628e72e0e7e7120c0458": {"t": 1785746414.9936895, "n": 15808, "h": "1b1f6007424ea33f", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/Constants/Const.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\nimport 'package:wishcrafted/Models/chat_session.dart';\nimport 'package:wishcrafted/Helper/chat_storage_service.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // إدارة المحادثات\n List<ChatSession> chatSessions = [];\n ChatSession? currentSession;\n\n // تحميل المحادثات عند بدء التطبيق\n Future<void> loadChatSessions() async {\n chatSessions = await ChatStorageService.loadChatSessions();\n final currentSessionId = await ChatStorageService.getCurrentSessionId();\n\n if (currentSessionId != null) {\n currentSession = chatSessions.firstWhere(\n (session) => session.id == currentSessionId,\n orElse: () => _createNewSession(),\n );\n messages = List.from(currentSession!.messages);\n } else {\n _createNewSession();\n }\n\n notifyListeners();\n }\n\n // إنشاء محادثة جديدة\n ChatSession _createNewSession() {\n final now = DateTime.now();\n final newSession = ChatSession(\n id: 'chat_${now.millisecondsSinceEpoch}',\n title: 'محادثة جديدة',\n createdAt: now,\n lastUpdated: now,\n messages: [],\n );\n\n currentSession = newSession;\n messages = [];\n return newSession;\n }\n\n // بدء محادثة جديدة\n void startNewChat() {\n _createNewSession();\n notifyListeners();\n }\n\n // تحديد محادثة موجودة\n void selectChatSession(ChatSession session) {\n currentSession = session;\n messages = List.from(session.messages);\n ChatStorageService.setCurrentSessionId(session.id);\n notifyListeners();\n }\n\n // حفظ المحادثة الحالية\n Future<void> _saveCurrentSession() async {\n if (currentSession != null && messages.isNotEmpty) {\n final updatedSession = currentSession!.copyWith(\n title: ChatStorageService.generateChatTitle(messages),\n lastUpdated: DateTime.now(),\n messages: messages,\n );\n\n await ChatStorageService.saveChatSession(updatedSession);\n\n // تحديث المحادثة في القائمة\n final existingIndex = chatSessions.indexWhere(\n (s) => s.id == updatedSession.id,\n );\n if (existingIndex != -1) {\n chatSessions[existingIndex] = updatedSession;\n } else {\n chatSessions.add(updatedSession);\n }\n\n currentSession = updatedSession;\n notifyListeners();\n }\n }\n\n // حذف محادثة\n Future<void> deleteChatSession(String sessionId) async {\n await ChatStorageService.deleteChatSession(sessionId);\n chatSessions.removeWhere((session) => session.id == sessionId);\n\n if (currentSession?.id == sessionId) {\n startNewChat();\n }\n\n notifyListeners();\n }\nString _safeLocale(String? l) =>\n (l == 'en' || l == 'ar') ? l! : 'ar';\n\nint _clampClick(int click) =>\n click.clamp(1, 15);\n\nString _buildSystemInstruction({\n required int click,\n required String locale,\n}) {\n final idx = _clampClick(click);\n final p1 = prompts1[idx]?[locale]?.trim() ?? '';\n final p2 = prompts2[idx]?[locale]?.trim() ?? '';\n return [p1, p2].where((s) => s.isNotEmpty).join(\"\\n\\n\");\n}\n\n// استخراج آمن لنص الاستجابة من Gemini\nString _extractGeminiText(dynamic data) {\n try {\n final cands = data['candidates'];\n if (cands is List && cands.isNotEmpty) {\n final parts = cands[0]?['content']?['parts'];\n if (parts is List && parts.isNotEmpty) {\n final text = parts[0]?['text'];\n if (text is String && text.trim().isNotEmpty) {\n return text;\n }\n }\n }\n } catch (_) {}\n return 'No response';\n}\n\n // مسح جميع المحادثات\n Future<void> clearAllChatSessions() async {\n await ChatStorageService.clearAllSessions();\n chatSessions.clear();\n startNewChat();\n notifyListeners();\n } // تحديث النية المختارة\n\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n String apiKey = \"AIzaSyCJ6zpgO4xwm3zLHnbuByjX11shBLwH6eo\";\n List points = [];\n int click = 1;\n late String finalText;\n\n\n Future<void> askGemini(\n String intent, {\n String? locale, // \"ar\" أو \"en\"\n double temperature = 0.6,\n int maxOutputTokens = 512,\n}) async {\n final lang = _safeLocale(locale);\n final step = _clampClick(click);\n\n // 1) أضِف رسالة المستخدم إلى واجهتك\n messages.add(ChatMessage(text: intent, isUser: true));\n\n // 2) ابنِ System Instruction من البري-برومبت المناسب\n final systemInstruction = _buildSystemInstruction(click: step, locale: lang);\n\n isLoading = true;\n notifyListeners();\n\n final url = Uri.parse(\n 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey'\n );\n\n // 3) تهيئة الطلب (نرسل البري-برومبت كـ system_instruction وليس ضمن نص المستخدم)\n // final body = {\n // \"system_instruction\": {\n // \"parts\": [\n // {\"text\": systemInstruction}\n // ]\n // },\n // \"contents\": [\n // {\n // \"role\": \"user\",\n // \"parts\": [\n // {\"text\": intent}\n // ]\n // }\n // ],\n // \"generationConfig\": {\n // \"temperature\": temperature,\n // \"topK\": 32,\n // \"topP\": 0.9,\n // \"maxOutputTokens\": maxOutputTokens,\n // \"stopSequences\": [] // لا نوقف مبكرًا\n // },\n // // إعدادات أمان خفيفة (اختياري)\n // \"safetySettings\": [\n // {\"category\": \"HARM_CATEGORY_HATE_SPEECH\", \"threshold\": \"BLOCK_NONE\"},\n // {\"category\": \"HARM_CATEGORY_HARASSMENT\", \"threshold\": \"BLOCK_NONE\"},\n // {\"category\": \"HARM_CATEGORY_SEXUAL\", \"threshold\": \"BLOCK_NONE\"},\n // {\"category\": \"HARM_CATEGORY_DANGEROUS_CONTENT\", \"threshold\": \"BLOCK_NONE\"}\n // ]\n // };\n\n\nfinal body = {\n \"system_instruction\": {\n \"parts\": [\n {\"text\": systemInstruction}\n ]\n },\n \"contents\": [\n {\n \"role\": \"user\",\n \"parts\": [{\"text\": intent}]\n }\n ],\n \"generationConfig\": {\n \"temperature\": temperature,\n \"topK\": 32,\n \"topP\": 0.9,\n \"maxOutputTokens\": maxOutputTokens,\n \"stopSequences\": []\n },\n \"safetySettings\": [\n {\"category\": \"HARM_CATEGORY_HATE_SPEECH\", \"threshold\": \"BLOCK_NONE\"},\n {\"category\": \"HARM_CATEGORY_HARASSMENT\", \"threshold\": \"BLOCK_NONE\"},\n {\"category\": \"HARM_CATEGORY_SEXUALLY_EXPLICIT\", \"threshold\": \"BLOCK_NONE\"},\n {\"category\": \"HARM_CATEGORY_DANGEROUS_CONTENT\", \"threshold\": \"BLOCK_NONE\"}\n // {\"category\": \"HARM_CATEGORY_CIVIC_INTEGRITY\", \"threshold\": \"BLOCK_NONE\"}, // اختياري\n ]\n};\n\n\n\n\n try {\n final response = await http.post(\n url,\n headers: {'Content-Type': 'application/json'},\n body: jsonEncode(body),\n );\n\n if (response.statusCode == 200) {\n var data = jsonDecode(response.body);\n\n final reply = _extractGeminiText(data);\n logSuccess(\"Gemini reply = ${reply.substring(0, reply.length.clamp(0, 500))}\");\n\n // 4) أضِف رد النموذج\n messages.add(ChatMessage(text: reply, isUser: false));\n\n // 5) تقدّم للخطوة التالية\n click = (step < 15) ? step + 1 : 15;\n\n // 6) صيانة الحالة\n isLoading = false;\n\n // حفظ الجلسة\n await _saveCurrentSession();\n notifyListeners();\n } else {\n final err = \"خطأ: ${response.statusCode} → ${response.body}\";\n messages.add(ChatMessage(text: err, isUser: false));\n isLoading = false;\n await _saveCurrentSession();\n notifyListeners();\n logError(\"Gemini Error : ${response.statusCode} - ${response.body}\");\n throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n }\n } catch (e, st) {\n isLoading = false;\n messages.add(ChatMessage(text: \"استثناء: $e\", isUser: false));\n await _saveCurrentSession();\n notifyListeners();\n logError(\"Exception: $e\\n$st\");\n rethrow;\n }\n}\n\n // Future<void> askGemini(String intent) async {\n // messages.add(ChatMessage(text: intent, isUser: true));\n \n \n // // finalText = intent + (prompts1[click]! + prompts2[click]!);\n \n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse(\n // 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey',\n // );\n\n // final response = await http.post(\n // url,\n // headers: {'Content-Type': 'application/json'},\n\n // body: jsonEncode({\n // \"contents\": [\n // {\n // \"parts\": [\n // {\"text\": '$intent'}\n // ],\n // },\n // ],\n // }),\n // );\n\n // if (response.statusCode == 200) {\n // var data = jsonDecode(response.body);\n // data['candidates'][0]['content']['parts'][0]['text'] ?? 'No response';\n\n // // final lines = data.split(\"\\n\");\n // logSuccess(\"message = ${data}\");\n\n // // نحتفظ بس السطور اللي تبدي بأرقام\n // messages.add(\n // ChatMessage(\n // text: data['candidates'][0]['content']['parts'][0]['text'].toString(),\n // isUser: false,\n // ),\n // );\n // click++;\n // isLoading = false;\n // intent = '';\n // data = '';\n\n // // حفظ المحادثة تلقائياً\n // await _saveCurrentSession();\n\n // notifyListeners();\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // isLoading = false;\n\n // // حفظ المحادثة حتى لو كان هناك خطأ\n // await _saveCurrentSession();\n\n // notifyListeners();\n // logError(\"message : ${response.statusCode} - ${response.body}\");\n // throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n // }\n // isLoading = false;\n // notifyListeners();\n // }\n\n Future<void> sendLangSmithRun({\n required String name,\n required String runType,\n String? organizationId,\n }) async {\n messages.add(ChatMessage(text: name, isUser: true));\n isLoading = true;\n notifyListeners();\n final apiKey =\n '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'; // تأكد أنه مفتاح LangSmith الصحيح\n final url = Uri.parse('https://api.smith.langchain.com/runs');\n\n final headers = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer $apiKey',\n // أضف السطر التالي إذا كان مطلوباً:\n // 'X-Organization-ID': organizationId,\n };\n\n final body = jsonEncode({\n 'name': name,\n 'run_type': runType,\n // إضافة session_id أو بيانات إضافية حسب الحاجة\n });\n\n final response = await http.post(url, headers: headers, body: body);\n\n if (response.statusCode == 200 || response.statusCode == 201) {\n print('نجحت العملية: ${response.body}');\n messages.add(ChatMessage(text: response.body, isUser: false));\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n logError(\" Error ______ ${response.statusCode} : ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n\n // Future<void> sendMessage(String message) async {\n // messages.add(ChatMessage(text: message, isUser: true));\n // isLoading = true;\n // notifyListeners();\n\n // const apiKey =\n // 'sk-1ba2a293eeab42d8baed484e863f97db';\n // final url = Uri.parse('https://api.deepseek.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"deepseek-chat\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": message},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // logError(\"DeepSeek Error ${response.statusCode}: ${response.body}\");\n // }\n // } catch (e) {\n // messages.add(\n // ChatMessage(text: \"تعذر الاتصال بخدمة DeepSeek. $e\", isUser: false),\n // );\n // logError(\"DeepSeek Exception: $e\");\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "47ee9a12bb5990d673df292f9ff0f99d5b716a84": {"t": 1785763760.1556869, "n": 15808, "h": "1b1f6007424ea33f", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/Constants/Const.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\nimport 'package:wishcrafted/Models/chat_session.dart';\nimport 'package:wishcrafted/Helper/chat_storage_service.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // إدارة المحادثات\n List<ChatSession> chatSessions = [];\n ChatSession? currentSession;\n\n // تحميل المحادثات عند بدء التطبيق\n Future<void> loadChatSessions() async {\n chatSessions = await ChatStorageService.loadChatSessions();\n final currentSessionId = await ChatStorageService.getCurrentSessionId();\n\n if (currentSessionId != null) {\n currentSession = chatSessions.firstWhere(\n (session) => session.id == currentSessionId,\n orElse: () => _createNewSession(),\n );\n messages = List.from(currentSession!.messages);\n } else {\n _createNewSession();\n }\n\n notifyListeners();\n }\n\n // إنشاء محادثة جديدة\n ChatSession _createNewSession() {\n final now = DateTime.now();\n final newSession = ChatSession(\n id: 'chat_${now.millisecondsSinceEpoch}',\n title: 'محادثة جديدة',\n createdAt: now,\n lastUpdated: now,\n messages: [],\n );\n\n currentSession = newSession;\n messages = [];\n return newSession;\n }\n\n // بدء محادثة جديدة\n void startNewChat() {\n _createNewSession();\n notifyListeners();\n }\n\n // تحديد محادثة موجودة\n void selectChatSession(ChatSession session) {\n currentSession = session;\n messages = List.from(session.messages);\n ChatStorageService.setCurrentSessionId(session.id);\n notifyListeners();\n }\n\n // حفظ المحادثة الحالية\n Future<void> _saveCurrentSession() async {\n if (currentSession != null && messages.isNotEmpty) {\n final updatedSession = currentSession!.copyWith(\n title: ChatStorageService.generateChatTitle(messages),\n lastUpdated: DateTime.now(),\n messages: messages,\n );\n\n await ChatStorageService.saveChatSession(updatedSession);\n\n // تحديث المحادثة في القائمة\n final existingIndex = chatSessions.indexWhere(\n (s) => s.id == updatedSession.id,\n );\n if (existingIndex != -1) {\n chatSessions[existingIndex] = updatedSession;\n } else {\n chatSessions.add(updatedSession);\n }\n\n currentSession = updatedSession;\n notifyListeners();\n }\n }\n\n // حذف محادثة\n Future<void> deleteChatSession(String sessionId) async {\n await ChatStorageService.deleteChatSession(sessionId);\n chatSessions.removeWhere((session) => session.id == sessionId);\n\n if (currentSession?.id == sessionId) {\n startNewChat();\n }\n\n notifyListeners();\n }\nString _safeLocale(String? l) =>\n (l == 'en' || l == 'ar') ? l! : 'ar';\n\nint _clampClick(int click) =>\n click.clamp(1, 15);\n\nString _buildSystemInstruction({\n required int click,\n required String locale,\n}) {\n final idx = _clampClick(click);\n final p1 = prompts1[idx]?[locale]?.trim() ?? '';\n final p2 = prompts2[idx]?[locale]?.trim() ?? '';\n return [p1, p2].where((s) => s.isNotEmpty).join(\"\\n\\n\");\n}\n\n// استخراج آمن لنص الاستجابة من Gemini\nString _extractGeminiText(dynamic data) {\n try {\n final cands = data['candidates'];\n if (cands is List && cands.isNotEmpty) {\n final parts = cands[0]?['content']?['parts'];\n if (parts is List && parts.isNotEmpty) {\n final text = parts[0]?['text'];\n if (text is String && text.trim().isNotEmpty) {\n return text;\n }\n }\n }\n } catch (_) {}\n return 'No response';\n}\n\n // مسح جميع المحادثات\n Future<void> clearAllChatSessions() async {\n await ChatStorageService.clearAllSessions();\n chatSessions.clear();\n startNewChat();\n notifyListeners();\n } // تحديث النية المختارة\n\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n String apiKey = \"AIzaSyCJ6zpgO4xwm3zLHnbuByjX11shBLwH6eo\";\n List points = [];\n int click = 1;\n late String finalText;\n\n\n Future<void> askGemini(\n String intent, {\n String? locale, // \"ar\" أو \"en\"\n double temperature = 0.6,\n int maxOutputTokens = 512,\n}) async {\n final lang = _safeLocale(locale);\n final step = _clampClick(click);\n\n // 1) أضِف رسالة المستخدم إلى واجهتك\n messages.add(ChatMessage(text: intent, isUser: true));\n\n // 2) ابنِ System Instruction من البري-برومبت المناسب\n final systemInstruction = _buildSystemInstruction(click: step, locale: lang);\n\n isLoading = true;\n notifyListeners();\n\n final url = Uri.parse(\n 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey'\n );\n\n // 3) تهيئة الطلب (نرسل البري-برومبت كـ system_instruction وليس ضمن نص المستخدم)\n // final body = {\n // \"system_instruction\": {\n // \"parts\": [\n // {\"text\": systemInstruction}\n // ]\n // },\n // \"contents\": [\n // {\n // \"role\": \"user\",\n // \"parts\": [\n // {\"text\": intent}\n // ]\n // }\n // ],\n // \"generationConfig\": {\n // \"temperature\": temperature,\n // \"topK\": 32,\n // \"topP\": 0.9,\n // \"maxOutputTokens\": maxOutputTokens,\n // \"stopSequences\": [] // لا نوقف مبكرًا\n // },\n // // إعدادات أمان خفيفة (اختياري)\n // \"safetySettings\": [\n // {\"category\": \"HARM_CATEGORY_HATE_SPEECH\", \"threshold\": \"BLOCK_NONE\"},\n // {\"category\": \"HARM_CATEGORY_HARASSMENT\", \"threshold\": \"BLOCK_NONE\"},\n // {\"category\": \"HARM_CATEGORY_SEXUAL\", \"threshold\": \"BLOCK_NONE\"},\n // {\"category\": \"HARM_CATEGORY_DANGEROUS_CONTENT\", \"threshold\": \"BLOCK_NONE\"}\n // ]\n // };\n\n\nfinal body = {\n \"system_instruction\": {\n \"parts\": [\n {\"text\": systemInstruction}\n ]\n },\n \"contents\": [\n {\n \"role\": \"user\",\n \"parts\": [{\"text\": intent}]\n }\n ],\n \"generationConfig\": {\n \"temperature\": temperature,\n \"topK\": 32,\n \"topP\": 0.9,\n \"maxOutputTokens\": maxOutputTokens,\n \"stopSequences\": []\n },\n \"safetySettings\": [\n {\"category\": \"HARM_CATEGORY_HATE_SPEECH\", \"threshold\": \"BLOCK_NONE\"},\n {\"category\": \"HARM_CATEGORY_HARASSMENT\", \"threshold\": \"BLOCK_NONE\"},\n {\"category\": \"HARM_CATEGORY_SEXUALLY_EXPLICIT\", \"threshold\": \"BLOCK_NONE\"},\n {\"category\": \"HARM_CATEGORY_DANGEROUS_CONTENT\", \"threshold\": \"BLOCK_NONE\"}\n // {\"category\": \"HARM_CATEGORY_CIVIC_INTEGRITY\", \"threshold\": \"BLOCK_NONE\"}, // اختياري\n ]\n};\n\n\n\n\n try {\n final response = await http.post(\n url,\n headers: {'Content-Type': 'application/json'},\n body: jsonEncode(body),\n );\n\n if (response.statusCode == 200) {\n var data = jsonDecode(response.body);\n\n final reply = _extractGeminiText(data);\n logSuccess(\"Gemini reply = ${reply.substring(0, reply.length.clamp(0, 500))}\");\n\n // 4) أضِف رد النموذج\n messages.add(ChatMessage(text: reply, isUser: false));\n\n // 5) تقدّم للخطوة التالية\n click = (step < 15) ? step + 1 : 15;\n\n // 6) صيانة الحالة\n isLoading = false;\n\n // حفظ الجلسة\n await _saveCurrentSession();\n notifyListeners();\n } else {\n final err = \"خطأ: ${response.statusCode} → ${response.body}\";\n messages.add(ChatMessage(text: err, isUser: false));\n isLoading = false;\n await _saveCurrentSession();\n notifyListeners();\n logError(\"Gemini Error : ${response.statusCode} - ${response.body}\");\n throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n }\n } catch (e, st) {\n isLoading = false;\n messages.add(ChatMessage(text: \"استثناء: $e\", isUser: false));\n await _saveCurrentSession();\n notifyListeners();\n logError(\"Exception: $e\\n$st\");\n rethrow;\n }\n}\n\n // Future<void> askGemini(String intent) async {\n // messages.add(ChatMessage(text: intent, isUser: true));\n \n \n // // finalText = intent + (prompts1[click]! + prompts2[click]!);\n \n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse(\n // 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey',\n // );\n\n // final response = await http.post(\n // url,\n // headers: {'Content-Type': 'application/json'},\n\n // body: jsonEncode({\n // \"contents\": [\n // {\n // \"parts\": [\n // {\"text\": '$intent'}\n // ],\n // },\n // ],\n // }),\n // );\n\n // if (response.statusCode == 200) {\n // var data = jsonDecode(response.body);\n // data['candidates'][0]['content']['parts'][0]['text'] ?? 'No response';\n\n // // final lines = data.split(\"\\n\");\n // logSuccess(\"message = ${data}\");\n\n // // نحتفظ بس السطور اللي تبدي بأرقام\n // messages.add(\n // ChatMessage(\n // text: data['candidates'][0]['content']['parts'][0]['text'].toString(),\n // isUser: false,\n // ),\n // );\n // click++;\n // isLoading = false;\n // intent = '';\n // data = '';\n\n // // حفظ المحادثة تلقائياً\n // await _saveCurrentSession();\n\n // notifyListeners();\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // isLoading = false;\n\n // // حفظ المحادثة حتى لو كان هناك خطأ\n // await _saveCurrentSession();\n\n // notifyListeners();\n // logError(\"message : ${response.statusCode} - ${response.body}\");\n // throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n // }\n // isLoading = false;\n // notifyListeners();\n // }\n\n Future<void> sendLangSmithRun({\n required String name,\n required String runType,\n String? organizationId,\n }) async {\n messages.add(ChatMessage(text: name, isUser: true));\n isLoading = true;\n notifyListeners();\n final apiKey =\n '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'; // تأكد أنه مفتاح LangSmith الصحيح\n final url = Uri.parse('https://api.smith.langchain.com/runs');\n\n final headers = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer $apiKey',\n // أضف السطر التالي إذا كان مطلوباً:\n // 'X-Organization-ID': organizationId,\n };\n\n final body = jsonEncode({\n 'name': name,\n 'run_type': runType,\n // إضافة session_id أو بيانات إضافية حسب الحاجة\n });\n\n final response = await http.post(url, headers: headers, body: body);\n\n if (response.statusCode == 200 || response.statusCode == 201) {\n print('نجحت العملية: ${response.body}');\n messages.add(ChatMessage(text: response.body, isUser: false));\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n logError(\" Error ______ ${response.statusCode} : ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n\n // Future<void> sendMessage(String message) async {\n // messages.add(ChatMessage(text: message, isUser: true));\n // isLoading = true;\n // notifyListeners();\n\n // const apiKey =\n // 'sk-1ba2a293eeab42d8baed484e863f97db';\n // final url = Uri.parse('https://api.deepseek.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"deepseek-chat\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": message},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // logError(\"DeepSeek Error ${response.statusCode}: ${response.body}\");\n // }\n // } catch (e) {\n // messages.add(\n // ChatMessage(text: \"تعذر الاتصال بخدمة DeepSeek. $e\", isUser: false),\n // );\n // logError(\"DeepSeek Exception: $e\");\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "b5dd30d4f5143fbe102f578059a6dd8363a4c84f": {"t": 1785763761.829921, "n": 11223, "h": "f22bd5f089f42ea0", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/Constants/Const.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\nimport 'package:wishcrafted/Models/chat_session.dart';\nimport 'package:wishcrafted/Helper/chat_storage_service.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // إدارة المحادثات\n List<ChatSession> chatSessions = [];\n ChatSession? currentSession;\n\n // تحميل المحادثات عند بدء التطبيق\n Future<void> loadChatSessions() async {\n chatSessions = await ChatStorageService.loadChatSessions();\n final currentSessionId = await ChatStorageService.getCurrentSessionId();\n\n if (currentSessionId != null) {\n currentSession = chatSessions.firstWhere(\n (session) => session.id == currentSessionId,\n orElse: () => _createNewSession(),\n );\n messages = List.from(currentSession!.messages);\n } else {\n _createNewSession();\n }\n\n notifyListeners();\n }\n\n // إنشاء محادثة جديدة\n ChatSession _createNewSession() {\n final now = DateTime.now();\n final newSession = ChatSession(\n id: 'chat_${now.millisecondsSinceEpoch}',\n title: 'محادثة جديدة',\n createdAt: now,\n lastUpdated: now,\n messages: [],\n );\n\n currentSession = newSession;\n messages = [];\n return newSession;\n }\n\n // بدء محادثة جديدة\n void startNewChat() {\n _createNewSession();\n notifyListeners();\n }\n\n // تحديد محادثة موجودة\n void selectChatSession(ChatSession session) {\n currentSession = session;\n messages = List.from(session.messages);\n ChatStorageService.setCurrentSessionId(session.id);\n notifyListeners();\n }\n\n // حفظ المحادثة الحالية\n Future<void> _saveCurrentSession() async {\n if (currentSession != null && messages.isNotEmpty) {\n final updatedSession = currentSession!.copyWith(\n title: ChatStorageService.generateChatTitle(messages),\n lastUpdated: DateTime.now(),\n messages: messages,\n );\n\n await ChatStorageService.saveChatSession(updatedSession);\n\n // تحديث المحادثة في القائمة\n final existingIndex = chatSessions.indexWhere(\n (s) => s.id == updatedSession.id,\n );\n if (existingIndex != -1) {\n chatSessions[existingIndex] = updatedSession;\n } else {\n chatSessions.add(updatedSession);\n }\n\n currentSession = updatedSession;\n notifyListeners();\n }\n }\n\n // حذف محادثة\n Future<void> deleteChatSession(String sessionId) async {\n await ChatStorageService.deleteChatSession(sessionId);\n chatSessions.removeWhere((session) => session.id == sessionId);\n\n if (currentSession?.id == sessionId) {\n startNewChat();\n }\n\n notifyListeners();\n }\n\n // مسح جميع المحادثات\n Future<void> clearAllChatSessions() async {\n await ChatStorageService.clearAllSessions();\n chatSessions.clear();\n startNewChat();\n notifyListeners();\n } // تحديث النية المختارة\n\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n String apiKey = \"AIzaSyCJ6zpgO4xwm3zLHnbuByjX11shBLwH6eo\";\n List points = [];\n int click = 1;\n late String finalText;\n Future<void> askGemini(String intent) async {\n messages.add(ChatMessage(text: intent, isUser: true));\n // if(click == 0) {\n finalText = intent + (prompts1[click]! + prompts2[click]!);\n // }\n // finalText = prompt;\n logSuccess(\"message == ${prompts1[click]! + prompts2[click]!}\");\n\n isLoading = true;\n notifyListeners();\n final url = Uri.parse(\n 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey',\n );\n\n final response = await http.post(\n url,\n headers: {'Content-Type': 'application/json'},\n\n body: jsonEncode({\n \"contents\": [\n {\n \"parts\": [\n {\"text\": '$finalText'},\n ],\n },\n ],\n }),\n );\n\n if (response.statusCode == 200) {\n var data = jsonDecode(response.body);\n data['candidates'][0]['content']['parts'][0]['text'] ?? 'No response';\n\n // final lines = data.split(\"\\n\");\n logSuccess(\"message = ${data}\");\n\n // نحتفظ بس السطور اللي تبدي بأرقام\n messages.add(\n ChatMessage(\n text: data['candidates'][0]['content']['parts'][0]['text'].toString(),\n isUser: false,\n ),\n );\n click++;\n isLoading = false;\n intent = '';\n data = '';\n\n // حفظ المحادثة تلقائياً\n await _saveCurrentSession();\n\n notifyListeners();\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n isLoading = false;\n\n // حفظ المحادثة حتى لو كان هناك خطأ\n await _saveCurrentSession();\n\n notifyListeners();\n logError(\"message : ${response.statusCode} - ${response.body}\");\n throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n }\n isLoading = false;\n notifyListeners();\n }\n\n Future<void> sendLangSmithRun({\n required String name,\n required String runType,\n String? organizationId,\n }) async {\n messages.add(ChatMessage(text: name, isUser: true));\n isLoading = true;\n notifyListeners();\n final apiKey =\n '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'; // تأكد أنه مفتاح LangSmith الصحيح\n final url = Uri.parse('https://api.smith.langchain.com/runs');\n\n final headers = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer $apiKey',\n // أضف السطر التالي إذا كان مطلوباً:\n // 'X-Organization-ID': organizationId,\n };\n\n final body = jsonEncode({\n 'name': name,\n 'run_type': runType,\n // إضافة session_id أو بيانات إضافية حسب الحاجة\n });\n\n final response = await http.post(url, headers: headers, body: body);\n\n if (response.statusCode == 200 || response.statusCode == 201) {\n print('نجحت العملية: ${response.body}');\n messages.add(ChatMessage(text: response.body, isUser: false));\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n logError(\" Error ______ ${response.statusCode} : ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n\n // Future<void> sendMessage(String message) async {\n // messages.add(ChatMessage(text: message, isUser: true));\n // isLoading = true;\n // notifyListeners();\n\n // const apiKey =\n // 'sk-1ba2a293eeab42d8baed484e863f97db';\n // final url = Uri.parse('https://api.deepseek.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"deepseek-chat\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": message},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // logError(\"DeepSeek Error ${response.statusCode}: ${response.body}\");\n // }\n // } catch (e) {\n // messages.add(\n // ChatMessage(text: \"تعذر الاتصال بخدمة DeepSeek. $e\", isUser: false),\n // );\n // logError(\"DeepSeek Exception: $e\");\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "892fba6be81fd054b12cf456be44be6bb6730d31": {"t": 1785763766.8374429, "n": 8442, "h": "02bc9a2d2867e2a2", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/Constants/Const.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // تحديث النية المختارة\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n String apiKey = \"AIzaSyCJ6zpgO4xwm3zLHnbuByjX11shBLwH6eo\";\n List points = [];\n int click = 1;\n late String finalText;\n Future<void> askGemini(String intent) async {\n messages.add(ChatMessage(text: intent, isUser: true));\n // if(click == 0) {\n finalText = intent + (prompts1[click]! + prompts2[click]!);\n // }\n // finalText = prompt;\n logSuccess(\"message == ${prompts1[click]! + prompts2[click]!}\");\n\n isLoading = true;\n notifyListeners();\n final url = Uri.parse(\n 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey',\n );\n\n final response = await http.post(\n url,\n headers: {'Content-Type': 'application/json'},\n\n body: jsonEncode({\n \"contents\": [\n {\n \"parts\": [\n {\n \"text\": '$finalText',\n \n },\n ],\n },\n ],\n }),\n );\n\n if (response.statusCode == 200) {\n var data = jsonDecode(response.body);\n data['candidates'][0]['content']['parts'][0]['text'] ?? 'No response';\n\n // final lines = data.split(\"\\n\");\n logSuccess(\"message = ${data}\");\n\n // نحتفظ بس السطور اللي تبدي بأرقام\n messages.add(\n ChatMessage(\n text: data['candidates'][0]['content']['parts'][0]['text'].toString(),\n isUser: false,\n ),\n );\n click++;\n isLoading = false;\n intent = '';\n data = '';\n notifyListeners();\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n isLoading = false;\n notifyListeners();\n logError(\"message : ${response.statusCode} - ${response.body}\");\n throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n }\n isLoading = false;\n notifyListeners();\n }\n\n Future<void> sendLangSmithRun({\n required String name,\n required String runType,\n String? organizationId,\n }) async {\n messages.add(ChatMessage(text: name, isUser: true));\n isLoading = true;\n notifyListeners();\n final apiKey =\n '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'; // تأكد أنه مفتاح LangSmith الصحيح\n final url = Uri.parse('https://api.smith.langchain.com/runs');\n\n final headers = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer $apiKey',\n // أضف السطر التالي إذا كان مطلوباً:\n // 'X-Organization-ID': organizationId,\n };\n\n final body = jsonEncode({\n 'name': name,\n 'run_type': runType,\n // إضافة session_id أو بيانات إضافية حسب الحاجة\n });\n\n final response = await http.post(url, headers: headers, body: body);\n\n if (response.statusCode == 200 || response.statusCode == 201) {\n print('نجحت العملية: ${response.body}');\n messages.add(ChatMessage(text: response.body, isUser: false));\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n logError(\" Error ______ ${response.statusCode} : ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n\n // Future<void> sendMessage(String message) async {\n // messages.add(ChatMessage(text: message, isUser: true));\n // isLoading = true;\n // notifyListeners();\n\n // const apiKey =\n // 'sk-1ba2a293eeab42d8baed484e863f97db';\n // final url = Uri.parse('https://api.deepseek.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"deepseek-chat\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": message},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // logError(\"DeepSeek Error ${response.statusCode}: ${response.body}\");\n // }\n // } catch (e) {\n // messages.add(\n // ChatMessage(text: \"تعذر الاتصال بخدمة DeepSeek. $e\", isUser: false),\n // );\n // logError(\"DeepSeek Exception: $e\");\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "fa6e8fa36f0b6f072587f96d7274a4c33f985d2e": {"t": 1785763768.5722098, "n": 8625, "h": "42002eb780c589a3", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/Constants/Const.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // تحديث النية المختارة\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n String apiKey = \"AIzaSyCJ6zpgO4xwm3zLHnbuByjX11shBLwH6eo\";\n List points = [];\n int click = 1;\n late String finalText;\n Future<void> askGemini(String intent) async {\n messages.add(ChatMessage(text: intent, isUser: true));\n // if(click == 0) {\n finalText = intent + (prompts1[click]! + prompts2[click]!);\n // }\n // finalText = prompt;\n logSuccess(\"message == ${prompts1[click]! + prompts2[click]!}\");\n\n isLoading = true;\n notifyListeners();\n final url = Uri.parse(\n 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey',\n );\n\n final response = await http.post(\n url,\n headers: {'Content-Type': 'application/json'},\n\n body: jsonEncode({\n \"contents\": [\n {\n \"parts\": [\n {\n \"text\": '$finalText',\n // \"text\":\n // '$prompt \\n اعطي اهم 5 متعلقات بهذه النية بما لا يزيد عن خمسين كلمة تقود المستخدم لاتخاذ القرار المنطقي لحفظ الوقت والمال والجهد وتقليل الالم والندم',\n },\n ],\n },\n ],\n }),\n );\n\n if (response.statusCode == 200) {\n var data = jsonDecode(response.body);\n data['candidates'][0]['content']['parts'][0]['text'] ?? 'No response';\n\n // final lines = data.split(\"\\n\");\n logSuccess(\"message = ${data}\");\n\n // نحتفظ بس السطور اللي تبدي بأرقام\n messages.add(\n ChatMessage(\n text: data['candidates'][0]['content']['parts'][0]['text'].toString(),\n isUser: false,\n ),\n );\n click++;\n isLoading = false;\n intent = '';\n data = '';\n notifyListeners();\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n isLoading = false;\n notifyListeners();\n logError(\"message : ${response.statusCode} - ${response.body}\");\n throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n }\n isLoading = false;\n notifyListeners();\n }\n\n Future<void> sendLangSmithRun({\n required String name,\n required String runType,\n String? organizationId,\n }) async {\n messages.add(ChatMessage(text: name, isUser: true));\n isLoading = true;\n notifyListeners();\n final apiKey =\n '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'; // تأكد أنه مفتاح LangSmith الصحيح\n final url = Uri.parse('https://api.smith.langchain.com/runs');\n\n final headers = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer $apiKey',\n // أضف السطر التالي إذا كان مطلوباً:\n // 'X-Organization-ID': organizationId,\n };\n\n final body = jsonEncode({\n 'name': name,\n 'run_type': runType,\n // إضافة session_id أو بيانات إضافية حسب الحاجة\n });\n\n final response = await http.post(url, headers: headers, body: body);\n\n if (response.statusCode == 200 || response.statusCode == 201) {\n print('نجحت العملية: ${response.body}');\n messages.add(ChatMessage(text: response.body, isUser: false));\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n logError(\" Error ______ ${response.statusCode} : ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n\n // Future<void> sendMessage(String message) async {\n // messages.add(ChatMessage(text: message, isUser: true));\n // isLoading = true;\n // notifyListeners();\n\n // const apiKey =\n // 'sk-1ba2a293eeab42d8baed484e863f97db';\n // final url = Uri.parse('https://api.deepseek.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"deepseek-chat\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": message},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // logError(\"DeepSeek Error ${response.statusCode}: ${response.body}\");\n // }\n // } catch (e) {\n // messages.add(\n // ChatMessage(text: \"تعذر الاتصال بخدمة DeepSeek. $e\", isUser: false),\n // );\n // logError(\"DeepSeek Exception: $e\");\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "a62e063bd0dd73462b05a227037f38f5ffe50da2": {"t": 1785763770.556658, "n": 8520, "h": "620970c861e11f36", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/Constants/Const.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // تحديث النية المختارة\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n String apiKey = \"AIzaSyCJ6zpgO4xwm3zLHnbuByjX11shBLwH6eo\";\n List points = [];\n int click = 0;\n late String finalText;\n Future<void> askGemini(String prompt) async {\n messages.add(ChatMessage(text: prompt, isUser: true));\n if(click == 0) {\n finalText = prompt + newprompt;\n }\n finalText = prompt;\n \n isLoading = true;\n notifyListeners();\n final url = Uri.parse(\n 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey',\n );\n\n final response = await http.post(\n url,\n headers: {'Content-Type': 'application/json'},\n\n body: jsonEncode({\n \"contents\": [\n {\n \"parts\": [\n {\n \"text\": '$finalText',\n // \"text\":\n // '$prompt \\n اعطي اهم 5 متعلقات بهذه النية بما لا يزيد عن خمسين كلمة تقود المستخدم لاتخاذ القرار المنطقي لحفظ الوقت والمال والجهد وتقليل الالم والندم',\n },\n ],\n },\n ],\n }),\n );\n\n if (response.statusCode == 200) {\n var data = jsonDecode(response.body);\n data['candidates'][0]['content']['parts'][0]['text'] ?? 'No response';\n\n // final lines = data.split(\"\\n\");\n logSuccess(\"message = ${data}\");\n\n // نحتفظ بس السطور اللي تبدي بأرقام\n messages.add(\n ChatMessage(\n text: data['candidates'][0]['content']['parts'][0]['text'].toString(),\n isUser: false,\n ),\n );\n click++;\n isLoading = false;\n prompt = '';\n data = '';\n notifyListeners();\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n isLoading = false;\n notifyListeners();\n logError(\"message : ${response.statusCode} - ${response.body}\");\n throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n }\n isLoading = false;\n notifyListeners();\n }\n\n Future<void> sendLangSmithRun({\n required String name,\n required String runType,\n String? organizationId,\n }) async {\n messages.add(ChatMessage(text: name, isUser: true));\n isLoading = true;\n notifyListeners();\n final apiKey =\n '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'; // تأكد أنه مفتاح LangSmith الصحيح\n final url = Uri.parse('https://api.smith.langchain.com/runs');\n\n final headers = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer $apiKey',\n // أضف السطر التالي إذا كان مطلوباً:\n // 'X-Organization-ID': organizationId,\n };\n\n final body = jsonEncode({\n 'name': name,\n 'run_type': runType,\n // إضافة session_id أو بيانات إضافية حسب الحاجة\n });\n\n final response = await http.post(url, headers: headers, body: body);\n\n if (response.statusCode == 200 || response.statusCode == 201) {\n print('نجحت العملية: ${response.body}');\n messages.add(ChatMessage(text: response.body, isUser: false));\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n logError(\" Error ______ ${response.statusCode} : ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n\n // Future<void> sendMessage(String message) async {\n // messages.add(ChatMessage(text: message, isUser: true));\n // isLoading = true;\n // notifyListeners();\n\n // const apiKey =\n // 'sk-1ba2a293eeab42d8baed484e863f97db';\n // final url = Uri.parse('https://api.deepseek.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"deepseek-chat\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": message},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // logError(\"DeepSeek Error ${response.statusCode}: ${response.body}\");\n // }\n // } catch (e) {\n // messages.add(\n // ChatMessage(text: \"تعذر الاتصال بخدمة DeepSeek. $e\", isUser: false),\n // );\n // logError(\"DeepSeek Exception: $e\");\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "0ebcb5c999b238c87adf9ef98505d4abbbd84460": {"t": 1785763772.015747, "n": 8465, "h": "823f8d72586838ca", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/LogApp/Const/Const.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // تحديث النية المختارة\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n String apiKey = \"AIzaSyCJ6zpgO4xwm3zLHnbuByjX11shBLwH6eo\";\n List points = [];\n int click = 0;\n Future<void> askGemini(String prompt) async {\n messages.add(ChatMessage(text: prompt, isUser: true));\n String finalText = prompt + deepseekPrompts[click];\n isLoading = true;\n notifyListeners();\n final url = Uri.parse(\n 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey',\n );\n\n final response = await http.post(\n url,\n headers: {'Content-Type': 'application/json'},\n\n body: jsonEncode({\n \"contents\": [\n {\n \"parts\": [\n {\n \"text\": '$finalText',\n // \"text\":\n // '$prompt \\n اعطي اهم 5 متعلقات بهذه النية بما لا يزيد عن خمسين كلمة تقود المستخدم لاتخاذ القرار المنطقي لحفظ الوقت والمال والجهد وتقليل الالم والندم',\n },\n ],\n },\n ],\n }),\n );\n\n if (response.statusCode == 200) {\n var data = jsonDecode(response.body);\n data['candidates'][0]['content']['parts'][0]['text'] ?? 'No response';\n\n // final lines = data.split(\"\\n\");\n logSuccess(\"message = ${data}\");\n\n // نحتفظ بس السطور اللي تبدي بأرقام\n messages.add(\n ChatMessage(\n text: data['candidates'][0]['content']['parts'][0]['text'].toString(),\n isUser: false,\n ),\n );\n click++;\n isLoading = false;\n prompt = '';\n data = '';\n notifyListeners();\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n isLoading = false;\n notifyListeners();\n logError(\"message : ${response.statusCode} - ${response.body}\");\n throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n }\n isLoading = false;\n notifyListeners();\n }\n\n Future<void> sendLangSmithRun({\n required String name,\n required String runType,\n String? organizationId,\n }) async {\n messages.add(ChatMessage(text: name, isUser: true));\n isLoading = true;\n notifyListeners();\n final apiKey =\n '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'; // تأكد أنه مفتاح LangSmith الصحيح\n final url = Uri.parse('https://api.smith.langchain.com/runs');\n\n final headers = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer $apiKey',\n // أضف السطر التالي إذا كان مطلوباً:\n // 'X-Organization-ID': organizationId,\n };\n\n final body = jsonEncode({\n 'name': name,\n 'run_type': runType,\n // إضافة session_id أو بيانات إضافية حسب الحاجة\n });\n\n final response = await http.post(url, headers: headers, body: body);\n\n if (response.statusCode == 200 || response.statusCode == 201) {\n print('نجحت العملية: ${response.body}');\n messages.add(ChatMessage(text: response.body, isUser: false));\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n logError(\" Error ______ ${response.statusCode} : ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n\n // Future<void> sendMessage(String message) async {\n // messages.add(ChatMessage(text: message, isUser: true));\n // isLoading = true;\n // notifyListeners();\n\n // const apiKey =\n // 'sk-1ba2a293eeab42d8baed484e863f97db';\n // final url = Uri.parse('https://api.deepseek.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"deepseek-chat\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": message},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // logError(\"DeepSeek Error ${response.statusCode}: ${response.body}\");\n // }\n // } catch (e) {\n // messages.add(\n // ChatMessage(text: \"تعذر الاتصال بخدمة DeepSeek. $e\", isUser: false),\n // );\n // logError(\"DeepSeek Exception: $e\");\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "0a77c033be2d2d9153a1d17358d8190d3d36cdd2": {"t": 1785763773.8770566, "n": 8272, "h": "4c67fb0dcb04a112", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // تحديث النية المختارة\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n String apiKey = \"AIzaSyCJ6zpgO4xwm3zLHnbuByjX11shBLwH6eo\";\n List points = [];\n Future<void> askGemini(String prompt) async {\n messages.add(ChatMessage(text: prompt, isUser: true));\n isLoading = true;\n notifyListeners();\n final url = Uri.parse(\n 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey',\n );\n\n final response = await http.post(\n url,\n headers: {'Content-Type': 'application/json'},\n\n body: jsonEncode({\n \"contents\": [\n {\n \"parts\": [\n {\n \"text\":\n '$prompt \\n اعطي اهم 5 متعلقات بهذه النية بما لا يزيد عن خمسين كلمة تقود المستخدم لاتخاذ القرار المنطقي لحفظ الوقت والمال والجهد وتقليل الالم والندم',\n },\n ],\n },\n ],\n }),\n );\n\n if (response.statusCode == 200) {\n var data = jsonDecode(response.body);\n data['candidates'][0]['content']['parts'][0]['text'] ?? 'No response';\n\n // final lines = data.split(\"\\n\");\n logSuccess(\"message = ${data}\");\n\n // نحتفظ بس السطور اللي تبدي بأرقام\n messages.add(\n ChatMessage(\n text: data['candidates'][0]['content']['parts'][0]['text'].toString(),\n isUser: false,\n ),\n );\n isLoading = false;\n prompt = '';\n data = '';\n notifyListeners();\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n isLoading = false;\n notifyListeners();\n logError(\"message : ${response.statusCode} - ${response.body}\");\n throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n }\n isLoading = false;\n notifyListeners();\n }\n\n Future<void> sendLangSmithRun({\n required String name,\n required String runType,\n String? organizationId,\n }) async {\n messages.add(ChatMessage(text: name, isUser: true));\n isLoading = true;\n notifyListeners();\n final apiKey =\n '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'; // تأكد أنه مفتاح LangSmith الصحيح\n final url = Uri.parse('https://api.smith.langchain.com/runs');\n\n final headers = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer $apiKey',\n // أضف السطر التالي إذا كان مطلوباً:\n // 'X-Organization-ID': organizationId,\n };\n\n final body = jsonEncode({\n 'name': name,\n 'run_type': runType,\n // إضافة session_id أو بيانات إضافية حسب الحاجة\n });\n\n final response = await http.post(url, headers: headers, body: body);\n\n if (response.statusCode == 200 || response.statusCode == 201) {\n print('نجحت العملية: ${response.body}');\n messages.add(ChatMessage(text: response.body, isUser: false));\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n logError(\" Error ______ ${response.statusCode} : ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n\n // Future<void> sendMessage(String message) async {\n // messages.add(ChatMessage(text: message, isUser: true));\n // isLoading = true;\n // notifyListeners();\n\n // const apiKey =\n // 'sk-1ba2a293eeab42d8baed484e863f97db';\n // final url = Uri.parse('https://api.deepseek.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"deepseek-chat\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": message},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // logError(\"DeepSeek Error ${response.statusCode}: ${response.body}\");\n // }\n // } catch (e) {\n // messages.add(\n // ChatMessage(text: \"تعذر الاتصال بخدمة DeepSeek. $e\", isUser: false),\n // );\n // logError(\"DeepSeek Exception: $e\");\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "21a1cff8f3ee03e0d778561602979eaa4be7b32c": {"t": 1785763775.7567952, "n": 8622, "h": "bc2f40ded3a92b01", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // تحديث النية المختارة\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n String apiKey = \"AIzaSyCJ6zpgO4xwm3zLHnbuByjX11shBLwH6eo\";\n\n Future<void> askGemini(String prompt) async {\n messages.add(ChatMessage(text: prompt, isUser: true));\n isLoading = true;\n notifyListeners();\n final url = Uri.parse(\n 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey',\n );\n\n final response = await http.post(\n url,\n headers: {'Content-Type': 'application/json'},\n body: jsonEncode({\n \"contents\": [\n {\n \"parts\": [\n {\"text\": prompt},\n ],\n },\n ],\n }),\n );\n\n if (response.statusCode == 200) {\n final data = jsonDecode(response.body);\n\n // final lines = data.split(\"\\n\");\n\n // نحتفظ بس السطور اللي تبدي بأرقام\n\n // النص يرجع عادة بهيكلية nested\n data['candidates'][0]['content']['parts'][0]['text'] ?? 'No response';\n\n final points = data\n .toString()\n .split(\"\\n\")\n .where((line) => line.trim().startsWith(RegExp(r\"[0-9]\")))\n .map((line) {\n // نشيل الرقم والنقطة\n return line.replaceFirst(RegExp(r\"^[0-9]+\\.\\s*\"), \"\").trim();\n })\n .toList();\n logError(\"message : ${points}\");\n for (int i = 0; i < points.length; i++) {\n logSuccess(\"message : ${points[i]} \\n\");\n // messages.add(ChatMessage(text: points[i].toString(), isUser: false));\n }\n // logSuccess(\"_____ $points\");\n // logSuccess(\"___________ $lines\")\n // logSuccess(\"____ $data\");\n // messages.add(ChatMessage(text: data['candidates'][0]['content']['parts'][0]['text'].toString(), isUser: false));\n isLoading = false;\n notifyListeners();\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n isLoading = false;\n notifyListeners();\n logError(\"message : ${response.statusCode} - ${response.body}\");\n throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n }\n isLoading = false;\n notifyListeners();\n }\n\n Future<void> sendLangSmithRun({\n required String name,\n required String runType,\n String? organizationId,\n }) async {\n messages.add(ChatMessage(text: name, isUser: true));\n isLoading = true;\n notifyListeners();\n final apiKey =\n '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'; // تأكد أنه مفتاح LangSmith الصحيح\n final url = Uri.parse('https://api.smith.langchain.com/runs');\n\n final headers = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer $apiKey',\n // أضف السطر التالي إذا كان مطلوباً:\n // 'X-Organization-ID': organizationId,\n };\n\n final body = jsonEncode({\n 'name': name,\n 'run_type': runType,\n // إضافة session_id أو بيانات إضافية حسب الحاجة\n });\n\n final response = await http.post(url, headers: headers, body: body);\n\n if (response.statusCode == 200 || response.statusCode == 201) {\n print('نجحت العملية: ${response.body}');\n messages.add(ChatMessage(text: response.body, isUser: false));\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n logError(\" Error ______ ${response.statusCode} : ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n\n // Future<void> sendMessage(String message) async {\n // messages.add(ChatMessage(text: message, isUser: true));\n // isLoading = true;\n // notifyListeners();\n\n // const apiKey =\n // 'sk-1ba2a293eeab42d8baed484e863f97db';\n // final url = Uri.parse('https://api.deepseek.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"deepseek-chat\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": message},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // logError(\"DeepSeek Error ${response.statusCode}: ${response.body}\");\n // }\n // } catch (e) {\n // messages.add(\n // ChatMessage(text: \"تعذر الاتصال بخدمة DeepSeek. $e\", isUser: false),\n // );\n // logError(\"DeepSeek Exception: $e\");\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "3a10b2f205f75ef9851b33cb42662a3cb627ed8b": {"t": 1785763778.4949708, "n": 7949, "h": "ada3bc0dc4a29713", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // تحديث النية المختارة\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n String apiKey = \"AIzaSyCJ6zpgO4xwm3zLHnbuByjX11shBLwH6eo\";\n\n Future<void> askGemini(String prompt) async {\n messages.add(ChatMessage(text: prompt, isUser: true));\n isLoading = true;\n notifyListeners();\n final url = Uri.parse(\n 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$apiKey',\n );\n\n final response = await http.post(\n url,\n headers: {'Content-Type': 'application/json'},\n body: jsonEncode({\n \"contents\": [\n {\n \"parts\": [\n {\"text\": prompt},\n ],\n },\n ],\n }),\n );\n\n if (response.statusCode == 200) {\n final data = jsonDecode(response.body);\n\n // النص يرجع عادة بهيكلية nested\n data['candidates'][0]['content']['parts'][0]['text'] ??\n 'No response';\n logSuccess(\"____ $data\");\n messages.add(ChatMessage(text: data['candidates'][0]['content']['parts'][0]['text'].toString(), isUser: false));\n isLoading = false;\n notifyListeners();\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n isLoading = false;\n notifyListeners();\n logError(\"message : ${response.statusCode} - ${response.body}\");\n throw Exception('فشل الطلب: ${response.statusCode} - ${response.body}');\n }\n isLoading = false;\n notifyListeners();\n }\n\n Future<void> sendLangSmithRun({\n required String name,\n required String runType,\n String? organizationId,\n }) async {\n messages.add(ChatMessage(text: name, isUser: true));\n isLoading = true;\n notifyListeners();\n final apiKey =\n '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'; // تأكد أنه مفتاح LangSmith الصحيح\n final url = Uri.parse('https://api.smith.langchain.com/runs');\n\n final headers = {\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer $apiKey',\n // أضف السطر التالي إذا كان مطلوباً:\n // 'X-Organization-ID': organizationId,\n };\n\n final body = jsonEncode({\n 'name': name,\n 'run_type': runType,\n // إضافة session_id أو بيانات إضافية حسب الحاجة\n });\n\n final response = await http.post(url, headers: headers, body: body);\n\n if (response.statusCode == 200 || response.statusCode == 201) {\n print('نجحت العملية: ${response.body}');\n messages.add(ChatMessage(text: response.body, isUser: false));\n } else {\n messages.add(\n ChatMessage(\n text: \"خطأ: ${response.statusCode} → ${response.body}\",\n isUser: false,\n ),\n );\n logError(\" Error ______ ${response.statusCode} : ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n\n // Future<void> sendMessage(String message) async {\n // messages.add(ChatMessage(text: message, isUser: true));\n // isLoading = true;\n // notifyListeners();\n\n // const apiKey =\n // 'sk-1ba2a293eeab42d8baed484e863f97db';\n // final url = Uri.parse('https://api.deepseek.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"deepseek-chat\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": message},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // messages.add(\n // ChatMessage(\n // text: \"خطأ: ${response.statusCode} → ${response.body}\",\n // isUser: false,\n // ),\n // );\n // logError(\"DeepSeek Error ${response.statusCode}: ${response.body}\");\n // }\n // } catch (e) {\n // messages.add(\n // ChatMessage(text: \"تعذر الاتصال بخدمة DeepSeek. $e\", isUser: false),\n // );\n // logError(\"DeepSeek Exception: $e\");\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "a9f102b123e4a4a543f7f13e31c083e421f9bc49": {"t": 1785763781.0393019, "n": 4594, "h": "afc7fa7bd09e5178", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // تحديث النية المختارة\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n Future<void> sendMessage(String message) async {\n messages.add(ChatMessage(text: message, isUser: true));\n isLoading = true;\n notifyListeners();\n final url = Uri.parse(\n \"https://api-inference.huggingface.co/models/gpt2\",\n );\n final response = await http.post(\n url,\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: jsonEncode({\"inputs\": message}),\n );\n\n if (response.statusCode == 200) {\n final data = jsonDecode(response.body);\n messages.add(ChatMessage(text: data[0]['generated_text'], isUser: false));\n isLoading = false;\n } else {\n messages.add(\n ChatMessage(\n text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n isUser: false,\n ),\n );\n isLoading = false;\n logError(\"Error ${response.statusCode}: ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n// final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}, "27a6a646ccfc35d1cc524c92ee7ecd37589b5079": {"t": 1785763782.9258463, "n": 4888, "h": "d387efd5f8697f03", "c": "import 'package:flutter/material.dart';\nimport 'package:wishcrafted/Helper/LogApp/LogApp.dart';\nimport 'package:wishcrafted/Models/dasshboardModel/dasshboardModel.dart';\nimport 'dart:convert';\nimport 'package:http/http.dart' as http;\nimport 'package:wishcrafted/Models/chat_message.dart';\n\nclass DashboardController extends ChangeNotifier {\n List<DashboardModel> intents = [\n DashboardModel(\n title: \"ترفيه وتجارب غامرة\",\n description:\n \"الهروب من الواقع، مكافحة الوحدة، بناء هويات رقمية، الشعور بالحضور والانتماء\",\n ),\n DashboardModel(\n title: \"تعليم وتطوير مستمر\",\n description:\n \"الإنجاز السريع، مواكبة السوق، تجاوز التعليم التقليدي، البحث عن الإرشاد\",\n ),\n DashboardModel(\n title: \"صحة وعافية شاملة\",\n description:\n \"السيطرة على الصحة، تحقيق التوازن الشامل، السيادة على البيانات الصحية، الدعم الآمن\",\n ),\n DashboardModel(\n title: \"تجارة واقتصاد قيمي\",\n description:\n \"التعبير عن الهوية، أثر الشراء، الأصالة والشفافية، الانتماء لمجتمع قيمي\",\n ),\n DashboardModel(\n title: \"إنتاجية وإبداع معزز\",\n description:\n \"كسر الحصار الإبداعي، تحويل الأفكار لواقع، الاستقلال المالي، المساهمة في بناء الويب\",\n ),\n DashboardModel(\n title: \"خدمات يومية متقدمة\",\n description:\n \"الأمان، الوقت مقابل المال، التغلب على البيروقراطية، بناء سجل مالي وسمعة ذكية\",\n ),\n DashboardModel(\n title: \"تواصل اجتماعي هادف\",\n description:\n \"تأكيد الهوية، كسر الوحدة، نشر القيم، الانخراط بحركات اجتماعية فعالة\",\n ),\n DashboardModel(\n title: \"تجارب مستقبلية/تخطيط\",\n description:\n \"تقليل القلق من المستقبل، التحكم في المصير، البحث عن نسخة أفضل من الذات\",\n ),\n DashboardModel(\n title: \"اكتشاف ذاتي/استكشاف\",\n description:\n \"الحاجة للإلهام، اختبار حدود الشخصية، استكشاف قيم أو أنماط حياة جديدة\",\n ),\n DashboardModel(\n title: \"مبادرات/مشاريع جماعية\",\n description:\n \"الرغبة في التأثير، التنظيم الذاتي، القيادة، تطوير الحراك المجتمعي\",\n ),\n ];\n\n DashboardModel? selectedIntent;\n\n // ChatGPT logic\n List<ChatMessage> messages = [];\n bool isLoading = false;\n\n // تحديث النية المختارة\n void setSelectedIntent(DashboardModel? intent) {\n selectedIntent = intent;\n logInfo(\"تم تحديث النية المختارة: ${intent?.description}\");\n notifyListeners();\n }\n\n Future<void> sendMessage(String message) async {\n messages.add(ChatMessage(text: message, isUser: true));\n isLoading = true;\n notifyListeners();\n final url = Uri.parse(\n \"https://api-inference.huggingface.co/models/gpt2\",\n );\n final response = await http.post(\n url,\n headers: {\n \"Authorization\": \"Bearer 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\",\n \"Content-Type\": \"application/json\",\n },\n body: jsonEncode({\"inputs\": message}),\n );\n\n if (response.statusCode == 200) {\n final data = jsonDecode(response.body);\n messages.add(ChatMessage(text: data[0]['generated_text'], isUser: false));\n isLoading = false;\n } else {\n messages.add(\n ChatMessage(\n text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n isUser: false,\n ),\n );\n isLoading = false;\n logError(\"Error ${response.statusCode}: ${response.body}\");\n }\n isLoading = false;\n notifyListeners();\n }\n // Future<void> sendMessage(String prompt) async {\n // messages.add(ChatMessage(text: prompt, isUser: true));\n // isLoading = true;\n // notifyListeners();\n // final apiKey =\n // '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'; // ضع مفتاحك هنا\n // final url = Uri.parse('https://api.openai.com/v1/chat/completions');\n // final headers = {\n // 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer $apiKey',\n // };\n // final body = jsonEncode({\n // \"model\": \"gpt-3.5-turbo\",\n // \"messages\": [\n // {\"role\": \"user\", \"content\": prompt},\n // ],\n // });\n\n // try {\n // final response = await http.post(url, headers: headers, body: body);\n // if (response.statusCode == 200) {\n // final data = jsonDecode(response.body);\n // final reply = data['choices'][0]['message']['content'];\n // messages.add(ChatMessage(text: reply, isUser: false));\n // } else {\n // logError(\" ${response.statusCode}\");\n // messages.add(\n // ChatMessage(\n // text: \"حدث خطأ في الاتصال بالذكاء الاصطناعي.\",\n // isUser: true,\n // ),\n // );\n // }\n // } catch (e) {\n // logError(\"____ ${e} ____\");\n // messages.add(ChatMessage(text: \"تعذر الاتصال بالخادم.\", isUser: false));\n // }\n\n // isLoading = false;\n // notifyListeners();\n // }\n}\n"}}}}