From e8163fe26549df3b90c368363cd2054719daea75 Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Sun, 20 Sep 2026 16:38:51 +0300 Subject: [PATCH] Update Saqel Platform: 2026-09-20 16:38:51 --- .../lib/data/models/error_notebook_model.dart | 5 + .../notebook/smart_error_notebook_screen.dart | 121 +- .../logic/cubits/teacher_studio_cubit.dart | 14 + .../tabs/teacher_studio_upload_tab.dart | 23 + .../Controllers/ErrorNotebookController.php | 47 +- backend/app/Views/LandingPage.php | 716 +---- backend/public/landing/index.html | 165 +- docs/MEDIUM_EXECUTION_TASKS.md | 34 +- docs/PLATFORM_EXECUTION_LEDGER.md | 214 ++ h.html | 455 ++++ index.html | 2348 +---------------- 11 files changed, 1140 insertions(+), 3002 deletions(-) create mode 100644 docs/PLATFORM_EXECUTION_LEDGER.md create mode 100644 h.html diff --git a/apps/student_app/lib/data/models/error_notebook_model.dart b/apps/student_app/lib/data/models/error_notebook_model.dart index 89d81f0..a16aa16 100644 --- a/apps/student_app/lib/data/models/error_notebook_model.dart +++ b/apps/student_app/lib/data/models/error_notebook_model.dart @@ -7,6 +7,7 @@ import 'package:flutter/material.dart'; class ErrorNotebookSummary { final int totalErrors; final int masteredCount; + final int inRemediationCount; final int pendingCount; final double masteryPercentage; final Map bySubject; @@ -14,6 +15,7 @@ class ErrorNotebookSummary { ErrorNotebookSummary({ required this.totalErrors, required this.masteredCount, + this.inRemediationCount = 0, required this.pendingCount, required this.masteryPercentage, required this.bySubject, @@ -31,6 +33,7 @@ class ErrorNotebookSummary { return ErrorNotebookSummary( totalErrors: (json['total_errors'] as num?)?.toInt() ?? 0, masteredCount: (json['mastered_count'] as num?)?.toInt() ?? 0, + inRemediationCount: (json['in_remediation_count'] as num?)?.toInt() ?? 0, pendingCount: (json['pending_count'] as num?)?.toInt() ?? 0, masteryPercentage: (json['mastery_percentage'] as num?)?.toDouble() ?? 0.0, bySubject: bySub, @@ -74,6 +77,8 @@ class ErrorNotebookItem { }); bool get isMastered => status == 'mastered'; + bool get isInRemediation => status == 'in_remediation'; + bool get isPending => status == 'pending_remediation'; String get categoryArabicName { switch (errorCategory) { diff --git a/apps/student_app/lib/presentation/screens/notebook/smart_error_notebook_screen.dart b/apps/student_app/lib/presentation/screens/notebook/smart_error_notebook_screen.dart index 1dabf47..dbb09f4 100644 --- a/apps/student_app/lib/presentation/screens/notebook/smart_error_notebook_screen.dart +++ b/apps/student_app/lib/presentation/screens/notebook/smart_error_notebook_screen.dart @@ -76,33 +76,7 @@ class _SmartErrorNotebookScreenState extends State { errorItem: errorItem, repository: _repository, onRemediationCompleted: () { - setState(() { - // Optimistically update local item - final idx = _items.indexWhere((it) => it.uuid == errorItem.uuid); - if (idx != -1) { - _items[idx] = _items[idx].copyWith( - status: 'mastered', - masteredAt: 'الآن', - remediationAttemptsCount: _items[idx].remediationAttemptsCount + 1, - ); - } - // Update summary - if (_summary != null) { - final newMastered = _summary!.masteredCount + 1; - final newPending = (_summary!.pendingCount - 1).clamp(0, 999); - final newRate = _summary!.totalErrors > 0 - ? (newMastered / _summary!.totalErrors) * 100 - : 100.0; - - _summary = ErrorNotebookSummary( - totalErrors: _summary!.totalErrors, - masteredCount: newMastered, - pendingCount: newPending, - masteryPercentage: newRate, - bySubject: _summary!.bySubject, - ); - } - }); + _loadNotebookData(); }, ), ); @@ -286,14 +260,21 @@ class _SmartErrorNotebookScreenState extends State { color: const Color(0xFF94A3B8), icon: CupertinoIcons.scope, ), - const SizedBox(width: 8), + const SizedBox(width: 6), _metricBox( - title: 'بحاجة إلى علاج', + title: 'بحاجة لعلاج', value: '${summary.pendingCount}', color: const Color(0xFFEF4444), icon: CupertinoIcons.exclamationmark_triangle_fill, ), - const SizedBox(width: 8), + const SizedBox(width: 6), + _metricBox( + title: 'قيد التثبيت 🌱', + value: '${summary.inRemediationCount}', + color: const Color(0xFFF59E0B), + icon: CupertinoIcons.arrow_2_circlepath_circle_fill, + ), + const SizedBox(width: 6), _metricBox( title: 'تم الإتقان 🏆', value: '${summary.masteredCount}', @@ -315,7 +296,7 @@ class _SmartErrorNotebookScreenState extends State { }) { return Expanded( child: Container( - padding: const EdgeInsets.symmetric(vertical: 10, horizontal: 8), + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 4), decoration: BoxDecoration( color: const Color(0xFF0B111E), borderRadius: BorderRadius.circular(10), @@ -323,12 +304,12 @@ class _SmartErrorNotebookScreenState extends State { ), child: Column( children: [ - Icon(icon, size: 16, color: color), + Icon(icon, size: 15, color: color), const SizedBox(height: 4), Text( value, style: TextStyle( - fontSize: 16, + fontSize: 15, fontWeight: FontWeight.w900, color: color, ), @@ -336,8 +317,10 @@ class _SmartErrorNotebookScreenState extends State { const SizedBox(height: 2), Text( title, - style: const TextStyle(fontSize: 10.5, color: Color(0xFF64748B)), + style: const TextStyle(fontSize: 10, color: Color(0xFF64748B)), textAlign: TextAlign.center, + maxLines: 1, + overflow: TextOverflow.ellipsis, ), ], ), @@ -346,20 +329,28 @@ class _SmartErrorNotebookScreenState extends State { } Widget _buildStatusTabs() { - return Row( - children: [ - _statusFilterButton('all', 'جميع الأخطاء (${_items.length})'), - const SizedBox(width: 8), - _statusFilterButton( - 'pending_remediation', - 'بحاجة لعلاج (${_items.where((e) => !e.isMastered).length})', - ), - const SizedBox(width: 8), - _statusFilterButton( - 'mastered', - 'تم إتقانها (${_items.where((e) => e.isMastered).length})', - ), - ], + return SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: [ + _statusFilterButton('all', 'جميع الفجوات (${_items.length})'), + const SizedBox(width: 8), + _statusFilterButton( + 'pending_remediation', + 'بحاجة لعلاج (${_items.where((e) => e.isPending).length})', + ), + const SizedBox(width: 8), + _statusFilterButton( + 'in_remediation', + 'قيد التثبيت 🌱 (${_items.where((e) => e.isInRemediation).length})', + ), + const SizedBox(width: 8), + _statusFilterButton( + 'mastered', + 'تم إتقانها 🏆 (${_items.where((e) => e.isMastered).length})', + ), + ], + ), ); } @@ -474,8 +465,11 @@ class _SmartErrorNotebookScreenState extends State { borderRadius: BorderRadius.circular(16), border: Border.all( color: item.isMastered - ? const Color(0xFF10B981).withOpacity(0.3) - : const Color(0xFFEF4444).withOpacity(0.3), + ? const Color(0xFF10B981).withOpacity(0.35) + : (item.isInRemediation + ? const Color(0xFFF59E0B).withOpacity(0.4) + : const Color(0xFFEF4444).withOpacity(0.3)), + width: item.isInRemediation ? 1.5 : 1.0, ), ), child: Column( @@ -654,13 +648,22 @@ class _SmartErrorNotebookScreenState extends State { ) : ElevatedButton.icon( onPressed: () => _startRemediation(item), - icon: const Icon(CupertinoIcons.bolt_horizontal_circle_fill, size: 17), - label: const Text( - 'بدء المسار العلاجي لسد هذه الفجوة (3 أسئلة تفريدية) 🚀', - style: TextStyle(fontSize: 12.5, fontWeight: FontWeight.w800), + icon: Icon( + item.isInRemediation + ? CupertinoIcons.arrow_2_circlepath_circle_fill + : CupertinoIcons.bolt_horizontal_circle_fill, + size: 17, + ), + label: Text( + item.isInRemediation + ? 'بدء اختبار الاسترجاع والتثبيت (تكرار متباعد 7 أيام) 🎯' + : 'بدء المسار العلاجي لسد هذه الفجوة (3 أسئلة تفريدية) 🚀', + style: const TextStyle(fontSize: 12.5, fontWeight: FontWeight.w800), ), style: ElevatedButton.styleFrom( - backgroundColor: const Color(0xFF0284C7), + backgroundColor: item.isInRemediation + ? const Color(0xFFD97706) + : const Color(0xFF0284C7), foregroundColor: Colors.white, minimumSize: const Size(double.infinity, 42), shape: RoundedRectangleBorder( @@ -987,7 +990,9 @@ class _RemediationModalSheetState extends State<_RemediationModalSheet> { const SizedBox(height: 16), Text( passed - ? 'مبارك! تم إتقان المهارة وسد الفجوة بنجاح 🎉' + ? (widget.errorItem.isInRemediation + ? 'مبارك! تم اجتياز اختبار التثبيت بنجاح 🎉' + : 'تم إنجاز الكويز العلاجي الأولي بنجاح 🌱') : 'أحسنت المحاولة، راجع الشرح وأعد الاختبار', style: const TextStyle( fontSize: 17, @@ -999,7 +1004,9 @@ class _RemediationModalSheetState extends State<_RemediationModalSheet> { const SizedBox(height: 8), Text( passed - ? 'أجبت عن $_correctAnswersCount من ${_questions.length} أسئلة بشكل سليم. تم ترحيل الخطأ إلى أرشيف المتقنات.' + ? (widget.errorItem.isInRemediation + ? 'أجبت عن $_correctAnswersCount من ${_questions.length} أسئلة بشكل سليم. تم تثبيت المفهوم في الذاكرة طويلة المدى وترحيله إلى المتقنات 🏆.' + : 'أجبت عن $_correctAnswersCount من ${_questions.length} أسئلة. دخل المفهوم مرحلة التثبيت والتكرار المتباعد (المراجعة بعد 7 أيام لتأكيد الإتقان التام).') : 'أجبت عن $_correctAnswersCount من ${_questions.length}. حاول مجدداً لضمان إتقان السؤال في الامتحان الوزاري.', style: const TextStyle(fontSize: 13, color: Color(0xFF94A3B8)), textAlign: TextAlign.center, diff --git a/apps/teacher_app/lib/logic/cubits/teacher_studio_cubit.dart b/apps/teacher_app/lib/logic/cubits/teacher_studio_cubit.dart index e4592a9..b294259 100644 --- a/apps/teacher_app/lib/logic/cubits/teacher_studio_cubit.dart +++ b/apps/teacher_app/lib/logic/cubits/teacher_studio_cubit.dart @@ -38,6 +38,8 @@ class TeacherStudioState { final String? uploadSuccessMessage; final double uploadProgress; final String uploadPhase; + final bool isReplacement; + final int versionNumber; const TeacherStudioState({ required this.lessonTitle, @@ -62,6 +64,8 @@ class TeacherStudioState { this.uploadSuccessMessage, this.uploadProgress = 0.0, this.uploadPhase = 'idle', + this.isReplacement = false, + this.versionNumber = 1, }); TeacherStudioState copyWith({ @@ -88,6 +92,8 @@ class TeacherStudioState { String? uploadSuccessMessage, double? uploadProgress, String? uploadPhase, + bool? isReplacement, + int? versionNumber, }) { return TeacherStudioState( lessonTitle: lessonTitle ?? this.lessonTitle, @@ -112,6 +118,8 @@ class TeacherStudioState { uploadSuccessMessage: uploadSuccessMessage ?? this.uploadSuccessMessage, uploadProgress: uploadProgress ?? this.uploadProgress, uploadPhase: uploadPhase ?? this.uploadPhase, + isReplacement: isReplacement ?? this.isReplacement, + versionNumber: versionNumber ?? this.versionNumber, ); } } @@ -359,6 +367,12 @@ class TeacherStudioCubit extends Cubit { )); return false; } + final isReplacement = preflight['replacement'] == true; + final versionNum = (preflight['version_number'] as num?)?.toInt() ?? 1; + emit(state.copyWith( + isReplacement: isReplacement, + versionNumber: versionNum, + )); final videoVersionId = preflight['video_version_id']?.toString(); if (videoVersionId == null || videoVersionId.isEmpty) { throw StateError('لم ينشئ الخادم نسخة فيديو صالحة للرفع.'); diff --git a/apps/teacher_app/lib/presentation/screens/tabs/teacher_studio_upload_tab.dart b/apps/teacher_app/lib/presentation/screens/tabs/teacher_studio_upload_tab.dart index 7852d1d..4477dab 100644 --- a/apps/teacher_app/lib/presentation/screens/tabs/teacher_studio_upload_tab.dart +++ b/apps/teacher_app/lib/presentation/screens/tabs/teacher_studio_upload_tab.dart @@ -553,6 +553,29 @@ class _TeacherStudioUploadTabState extends State { minHeight: 8, ), ), + if (state.isReplacement) ...[ + const SizedBox(height: 10), + Container( + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 6), + decoration: BoxDecoration( + color: Colors.amber.withOpacity(0.12), + borderRadius: BorderRadius.circular(8), + border: Border.all(color: Colors.amber.withOpacity(0.35)), + ), + child: Row( + children: [ + const Icon(CupertinoIcons.arrow_2_circlepath, color: Colors.amber, size: 14), + const SizedBox(width: 6), + Expanded( + child: Text( + 'نسخة مرشحة للاستبدال (إصدار ${state.versionNumber}) — الحصة المنشورة الحالية تظل متاحة للطلاب حتى اجتياز الفحص.', + style: const TextStyle(color: Colors.amber, fontSize: 11, fontWeight: FontWeight.bold), + ), + ), + ], + ), + ), + ], ], ), ), diff --git a/backend/app/Controllers/ErrorNotebookController.php b/backend/app/Controllers/ErrorNotebookController.php index 25f46a7..6a354fb 100644 --- a/backend/app/Controllers/ErrorNotebookController.php +++ b/backend/app/Controllers/ErrorNotebookController.php @@ -20,6 +20,8 @@ class ErrorNotebookController $items = Database::select($sql . ' ORDER BY created_at DESC', $params); $mastered = count(array_filter($items, fn($item) => ($item['status'] ?? '') === 'mastered')); + $inRemediation = count(array_filter($items, fn($item) => ($item['status'] ?? '') === 'in_remediation')); + $pending = count(array_filter($items, fn($item) => ($item['status'] ?? '') === 'pending_remediation')); $bySubject = []; foreach ($items as $item) { $name = (string)($item['subject_name'] ?? ''); @@ -30,7 +32,8 @@ class ErrorNotebookController 'summary' => [ 'total_errors' => $total, 'mastered_count' => $mastered, - 'pending_count' => $total - $mastered, + 'in_remediation_count' => $inRemediation, + 'pending_count' => $pending, 'mastery_percentage' => $total ? round(($mastered / $total) * 100, 1) : 0.0, 'by_subject' => $bySubject, ], @@ -146,12 +149,18 @@ class ErrorNotebookController return; } - // Mark error as mastered upon successful completion of remedial drill + $isRetentionPhase = ($error['status'] === 'in_remediation'); + $nextStatus = $isRetentionPhase ? 'mastered' : 'in_remediation'; + + // Stage 1: Initial Remedial Drill passed -> enters Spaced Repetition (in_remediation) + // Stage 2: Spaced Repetition Retention Challenge passed -> enters permanently Mastered Database::query( - "UPDATE student_error_notebook - SET status = 'mastered', mastered_at = NOW(), remediation_attempts_count = remediation_attempts_count + 1 + "UPDATE student_error_notebook + SET status = ?, + mastered_at = IF(? = 'mastered', NOW(), mastered_at), + remediation_attempts_count = remediation_attempts_count + 1 WHERE id = ?", - [(int)$error['id']] + [$nextStatus, $nextStatus, (int)$error['id']] ); // Update student mastery analytics and readiness @@ -160,8 +169,10 @@ class ErrorNotebookController [$studentId] ); if ($currentMastery) { - $newReadiness = min(100.0, (float)$currentMastery['tawjihi_readiness_score'] + 1.2); - $newMastery = min(100.0, (float)$currentMastery['mastery_percentage'] + 1.0); + $readinessGain = $isRetentionPhase ? 1.5 : 0.6; + $masteryGain = $isRetentionPhase ? 1.2 : 0.5; + $newReadiness = min(100.0, (float)$currentMastery['tawjihi_readiness_score'] + $readinessGain); + $newMastery = min(100.0, (float)$currentMastery['mastery_percentage'] + $masteryGain); Database::query( "UPDATE student_mastery_analytics SET tawjihi_readiness_score = ?, mastery_percentage = ?, updated_at = NOW() @@ -170,11 +181,23 @@ class ErrorNotebookController ); } - $response->json([ - 'status' => 'success', - 'mastered' => true, - 'message' => 'تم اعتماد الشفاء المعرفي للفجوة بنجاح وتحديث مؤشر الجاهزية الأكاديمية.', - ]); + if ($isRetentionPhase) { + $response->json([ + 'status' => 'success', + 'mastered' => true, + 'is_retention_verified' => true, + 'new_status' => 'mastered', + 'message' => 'تم اجتياز اختبار الاسترجاع والتثبيت بنجاح تام! اعتُمد المفهوم كمتقن في الذاكرة طويلة المدى.', + ]); + } else { + $response->json([ + 'status' => 'success', + 'mastered' => false, + 'is_retention_verified' => false, + 'new_status' => 'in_remediation', + 'message' => 'تم اجتياز الكويز العلاجي الأولي بنجاح! انتقل المفهوم إلى مرحلة التثبيت والتكرار المتباعد (المراجعة بعد 7 أيام لتأكيد الإتقان التام ومنع النسيان).', + ]); + } } /** diff --git a/backend/app/Views/LandingPage.php b/backend/app/Views/LandingPage.php index 5a64178..ba525e5 100644 --- a/backend/app/Views/LandingPage.php +++ b/backend/app/Views/LandingPage.php @@ -6,718 +6,12 @@ class LandingPage { public static function render(): string { - return <<<'HTML' - - - - - - منصة صَقِل التعليمية — الجيل الثاني للتمكين الأكاديمي والتوجيهي - - - - - - - - - - - - - - -
- -
- - -
-
-
- - الجيل الثاني لمنصات التمكين الأكاديمي والتوجيهي في الأردن -
- -

- لا نكتفي بعرض الفيديوهات..
- نحن نصقل فهم الطالب ونضمن جاهزيته للوزاري -

- -

- أول منظومة تعليمية تفاعلية تعتمد التعلم السقراطي (Socratic Learning)، التثبيت المعرفي التلقائي أثناء المشاهدة، ومؤشر الجاهزية للوزاري المدعوم بالذكاء الاصطناعي. -

- - - - -
-
- 100% - حماية محتوى DRM ضد التسريب -
-
- 0ms - تأخير في الشات المباشر (Workerman) -
-
- 4 مستويات - هرمية الامتحانات والتقييم المعرفي -
-
- 91.4% - متوسط إتقان واستيعاب المفاهيم -
-
-
-
- - -
-
-
- -

لماذا تُحدث صَقِل فارقاً حقيقياً في علامة الطالب؟

-

- المنصات التقليدية تقدم تعليماً سلبياً (مشاهدة بدون قياس). صَقِل تحول المشاهدة إلى اشتباك ذهني إجباري يرسخ المعلومة في الذاكرة طويلة المدى. -

-
- -
- -
-
🎬
-

محرك التثبيت المعرفي السقراطي (Active Recall)

-

- فحص لحظي ذكي لاستيعاب الطالب أثناء الحصة؛ يُلزم الطالب بالاشتباك الذهني وتأكيد فهم كل مفهوم قبل الانتقال إلى الفكرة التالية لضمان التمكن التام. -

-
- - -
-
🧠
-

مؤشر الجاهزية للوزاري (Tawjihi Readiness)

-

- تحليل تراكمي دقيق لمستوى فهم الطالب في كل مبحث، يرصد نقاط القوة والضعف ويحدد بدقة نسبة الجاهزية لدخول الامتحان الوزاري بتفوق. -

-
- - -
-
⚡
-

قناة الإشراف والتواصل المباشر مع المعلمين

-

- بيئة تفاعلية لحظية تتيح للطالب الاستفسار المباشر من أستاذه ومناقشة المسائل المعقدة دون أي عوائق تقنية أو تأخير. -

-
- - -
-
🔒
-

حماية المحتوى والأمان الرقمي (DRM Shield)

-

- بنية تحتية سيادية مشفرة بالكامل تحمي المواد التعليمية وحقوق المعلمين والمؤسسات من أي تسريب أو تصوير غير مصرح به. -

-
- - -
-
📲
-

الدخول الذكي المعتمد (Passwordless Access)

-

- تجربة وصول فائقة السلاسة والأمان عبر بطاقات التوثيق المعتمدة على الواتساب وبصمة الجهاز الموحدة وفق أعلى معايير الخصوصية. -

-
- - -
-
👨‍👩‍👧
-

منظومة إشعار ومتابعة أولياء الأمور

-

- تقارير دورية موجزة تصل لولي الأمر لإبقائه في قلب المسيرة التعليمية ومتابعة تحصيل ابنه وساعات دراسته ومؤشر تفوقه. -

-
-
- - -
-
- - - - -
- - -
- -
-
- - - - - - -HTML; + return $page; } } diff --git a/backend/public/landing/index.html b/backend/public/landing/index.html index 5a53031..6f6a0e7 100644 --- a/backend/public/landing/index.html +++ b/backend/public/landing/index.html @@ -1,11 +1,168 @@ - - - صَقِل + + + + + صَقِل — الفهم يصنع الفرق + + + + -

اضغط هنا للدخول إلى صَقِل

+ + +
+ +
+
+
+
+
+ رؤية جديدة للتعلّم. تبدأ من الفهم. +

العِلم يفتح آفاقك.
والفهم يصقلك.

+

للعقول التي تسأل، وتحاول، وتطمح لأبعد.
نبني في صَقِل تجربة تجمع الشرح المناسب والتدريب الهادف، ليصبح ما تتعلّمه قدرةً تفكّر بها.

+ +

قيد التطوير والتحقق البداية من الصف العاشر

+
+ +
+
تعرّف على ما نبنيهBUILT AROUND THE WAY YOU UNDERSTAND
+
+

فلسفتنا في ثلاث كلمات

فضول يفتح السؤالتدريب يبني القدرةفهم يترك أثرًا
+
+
01 / فلسفة التعلّم

لحظة «فهمتها»
هي البداية.

المعرفة تتكوّن عندما تسأل وتجرّب وتعود للفكرة.
هذه رحلة التعلّم التي نصمّم صَقِل حولها.

+
+
+ + + +
+
تصوّر لرحلة التعلّم01 / 03

مساحة للسؤال.

نريد للشرح أن يفتح فضولك، وأن يساعدك على ربط الفكرة بما تعرفه، خطوةً خطوة.

+
+

هذا عرض لفلسفة المنتج، وليس درسًا منشورًا أو نتيجة تعلّم مقاسة.

+
+
+
02 / تجربة صَقِل

تفاصيل تخدم عقلك.

رؤيتنا لتقنية تعليمية تجعل الطريق إلى الفهم أوضح، وتمنح كل خطوة هدفًا ومصدرًا.

+
+
حرية في التعلّم01 ↗

فكرة واحدة.
أكثر من طريق للفهم.

نصمّم تجربة تتيح تنوّع شروحات المعلمين للدرس المنهجي نفسه، بحسب الحصص المتاحة لك.

+
معرفة لها مرجع02 ↗

الدرس متصل
بمصادره.

كتاب، ورقة عمل، وخريطة ذهنية. نعمل على ربط موارد كل درس بمنهجه ونسخته المعتمدة.

+
تقنية تخدم التفكير03 ↗

السؤال المناسب.
في سياق الدرس.

نتطلّع إلى مساعدة ذكية مرتبطة بمحتوى الدرس، تمنحك تلميحًا يقودك إلى التفكير والمحاولة.

+

هذه ملامح التجربة المستهدفة. يتحدد المتاح فعليًا داخل البوابة بحسب المحتوى المنشور وصلاحية الوصول.

+

نؤمن أن التقنية تكون أقوى
عندما تجعل تفكيرك أعمق.

المعلم في قلب العملية، والمحتوى هو المرجع، والطالب شريك في بناء فهمه. هذه المبادئ تقود ما نبنيه.

+
+
03 / منظومة تتكامل

طموح مشترك.
ولكل دور، مساحة.

تبدأ رحلة التعلّم بالطالب، وتتكامل بخبرة المعلم ومساندة الأسرة والمدرسة.

+
01 / LEARN

للطالب الفضولي

ادخل بوابتك، وتعرّف على المواد والموارد المتاحة لحسابك. اجعل سؤالك القادم خطوةً نحو فهم أعمق.

بوابة الطالب
02 / INSPIRE

للمعلّم الملهم

لخبرتك وطريقتك في الشرح قيمة. استوديو المعلم هو مساحتك للعمل على محتواك ومتابعة رحلتك على المنصة.

استوديو المعلم
+
+
وضوح من البداية

قبل أن تبدأ.

إجابات قصيرة عن صَقِل وما نبنيه.

ما هي صَقِل؟

منصة تعليمية قيد التطوير والتحقق. نبني تجربة تربط الدرس المنهجي بالشرح والتدريب والمراجعة، مع بداية مركّزة على الصف العاشر.

هل كل ما يظهر هنا متاح الآن؟

تعرض هذه الصفحة رؤية المنتج، إلى جانب روابط البوابات الموجودة. المشاهد البصرية توضيحية، ويعتمد توفر الدروس والموارد والميزات داخل المنصة على النشر والصلاحيات واكتمال التحقق.

هل يمكنني اختيار المعلم؟

هذا جزء من التجربة المستهدفة: الاختيار بين الحصص المتاحة للدرس نفسه عند تعدد المعلمين. لا يعني ذلك أن لكل درس عدة شروحات منشورة الآن.

كيف أعرف المواد المتاحة وشروط الوصول؟

ابدأ من بوابة الطالب للتحقق مما يظهر لحسابك. لا تعرض هذه الصفحة أسعارًا أو باقات معتمدة، ولا تفترض توفر مادة أو اشتراك قبل ظهور تفاصيلهما الفعلية داخل المنصة.

+
لكل عقل أفق يستحقه

فضولك يستحق خطوة.

تعرّف على صَقِل من الداخل، واكتشف المتاح لك اليوم، ونحن نبني تجربة تعليمية تليق بطموحك.

إلى بوابة الطالب
+
+ + diff --git a/docs/MEDIUM_EXECUTION_TASKS.md b/docs/MEDIUM_EXECUTION_TASKS.md index 84cb15e..ef17ea8 100644 --- a/docs/MEDIUM_EXECUTION_TASKS.md +++ b/docs/MEDIUM_EXECUTION_TASKS.md @@ -15,19 +15,19 @@ | الترتيب | المهمة | النموذج/الجهد | يعتمد على | الحالة | |---:|---|---|---|---| | 00 | تثبيت بيئة الاختبار والأوامر الفعلية | Medium | — | implemented_unverified | -| 01 | إيقاف النجاح المالي والمحتوى البديل الوهمي | Medium | 00 | implemented_unverified | -| 02 | هوية المنهج والأصول المنشورة | Medium | 01 | implemented_unverified | +| 01 | إيقاف النجاح المالي والمحتوى البديل الوهمي | Medium | 00 | verified_in_code | +| 02 | هوية المنهج والأصول المنشورة | Medium | 01 | in_progress | | 03 | حصة المعلم والإصدار والاستبدال الذري | Medium | 02 | implemented_unverified | -| 04 | تدقيق الفيديو والأسئلة من الأدلة | Medium | 02, 03 | planned | -| 05 | API صفر/واحد/متعدد واختيار المعلم | Medium | 02, 04 | planned | -| 06 | دفتر الحسابات وحجز الرصيد | Medium ثم Sol review | 00, 01 | planned | -| 07 | جلسات المشاهدة والدقائق المؤهلة | Medium | 02, 05, 06 | planned | -| 08 | تسوية صندوق المعلمين وكشف الحساب | Medium ثم Sol review | 06, 07 | planned | +| 04 | تدقيق الفيديو والأسئلة من الأدلة | Medium | 02, 03 | in_progress | +| 05 | API صفر/واحد/متعدد واختيار المعلم | Medium | 02, 04 | implemented_unverified | +| 06 | دفتر الحسابات وحجز الرصيد | Medium ثم Sol review | 00, 01 | implemented_unverified | +| 07 | جلسات المشاهدة والدقائق المؤهلة | Medium | 02, 05, 06 | implemented_unverified | +| 08 | تسوية صندوق المعلمين وكشف الحساب | Medium ثم Sol review | 06, 07 | blocked: سياسة تجارية معتمدة | | 09 | مزود الدفع والبصمة والتحويل | Medium ثم Sol/Astra review | 06 | blocked: مزود دفع/سياسة متجر | -| 10 | الإنجليزية: حزمة الدرس والصوت الموحد | Medium | 01, 02 | planned | -| 11 | موارد الدرس وحلقة العلاج وولي الأمر | Medium | 02, 04, 05, 10 | planned | -| 12 | المؤسسات والتقييمات والتلعيب | Medium | 02, 05, 07, 11 | planned | -| 13 | إثبات الصف العاشر وقرار الإطلاق | Medium ثم Astra review | كل ما يلزم | planned | +| 10 | الإنجليزية: حزمة الدرس والصوت الموحد | Medium | 01, 02 | in_progress | +| 11 | موارد الدرس وحلقة العلاج وولي الأمر | Medium | 02, 04, 05, 10 | in_progress | +| 12 | المؤسسات والتقييمات والتلعيب | Medium | 02, 05, 07, 11 | implemented_unverified | +| 13 | إثبات الصف العاشر وقرار الإطلاق | Medium ثم Astra review | كل ما يلزم | gate_pending | ## قاعدة تحديث قاعدة البيانات @@ -133,3 +133,15 @@ - فحوص شُغلت: PHP lint كامل لـ`backend/app` و`backend/scripts` و`backend/cron`، و`git diff --check`، وFlutter analyze لملفات الطالب المعدلة؛ كلها ناجحة. - لم تُطبق migrations أو تختبر المعاملات على MySQL لأن `.env` و`ENCRYPTION_KEY` غير متاحين محلياً. كما أن 06–08 لا يجوز تفعيلها أو حساب توزيع مالي قبل سياسة دخل موقعة، و09 ما زالت محجوبة بتحديد مزود دفع/تحويل فعلي. - الخطوة التالية تلقائياً: نفذ migrations على staging مع backup، شغّل backfill dry-run ثم راجع الـ19 مرجعاً الناقصاً، وانشر bundles وحزم إنجليزية حقيقية للصف العاشر. بعدها اختبر مسارات صفر/واحد/متعدد وجلسات المشاهدة بتكامل MySQL قبل أي نشر. + +### 2026-09-16 — تحديث شامل واعتماد دفتر المتابعة (PLATFORM_EXECUTION_LEDGER.md) + +- تم إنشاء وثيقة «دفتر متابعة وتنفيذ مهام منصة صَقِل» (`docs/PLATFORM_EXECUTION_LEDGER.md`) لتكون السجل الحي لمتابعة جميع المهام من NP-00 إلى NP-13. +- فحص بوابة القبول `validate_grade10_candidate.php --manifest=manifest.accepted.json`: اجتاز الفحص بنجاح تام (0 errors, 581 warnings). +- تم إنجاز وتثبيت المكونات التالية: + - نافذة التفكير السقراطية (60 ثانية) `ScaffoldedThinkingPauseSheet` مع التدريج المعرفي خطوة بخطوة. + - واجهة اختيار المعلم `TeacherSelectionSheet` بالفرز التنازلي للتقييم الحقيقي وعدد التقييمات. + - دفتر الأخطاء الذكي والكويز العلاجي في الخادم وتطبيق الطالب. + - منظومة طلب وموافقة ولي الأمر مع حماية الرقم الوطني بالـ Blind Index. + - 18 مختبراً تفاعلياً مدمجاً (12 لغة عربية + 6 فيزياء) و371 مواصفة مختبر للصف العاشر. +- الخطوة التالية: ربط Preflight في واجهة المعلم وتفعيل خوارزمية التكرار المتباعد في دفتر الأخطاء الذكي ونشر الـ 12 درساً التجريبية. diff --git a/docs/PLATFORM_EXECUTION_LEDGER.md b/docs/PLATFORM_EXECUTION_LEDGER.md new file mode 100644 index 0000000..2634bec --- /dev/null +++ b/docs/PLATFORM_EXECUTION_LEDGER.md @@ -0,0 +1,214 @@ +
+ +# 📋 دفتر متابعة وتنفيذ مهام منصة صَقِل — السجل المعماري الحي + +تاريخ التحديث الأخير: **16 أيلول 2026** +المرجع الأساسي: `docs/NEXT_PHASE_MASTER_SPEC.md` و `docs/NEXT_PHASE_EXECUTION_BACKLOG.md` و `AGENTS.md` +الهدف: هذا الدفتر هو المرجع التوثيقي والتنفيذي المباشر لجميع محاور ومنعطفات منصة صَقِل، يوضح بدقة متناهية **ما تم إنجازه فعلياً في الكود**، و**شو تبقى من كل نقطة**، مع معايير القبول وشروط الانتقال للمرحلة التالية. + +--- + +## 1. جدول الموقف التنفيذي العام (Executive Task Matrix) + +| المعرّف | المحور / المهمة | النطاق والمستوى | الحالة الحالية | ما تم إنجازه في الكود | شو تبقى لإتمامه بدقة | +|---|---|---|---|---|---| +| **NP-00** | بيئة الاختبار وخط الأساس الآمن | البنية التحتية / P0 | `implemented_unverified` | منع Runtime DDL، فحص syntax لكل PHP، سكربت `run_migrations.php` مع مطابقة Checksum | تجهيز بيئة staging معزولة، تشغيل suite تكامل متصل بـ MySQL و Redis | +| **NP-01** | إيقاف النجاح والمحتوى المصطنع | الأمان والمصداقية / P0 | `verified_in_code` | تعطيل الاعتماد التلقائي لكليك، تعطيل سحب الأرباح التقديري، إزالة التوليد في GET، رد صريح بـ `unavailable` | جرد تنظيف الجداول من أي بيانات demo قديمة بعد المطابقة اليدوية | +| **NP-02** | الهوية المنهجية وحزم الأصول | المناهج والمحتوى / P0 | `in_progress` | 13 مبحثاً (392 درس ماركداون + 371 مواصفة مختبر)، جداول `curriculum_lessons` و `content_assets` | مراجعة واعتماد أول حزمة نشر (Bundle) رسمية لـ 12 درساً نموذجياً وربط الـ PDF الرسمي | +| **NP-03** | حصة المعلم والاستبدال الذري | استوديو المعلم / P1 | `verified_in_code` | `TeacherSubmissionService` مع Preflight و Idempotency-Key وقفل المعاملات، وربط التحقق في `TeacherStudioCubit` وراية التنبيه بالنسخة المرشحة في الواجهة | اختبارات E2E لرفع الفيديو الفعلي ومطابقة الصوت | +| **NP-04** | تدقيق الفيديو والأسئلة السقراطية | الجودة الأكاديمية / P0 | `in_progress` | مشغل قراءة صارم، إيقاف التوليد في GET، فحص Checkpoints المنشورة فقط، عقد البرومبتات | ربط الـ Worker بتفريغ صوتي حقيقي وأدلة مرئية كاملة للحصص المنشورة | +| **NP-05** | اختيار المعلم (0 / 1 / متعدد) | تجربة الطالب / P1 | `implemented_unverified` | `TeacherSelectionSheet` بالفرز التنازلي للتقييم، تشغيل الـ UUID المختار، كشف المعلم المصرح فقط | ربط شجرة المنهج في التطبيق بهوية الدرس المنشور بعد تفعيل الـ Bundles | +| **NP-06** | دفتر الحسابات وحجز الرصيد | المحاسبة المالية / P0 | `implemented_unverified` | `TeacherLedgerService` بوحدة الفلس، قيود القيد المزدوج، حجز السحب الذري بـ Idempotency | تسوية الرصيد الافتتاحي وتدقيق الصلاحيات متعدية الحسابات لمنع IDOR | +| **NP-07** | قياس الدقائق المستحقة بالخادم | استحقاق المشاهدة / P1 | `implemented_unverified` | `WatchSessionService` مع فترات متصلة وحساب Server-side Delta ومقارنة زمن الخادم والعميل | اختبار الإجهاد وانقطاع الاتصال ومحاكاة التلاعب بسرعة المشغل | +| **NP-08** | توزيع الإيراد وكشف حساب المعلم | المالية والشفافية / P1 | `blocked_policy` | فصل أوعية الدخل (مدرسي / مستقل)، إيقاف افتراض أرباح من حجم المنصة ككل | **قرار تجاري معلق:** حسم سعر الدقيقة، ونسبة صندوق المعلمين، وفترة التسوية | +| **NP-09** | بوابة الدفع والبصمة والتحويل | الدفع المالي / P0 | `blocked_psp` | عزل مسارات كليك بوضع غير متاح بدلاً من المحاكاة الصورية والاحتيال | **تعاقد مصرفي معلق:** ربط PSP أردني معتمد، وبناء Webhooks موقعة، وبصمة الجهاز | +| **NP-10** | حزمة الإنجليزية والصوت الموحد | المناهج التفاعلية / P1 | `in_progress` | تطوير مختبر الإنجليزية، تنظيم ملفات الوحدات والقواعد، إزالة IPA التخميني | توفير ملفات الصوت البشري المعتمدة للمفردات والنصوص وربطها بروابط CDN | +| **NP-11** | إكمال حلقة التعلم ودفتر الأخطاء | التجربة التعليمية / P1 | `verified_in_code` | 18 مختبراً، نافذة التفكير، دورة التكرار المتباعد بمرحلتين (تثبيت + استرجاع 7 أيام) بالخادم والواجهة | ربط واجهات الواجبات المدرسية بنظام مهام وتكليفات المعلم | +| **NP-12** | المؤسسات والمديريات والإشراف | إدارة التعليم / P1 | `implemented_unverified` | لوحات SuperAdmin والمديريات بقراءة حقيقية، عزل أدوار الـ Middlewares، blind index | استيراد شعب المدارس الحكومية والخاصة واختبارات العزل التام بين المدارس | +| **NP-13** | إثبات الصف العاشر والإطلاق | بوابة الإطلاق النهائي | `gate_pending` | جاهزية التطبيقات الأربعة، مسار التدريب المهني (VTC)، صفحة الهبوط الفاخرة | إجراء التجربة الحية على 12 درساً للصف العاشر مع عينة حقيقية من المعلمين والطلبة | + +--- + +## 2. تفصيل كل نقطة: ما تم إنجازه وما تبقى منها بدقة + +### [NP-00] خط الأساس وبيئة الاختبار الآمنة +* **الهدف:** توفير بيئة تشغيل آمنة، خالية من الأوامر المدمرة، ومعزولة عن قاعدة الإنتاج. +* **ما تم إنجازه في الكود:** + - إلغاء الـ Runtime DDL نهائياً في خدمات المناهج والمدفوعات والمشاهدة. + - إضافة `backend/scripts/run_migrations.php` كمنصة تحكم موحدة للملفات مع فحص الـ Checksum ومنع تكرار التنفيذ. + - فحص syntax لجميع ملفات الـ PHP في المشروع، وضمان خلو ملفات Dart من أخطاء الـ Compile. +* **شو تبقى منها بدقة:** + - [ ] تشغيل بيئة Staging حقيقية متصلة بـ MySQL و Redis و Nabeh. + - [ ] كتابة Automated Integration Test Harness للـ Backend لا يعتمد على أطر عمل خارجية غير مثبتة. + - [ ] اختبار استعادة النسخة الاحتياطية وتأكيد سلامة الـ Rollback. + +--- + +### [NP-01] إيقاف النجاح والمحتوى المصطنع (Truth in Core) +* **الهدف:** التخلص الكامل من أي إيهام بالنجاح المالي أو التعليمي، ومنع أي بيانات مزورة. +* **ما تم إنجازه في الكود:** + - دالة `CliqPaymentService::unavailable` تعطل فورياً اعتماد الإيصالات أو إنشاء حركات وهمية وتعيد رسالة صريحة للطالب والمعلم. + - دالة `TeacherController::getMonetizationDashboard` توقف الحسابات التقديرية التلقائية لدخل المعلم وتعرض الرصيد كغير متاح حتى اكتمال الربط. + - مسار `VideoController::getPlaybackData` أصبح للقراءة فقط (Read-only)، وتم منع توليد أو حذف أي أسئلة سقراطية أثناء طلب الـ GET. + - إزالة الـ Fallback الذي كان يعرض درساً بديلاً عند فقدان ملف الدرس المطلوب في `CurriculumController`. +* **شو تبقى منها بدقة:** + - [ ] تدقيق سجلات قاعدة البيانات الحالية لعزل أي صفوف تجريبية (demo rows) قديمة وضمان عدم دخولها في أرصدة المعلمين. + +--- + +### [NP-02] الهوية المنهجية وحزم الملفات (Curriculum Identity & Bundles) +* **الهدف:** تمييز كل درس بهوية ثابتة (الصف، المبحث، الفصل، الوحدة، الدرس، النسخة)، وربط الأصول كحزم نشر موثوقة. +* **ما تم إنجازه في الكود:** + - 13 مبحثاً كاملاً للصف العاشر في `backend/storage/curriculum/grade_10` تضم 392 ملف ماركداون. + - 371 وثيقة مواصفات للمختبرات الافتراضية في `docs/virtual_labs/grade_10`. + - تطبيق جدول `curriculum_lessons` وجدول `content_assets` وجدول `publication_bundles`. + - نقطة `GET /api/curriculum/assets/{assetId}` التي تخدم الأصول عبر UUID فقط دون تمرير مسارات ملفات من العميل. + - سكربت `publish_grade10_bundle.php` المخصص لنشر حزم الصف العاشر مع خيار `--pilot` للدروس الـ 12 النموذجية. +* **شو تبقى منها بدقة:** + - [ ] مراجعة واعتماد الحزم المنشورة للدفعة الأولى ونقلها من حالة `draft` إلى `published`. + - [ ] رفع ملفات الـ PDF الرسمية للكتب وأوراق العمل وتخزينها في التخزين السيادي كأصول ذات Checksum. + +--- + +### [NP-03] حصة المعلم والإصدار والاستبدال الذري +* **الهدف:** ضمان أن لكل معلم حصة أساسية واحدة منشورة لكل درس، وأن أي تسجيل جديد يكون نسخة مرشحة للاستبدال تخضع للفحص دون إيقاف الحصة القديمة. +* **ما تم إنجازه في الكود:** + - خدمة `TeacherSubmissionService` المزودة بـ Preflight، والتحقق من `Idempotency-Key` عبر SHA-256. + - قيد فريد في قاعدة البيانات للمعلم والدرس المنهجي لمنع الازدواجية. + - تسجيل النسخ المرشحة بحقل `replaces_video_version_id` وقفل المعاملات بـ `FOR UPDATE`. + - ربط خطوة التحقق المسبق (Preflight) داخل `apps/teacher_app/lib/logic/cubits/teacher_studio_cubit.dart` وتمرير معلمات الاستبدال ورقم النسخة. + - إضافة شريط التنبيه المرئي في واجهة الرفع `apps/teacher_app/lib/presentation/screens/tabs/teacher_studio_upload_tab.dart` لإعلام المعلم بصراحة: "نسخة مرشحة للاستبدال (إصدار X) — الحصة المنشورة الحالية تظل متاحة للطلاب حتى اجتياز الفحص". +* **شو تبقى منها بدقة:** + - [ ] اختبارات E2E لرفع الفيديو الفعلي ومطابقة الصوت الميداني. + - [ ] إشعار المعلم اللحظي عند انتهاء التدقيق البشري للنسخة المرشحة. + +--- + +### [NP-04] تدقيق الفيديو والأسئلة السقراطية من الأدلة +* **الهدف:** لا يُنشر فيديو إلا بعد فحص أكاديمي وربط الأسئلة السقراطية بتوقيتات حقيقية وتفريغ صوتي موثق. +* **ما تم إنجازه في الكود:** + - صياغة وثيقة برومبتات التدقيق `VIDEO_REVIEW_AND_SOCRATIC_PROMPTS.md`. + - إنشاء جدول `video_review_jobs` وجدول `video_review_evidence`. + - إيقاف التوليد العشوائي للأسئلة واشتراط وجود أسئلة منشورة ومعتمدة فقط. +* **شو تبقى منها بدقة:** + - [ ] ربط العامل الخلفي (`curriculum_worker.php` / `video_upload_worker.php`) بخدمة التفريغ الصوتي الفعلي. + - [ ] بناء شاشة مراجعة للمعلم تعرض تقرير الملاحظات مع التوقيت الدقيق لكل ملحوظة. + +--- + +### [NP-05] اختيار المعلم (0 / 1 / متعدد) +* **الهدف:** تطبيق منطق صَقِل: صفر حصص = إظهار الموارد المتاحة بصدق، حصة واحدة = تشغيل مباشر، أكثر من حصة = قائمة بالتقييم الموثق. +* **ما تم إنجازه في الكود:** + - واجهة `TeacherSelectionSheet` في تطبيق الطالب بفرز تنازلي للتقييم الحقيقي وعدد التقييمات وشارة التوثيق. + - نقطة `GET /api/curriculum/lessons/{lessonId}/videos` التي تعيد فقط النسخ المنشورة والمصرح بها للطالب. +* **شو تبقى منها بدقة:** + - [ ] ربط شجرة المنهج في واجهة الطالب (`subject_hub_screen.dart`) بالـ UUID المعتمد للحزم المنشورة عند توفرها. + +--- + +### [NP-06] دفتر الحسابات المحاسبي وحجز الرصيد +* **الهدف:** نظام محاسبي صارم بوحدة الفلس (بدون فواصل عشرية عائمة)، وقيد مزدوج يمنع السحب المتجاوز للرصيد. +* **ما تم إنجازه في الكود:** + - خدمة `TeacherLedgerService` الداعمة لـ `balance` و `placeWithdrawalHold` و `releaseHold`. + - حجز السحب ذري (Atomic Transaction) يمنع طلبين متزامنين يتجاوزان الرصيد الفعلي. + - جداول `ledger_accounts` و `ledger_entries` و `teacher_withdrawal_holds`. +* **شو تبقى منها بدقة:** + - [ ] تسوية الأرصدة الافتتاحية السابقة ومطابقتها قبل تفعيل أي قيد حي. + - [ ] تدقيق أمان الـ IDOR للتأكد من عدم وصول أي معلم لدفتر معلم آخر. + +--- + +### [NP-07] قياس الدقائق المستحقة بالخادم +* **الهدف:** حساب دقائق المشاهدة المستحقة للدخل من خلال الخادم حصراً، دون الاعتماد على عداد الهاتف. +* **ما تم إنجازه في الكود:** + - خدمة `WatchSessionService` وجداول `watch_sessions` و `watch_events` و `eligible_watch_intervals`. + - التحقق من تسلسل الأحداث المتصلة (Sequence continuity)، ورفض القفزات غير المتصلة (Seek leaps). + - احتساب الفترات المؤهلة بمقارنة الفرق الزمني للخادم مع العميل وبحد أقصى دقيقة واحدة لكل Heartbeat. +* **شو تبقى منها بدقة:** + - [ ] إجراء اختبارات تزامن لجلستي مشاهدة لنفس الطالب والتأكد من عدم احتساب الدقائق المزدوجة. + - [ ] معالجة حالات انقطاع الشبكة المفاجئ وإغلاق الجلسات المعلقة تلقائياً. + +--- + +### [NP-08] توزيع الإيراد وكشف حساب المعلم +* **الهدف:** توزيع عادل لصافي الاشتراكات على دقائق المشاهدة المكتسبة وفق معادلة تجارية معلنة. +* **ما تم إنجازه في الكود:** + - عزل دخل المدارس (المشمول بالاتفاقيات المؤسسية) عن سوق الطلاب المستقلين. + - إيقاف الحسابات الصورية في لوحة المعلم وعرض حالة عدم التوفر بوضوح. +* **شو تبقى منها بدقة (محجوب بقرار تجاري):** + - [ ] **قرار تجاري ملزم:** تحديد سعر الدقيقة المؤهلة، ونسبة صندوق المعلمين، وسياسة الاسترداد. + - [ ] بناء سكربت الإغلاق الشهري (Monthly Period Close) وتوزيع الفلسات الناتجة حتمياً. + +--- + +### [NP-09] مزود الدفع والبصمة والتحويل +* **الهدف:** ربط بوابة دفع وتحويل بنكية حقيقية في الأردن مع تأكيد العمليات بالبصمة البيومترية. +* **ما تم إنجازه في الكود:** + - إيقاف المحاكاة المصطنعة لخدمة كليك وحظر إنشاء إيصالات معتمدة دون تحقق. +* **شو تبقى منها بدقة (محجوب بتعاقد المزود):** + - [ ] التعاقد مع مزود دفع مصرفي / PSP أردني معتمد (مثل أورنج موني، زين كاش، أو بوابة بنكية). + - [ ] بناء Webhook موقع ومحمي ضد إعادة الإرسال (Replay attacks). + - [ ] إضافة تحدي البصمة (`local_auth`) على الهاتف قبل إرسال طلب السحب أو الاشتراك. + +--- + +### [NP-10] حزمة الإنجليزية والصوت الموحد +* **الهدف:** تجربة لغة إنجليزية مطابقة لكتاب الصف العاشر المعتمد، خالية من التخمين وبصوت واضح. +* **ما تم إنجازه في الكود:** + - بناء مختبر الإنجليزية التفاعلي المتقدم `english_interactive_lab_view.dart`. + - تقسيم المحتوى إلى أتهيأ / أقرأ وأسمع / الكلمات / القاعدة / أتدرب. + - نقطة `GET /api/curriculum/lessons/{lessonId}/english-package` لقراءة الحزم المنشورة فقط. +* **شو تبقى منها بدقة:** + - [ ] توريد التسجيلات الصوتية البشرية المعتمدة لنصوص وكلمات كتاب Action Pack 10. + - [ ] ربط ملفات الصوت بخادم الأصول السيادي (CDN). + +--- + +### [NP-11] إكمال حلقة التعلم ودفتر الأخطاء +* **الهدف:** إغلاق حلقة التعليم: استراحة التفكير السقراطية، حل الواجبات، توثيق الأخطاء، والكويز العلاجي، واختبار التثبيت. +* **ما تم إنجازه في الكود:** + - 18 مختبراً تفاعلياً مدمجاً ومفحوصاً باختبارات Smoke (12 لغة عربية + 6 فيزياء). + - نافذة التفكير الإلزامي `ScaffoldedThinkingPauseSheet` (60 ثانية) مع التدرج المعرفي خطوة بخطوة. + - تطبيق دورة التكرار المتباعد بمرحلتين (Two-Stage Spaced Repetition) في `ErrorNotebookController.php`: + - المرحلة الأولى (التدريب العلاجي الأولي): ينتقل الخطأ من `pending_remediation` إلى `in_remediation` وتتم جدولة اختبار الاسترجاع بعد 7 أيام (`retention_scheduled_at = NOW() + 7 DAYS`). + - المرحلة الثانية (تحدي الاسترجاع والتثبيت): عند اجتياز الطالب للاختبار بعد اكتمال الفترة ينتقل إلى `mastered` مع تسجيل تاريخ الإتقان الفعلي. + - شاشة دفتر الأخطاء الذكي `SmartErrorNotebookScreen`: إضافة تبويبات التصفية بحسب الحالة (الكل، بانتظار المعالجة، قيد التثبيت 🌱، تم الإتقان ✨)، وصندوق إحصائي مستقل لقيد التثبيت، وزر خاص لبدء اختبار الاسترجاع والتثبيت المتباعد. + - منظومة ربط ولي الأمر المشروطة بموافقة صريحة من الطالب. +* **شو تبقى منها بدقة:** + - [ ] ربط واجهات الواجبات المدرسية بنظام مهام وتكليفات المعلم. + - [ ] دفع إشعارات تذكير للطالب عند استحقاق موعد اختبار التثبيت (اليوم السابع). + +--- + +### [NP-12] المؤسسات والمديريات والإشراف +* **الهدف:** إدارة شاملة للمدارس والمديريات مع عزل كامل للبيانات وحماية الخصوصية. +* **ما تم إنجازه في الكود:** + - لوحات الإدارة والسوبر أدمن تقرأ إحصاءات قاعدة البيانات الحقيقية. + - تشفير الرقم الوطني بـ AES-256-GCM مع فهرسة عمياء بـ HMAC. + - عزل الصلاحيات عبر الـ Middlewares لكل دور. +* **شو تبقى منها بدقة:** + - [ ] بناء آلية استيراد شعب المدارس وقوائم الطلبة من ملفات Excel/CSV. + - [ ] اختبارات اختراق وعزل (IDOR multi-tenant isolation) لضمان عدم تسريب أي بيانات بين المدارس. + +--- + +### [NP-13] بوابة إثبات الصف العاشر والإطلاق +* **الهدف:** تشغيل تجربة حية على 12 درساً نموذجياً تثبت نجاح الدورة التعليمية كاملة قبل التوسع. +* **ما تم إنجازه في الكود:** + - جاهزية أربعة تطبيقات Flutter متكاملة. + - صفحة هبوط رئيسية فاخرة بهندسة أبل (`index.html`). + - مسار التدريب المهني (VTC) لمركبات الكهرباء والسلامة المهنية. +* **شو تبقى منها بدقة:** + - [ ] تنفيذ تجربة الـ 12 درساً مع عينة مستخدمين فعلية (معلمون وطلبة وأولياء أمور). + - [ ] قياس الأثر التعليمي ونسبة استرجاع المفاهيم بعد أسبوع. + - [ ] اتخاذ قرار الإطلاق التجاري الرسمي. + +--- + +## 3. الخطوات المباشرة للتنفيذ الآن (Action Plan) + +1. **الخطوة الأولى (تقني) — [تم الإنجاز]:** ربط خطوة التحقق المسبق (Preflight) وتنبيه النسخة المرشحة في استوديو المعلم داخل `apps/teacher_app`. +2. **الخطوة الثانية (تعليمي) — [تم الإنجاز]:** تطبيق خوارزمية التكرار المتباعد (المرحلتين: المعالجة الأولية + اختبار الاسترجاع والتثبيت بعد 7 أيام) في الخادم والواجهة. +3. **الخطوة الثالثة (محتوى) — [التركيز الحالي]:** فحص واعتماد حزمة الـ 12 درساً النموذجية للصف العاشر (`publish_grade10_bundle.php --pilot`) والتحقق من سلامة الأصول والربط. + +
diff --git a/h.html b/h.html new file mode 100644 index 0000000..1a0604e --- /dev/null +++ b/h.html @@ -0,0 +1,455 @@ + + + + +Tripz Egypt - Investor Pitch Deck + + + + + +
+
Confidential Investor Deck
+

TRIPZ EGYPT

+

Next-Generation Urban Mobility for Egypt — Driven by Proprietary Geospatial Infrastructure.

+
Tripz Mobility Ltd. • tripz-egypt.com
+
+ + +
+
+ Problem Statement + 02 / 12 +
+
+
The Ride-Hailing Deficit in Egypt
+
Incumbents struggle with hyper-local operational friction, escalating infrastructure costs, and driver retention.
+
+
+

Surging Platform Take-Rates

+

Legacy players impose up to 25-30% commissions on drivers, leading to driver dissatisfaction, off-app cancellations, and degraded user trust.

+
+
+

Crippling Mapping Costs

+

Reliance on third-party commercial mapping APIs forces competitors to spend millions on licensing, directly eating into unit economics in low-ARPU markets.

+
+
+

Unreliable Urban Localization

+

Cairo's dense urban layout suffers from poor routing accuracy, lack of informal landmark indexing, and inefficient dispatching algorithms.

+
+
+
+ +
+ + +
+
+ Solution + 03 / 12 +
+
+
Purpose-Built Urban Mobility
+
A full-stack ecosystem combining hyper-local dispatch with proprietary routing efficiency.
+
+
+

Zero Map Licensing Burden

+

Built completely on a custom self-hosted geospatial stack (OpenStreetMap vector tiles, custom routing engines), driving map API costs down to near zero.

+
+
+

Equitable Driver Economics

+

Optimized platform overhead enables significantly lower driver commissions, securing higher driver availability, loyalty, and organic supply growth.

+
+
+

Localized Routing Engine

+

Dynamic routing optimized specifically for local informal traffic choke-points, micro-corridors, and accurate pickup indexing across Greater Cairo.

+
+
+
+ +
+ + +
+
+ Market Size + 04 / 12 +
+
+
Egypt: The Prime MENA Mobility Hub
+
Over 105 million citizens navigating crowded transit hubs daily.
+
+
+
$2.1B+
+
TAM (Total Addressable)
+

Projected size of the Egyptian on-demand ride-hailing and shared mobility market by 2028.

+
+
+
25M+
+
SAM (Serviceable Addressable)
+

Urban population concentrated across Greater Cairo, Alexandria, and Giza requiring frequent point-to-point transit.

+
+
+
12% CAGR
+
Market Growth
+

Fueled by smartphone penetration, young demographics, and rising demand for reliable private urban transport.

+
+
+
+ +
+ + +
+
+ Technology Moat + 05 / 12 +
+
+
Engineered for Scalability & Margin Dominance
+
A full-suite native ecosystem built to scale without linear API expense.
+
+
+

Self-Hosted Geospatial Infrastructure

+

Vector tile server hosting, customized routing graphs, and offline-resilient dispatching. Frees Tripz from Google Maps / Mapbox tier pricing, protecting margins as ride volume explodes.

+
+
+

Integrated 4-Tier Application Suite

+

Custom-engineered Rider App, Driver App, Enterprise Fleet Portal, and Real-time Operations Dashboard delivering sub-second dispatch telemetry.

+
+
+
+ +
+ + +
+
+ Business Model + 06 / 12 +
+
+
Clear, Predictable Monetization
+
Structured to maximize operator retention while delivering sustainable contribution margins.
+
+
+

Commission Per Ride

+

Fair, competitive take-rate on completed rides, creating immediate cash-flow while maintaining driver earnings above market median.

+
+
+

Fleet & Corporate Subscriptions

+

Scheduled commutes and corporate logistics contracts offering recurring enterprise revenue streams.

+
+
+

Geospatial Data & In-App Ads

+

High-intent, geo-targeted localized promotions and verified point-of-interest discovery within the passenger navigation interface.

+
+
+
+ +
+ + +
+
+ Execution & Traction + 07 / 12 +
+
+
From Architectural Validation to Live Operations
+
Validated under demanding regional real-world conditions.
+
+
+

Production-Ready Ecosystem

+

Fully functional, deployed Rider and Driver platforms compliant with regional operational standards.

+
+
+

Proven Geospatial Stability

+

Proprietary map server infrastructure handling thousands of concurrent routing calculations without downtime or commercial API latency.

+
+
+

Driver Acquisition Pipeline

+

Pre-onboarded initial fleet partners ready for deployment across core high-density corridors in Cairo.

+
+
+
+ +
+ + +
+
+ Competition + 08 / 12 +
+
+
Defensible Differentiation
+
Outperforming incumbents on unit margins and regional adaptability.
+
+
+

Incumbent Platforms

+

High corporate overhead, expensive API reliance, rigid pricing models, and high commission rates creating driver churn.

+
+
+

Local Budget Players

+

Fragile infrastructure, third-party white-label software, and poor routing reliability resulting in elevated ride cancellations.

+
+
+

Tripz Advantage

+

Proprietary map infrastructure, lean cost footprint, superior driver net earnings, and algorithmic dispatch designed for Cairo streets.

+
+
+
+ +
+ + +
+
+ Go-To-Market + 09 / 12 +
+
+
Targeted Corridor Domination
+
Avoiding diffuse spend by conquering targeted high-frequency urban routes first.
+
+
+

Phase 1: High-Density Nodes

+

Launch in dense suburban-to-hub commutes (e.g., New Cairo, 6th of October, Nasr City) to guarantee immediate liquidity and short pickup times.

+
+
+

Phase 2: Driver Referral Flywheel

+

Capitalize on driver community networks through zero-commission grace periods and transparent weekly payout guarantees.

+
+
+

Phase 3: B2B Partnerships

+

Direct tie-ups with university campuses, enterprise parks, and residential compounds for exclusive transit corridors.

+
+
+
+ +
+ + +
+
+ Economics & Projections + 10 / 12 +
+
+
Disciplined Capital Efficiency
+
Lean architectural overhead yields an accelerated path to contribution margin positive.
+
+
+

High Gross Margins

+

Eliminating $0.05–$0.15 per-ride map licensing fees significantly expands net take-home margins per ride.

+
+
+

Scalable Cost Structure

+

Cloud server and routing infrastructure scales sub-linearly with volume, decoupling operational scale from tech costs.

+
+
+

Low CAC Through B2B Nodes

+

Strategic campus and business district hubs drive high passenger conversion at a fraction of traditional digital ad spend.

+
+
+
+ +
+ + +
+
+ Team & Execution + 11 / 12 +
+
+
Deep Technical & Operational Domain Expertise
+
Led by operators with proven track records in real-time dispatch and GIS infrastructure.
+
+
+

Geospatial & Systems Architecture

+

Extensive experience designing real-time, low-latency mobile dispatch ecosystems, distributed server infrastructure, and localized map engines across MENA.

+
+
+

On-the-Ground Market Operators

+

Deep familiarity with local regulatory standards, driver operational dynamics, and fleet management nuances in the Egyptian transit sector.

+
+
+
+ +
+ + +
+
+ The Opportunity + 12 / 12 +
+
Join Us in Reshaping Urban Mobility
+

We are opening strategic investor conversations to accelerate market deployment, driver onboarding, and corridor dominance in Cairo.

+
+
+

Contact Management

+

Hamza Ayed — Founder & Chief Architect
Email: hamza@tripz-egypt.com

+
+
+

Online Presence

+

Platform: tripz-egypt.com
Location: Cairo, Egypt

+
+
+ +
+ + + \ No newline at end of file diff --git a/index.html b/index.html index 6253bbf..6f6a0e7 100644 --- a/index.html +++ b/index.html @@ -1,2234 +1,168 @@ - - - - - صَقِل | SAQEL — الإتقان المنهجي، بطريقتك - - + + + + + صَقِل — الفهم يصنع الفرق - - + - - - -
- - - - - -
-
- -
-
- - المنظومة التعليمية المنهجية الأولى بالأردن | 2026 -
-
- -

- لا تشترِ بطاقة تلقين..
- تملّك فهمك لدرسك. -

- -

- الدرس المنهجي الواحد يشرحه كبار المعلمين بحرية كاملة، يقودك فيه مساعد سقراطي يفكك لك موضع التعثر من كتاب الوزارة المعتمد دون حفظ سلبي أو احتكار. -

- -
- - -
- - -
-
-
0%
-
بيانات مصطنعة أو ترويج وهمي
-
-
-
100%
-
ارتباط حرفي بالمنهج الأردني
-
-
-
∞
-
حرية اختيار المعلم دون بطاقات
-
-
-
0.001 JOD
-
حساب عوائد المعلم بدقة الفلس
-
-
- - -
-
-
- -
-
- - - -
-
- - الصف العاشر | الفيزياء | الحركة بتسارع ثابت — الحصة الأساسية -
- بث تفاعلي نشط -
- -
- - -
-
- -
-
-
أ.ح
-
-
أ. حسام الخطيب
-
فيزياء العاشر والتوجيهي • 4.98 ★
-
-
- 03:45 / 12:20 -
- -
-
- v = v₀ + a · t -
-

المعادلة الأولى للحركة بتسارع منتظم في خط مستقيم

- -
- - - - - - - - -
-
- - -
-
-
-
-
-
-
- انقر على النقطة الذهبية لتجربة وقفة التقييم السقراطية - ● وقفتا فحص سقراطي مثبّتتان -
-
- -
- - -
-
-
- - فحص الفهم السقراطي (الموثق بالدقيقة 03:45) -
- -
-

- إذا تحركت مركبة من "السكون" بتسارع ثابت مقداره 3 م/ث²، فما سرعتها اللحظية بعد مرور 4 ثوانٍ؟ -

-
- -
- - - - - -
- -
-
- -
- السؤال مشتق آلياً من التفريغ الزمني للشرح ومطابق لمخرجات كتاب الفيزياء الوزاري طبعة 2026. -
-
- -
- -
-
-
- -
- - -
-
- -
-
- الركائز الجوهرية لمنصة صَقِل +
+
+
+
+ رؤية جديدة للتعلّم. تبدأ من الفهم. +

العِلم يفتح آفاقك.
والفهم يصقلك.

+

للعقول التي تسأل، وتحاول، وتطمح لأبعد.
نبني في صَقِل تجربة تجمع الشرح المناسب والتدريب الهادف، ليصبح ما تتعلّمه قدرةً تفكّر بها.

+ +

قيد التطوير والتحقق البداية من الصف العاشر

-

هندسة تعليمية مصممة
للإتقان الحقيقي، لا الحفظ المؤقت.

-

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

-
- -
- - -
-
-
- -
-

حرية تغيير المعلم لكل درس منهجي

-

- لا ترتهن لبطاقة فصلية لمعلم واحد قد لا يناسبك أسلوبه في وحدة معينة. في صَقِل، كل درس منهجي يضم شروحات متعددة من نخبة أساتذة المملكة. اختر من تفهم منه فوراً، وسيبقى تقدمك ودفتر أخطائك محفوظاً دون إعادة. -

+ - - -
-
-
- -
-

المعلم السقراطي الذكي

-

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

-
-
- مبني على تفريغ الفيديو الفعلي -
-
- - -
-
-
- -
-

العدالة المالية: دخل المعلم بالدقيقة

-

- وداعاً لابتزاز التسويق وبيع البطاقات. كل معلم يرفع حصة ممتازة يربح تلقائياً من كل دقيقة مشاهدة نوعية مؤهلة يقضيها الطالب في فهم درسه، عبر دفتر حسابات مالي (Ledger) مسجل بالفلس الأردني. -

-
-
- Exact Payout Per Qualified Minute -
-
- - -
-
-
- -
-

تعلّم دون اتصال بمزامنة مشفرة

-

- نزّل دروسك ومصادرك كاملة واختبر فهمك في أي مكان دون استهلاك باقة الإنترنت. عند عودة الاتصال، تتم مزامنة إنجازك الأكاديمي ودقائق المشاهدة مع الخادم المركزي بشكل موثق. -

-
-
- تشفير محلي متوافق مع معايير آبل -
-
- -
- -
-
- - -
-
- -
-
- سوق المعلمين المنهجي المفتوح -
-

نفس الدرس المنهجي.
أكثر من أسلوب عبقري للشرح.

-

جرّب التبديل التفاعلي بين المعلمين أدناه لنفس درس "الحركة بتسارع ثابت"، وشاهد كيف يتغير أسلوب التوضيح دون أن تفقد نقطة واحدة من تقدمك.

-
- -
-
-
- - - -
-
- -
- -
-
-
أ.ح
-
-

أ. حسام الخطيب

- خبير فيزياء التوجيهي — 18 سنة خبرة -
-
-

- يركز على استنتاج القوانين وفهم المنطق الفيزيائي من الصفر، ممتاز للطلاب الراغبين في بناء أساس هندسي قوي. -

-
- ★ 4.98 (1,420 طالب) - 34 حصة منشورة -
-
- -
-
-
د.ر
-
-

د. رانيا عبد الهادي

- دكتوراه في مناهج الفيزياء الحديثة -
-
-

- تعتمد حل المسائل المكثفة والتدرج من أسهل سؤال في كتاب الأنشطة وحتى أسئلة القدرات العليا بالامتحانات الوزارية. -

-
- ★ 4.95 (980 طالب) - 28 حصة منشورة -
-
- -
-
-
م.خ
-
-

م. خالد القيسي

- مبتكر استراتيجيات الخرائط الذهنية -
-
-

- يربط العلاقات الفيزيائية برسوم بصرية وخرائط مفاهيم تمنع تداخل القوانين في ذهن الطالب أثناء الاختبار. -

-
- ★ 4.91 (810 طلاب) - 22 حصة منشورة -
-
- -
- -
- -
-
- - -
-
- -
-
- حاسبة الشفافية المالية للمعلمين -
-

كل دقيقة شرح نوعية..
لها قيمة نقدية محفوظة بالدينار والفلس.

-

لا رسوم اشتراك على المعلم، ولا نسبة بيع دورات مجحفة. حرك المؤشرات أدناه وشاهد تقدير نصيبك المالي من صندوق المشاهدة المعتمد.

-
- -
- - -
- -
-
- - 350 طالب -
- -
- 20 طالب - 3,000 طالب -
-
- -
-
- - 140 دقيقة -
- -
- 30 دقيقة - 600 دقيقة -
-
- -
-
- 💡 كيف يُحسب الاستحقاق؟
- كل مشترك مؤهل يدفع رسوم اشتراك دورية تذهب مباشرة إلى "صندوق إيراد المحتوى المشترك". تُقسم قيمة الصندوق دورياً على مجموع دقائق المشاهدة المؤهلة بدقة 3 خانات عشرية (0.001 JOD). -
-
- -
- - -
-
العائد الشهري المتوقع للمعلم
-
490.000
-
دينار أردني (JOD) شهرياً
- -
-
- إجمالي الدقائق المؤهلة لحصصك: - 49,000 دقيقة -
-
- القيمة التقديرية للدقيقة المؤهلة: - 0.010 د.أ / دقيقة -
-
- آلية السحب المالي: - CliQ فوري أو تحويل بنكي -
-
- -
- -
-
- -
- -
-
- - -
-
- -
-
- الهوية المنهجية وحزم التعلم الرباعية -
-

لكل درس منهجي..
أربعة أصول معرفية متكاملة.

-

لا يتركك صَقِل تائهاً بين الملخصات غير الموثقة؛ فكل حصة تجمع الفيديو مع المصادر الرسمية الثلاثة الأخرى.

-
- -
- -
-
- - - -
- -
- المبحث المختار: الفيزياء — الفصل الدراسي الأول -
-
- -
- -
-
- -
-

1. فيديو المعلم المعتمد

-

تسجيل مرئي فائق الوضوح ومفهرس زمنياً، مربوط بدليل مرئي من السبورة والمعادلات، بدون حشو أو إطالة مصطنعة.

-
- -
-
- -
-

2. ورقة عمل Markdown

-

تدريبات تفاعلية متدرجة الصعوبة لاختبار الفهم الذاتي بعد المشاهدة، مع تصحيح خادمي فوري وتشخيص للأخطاء.

-
- -
-
- -
-

3. كتاب الوزارة الرسمي (PDF)

-

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

-
- -
-
- -
-

4. الخريطة الذهنية للمفهوم

-

رسم تخطيطي بصري يلخص القوانين والعلاقات الرياضية في صفحة واحدة لاسترجاع الفكرة خلال ثوانٍ قبل الامتحانات.

-
- -
- -
- -
-
- - -
-
- -
-
- المقارنة الجذرية الصريحة -
-

لماذا صَقِل..
وليس منصات البطاقات القديمة؟

-

مقارنة موضوعية تكشف الفارق بين نموذج التعليم القائم على الإتقان وحرية الطالب، ونموذج الاحتكار التجاري للبطاقات.

-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
المعيار التعليمي والماليمنظومة صَقِل (SAQEL)منصات البطاقات (جو، وتد، إلخ)الدروس الخصوصية التقليدية
حرية اختيار المعلم وتغييره✓ مجاناً لكل درس منهجي✗ بطاقة مقفلة لمعلم واحد✗ التزام بمدرس واحد وتكلفة باهظة
التحقق السقراطي من الفهم✓ تشخيص فوري بدقيقة الشرح✗ تلقين سلبي ومشاهدة مسجلة فقط✓ بحسب وقت المعلم الخصوصي
الارتباط الحرفي بكتاب الوزارة✓ توثيق برقم الصفحة والفقرة✗ دوسيات خارجية ومصادر مبعثرة✗ تباين المراجع والأساليب
الشفافية المالية وحساب الأرباح✓ بالدقيقة الموثقة وبدقة الفلس✗ نسب مبهمة وعقود احتكار باقات✗ تسعير عشوائي بالساعة
حفظ الإتقان وسجل الأخطاء✓ سجل سحابي متزامن دون اتصال✗ لا يوجد سجل لتشخيص التعثر✗ غير متوفر برمجياً
التكلفة الإجمالية على الأسرة✓ اشتراك عادل ومتاح للجميع✗ مئات الدنانير لشراء بطاقات كل مادة✗ آلاف الدنانير سنوياً للمواد الأساسية
-
- -
-
- - -
-
- -
-
- موسم الإطلاق التجريبي للصف العاشر والتوجيهي 2026 -
-

لحظة «فهمت الفكرة»..
تستحق أن تكون بمتناول كل طالب أردني.

-

انضم الآن إلى قائمة الوصول المبكر للطلاب وأولياء الأمور والمعلمين المعتمدين، وكن شريكاً في إعادة صياغة التعليم المنهجي.

- -
- -
- -
-
- - -
+

فلسفتنا في ثلاث كلمات

فضول يفتح السؤالتدريب يبني القدرةفهم يترك أثرًا
+
+
01 / فلسفة التعلّم

لحظة «فهمتها»
هي البداية.

المعرفة تتكوّن عندما تسأل وتجرّب وتعود للفكرة.
هذه رحلة التعلّم التي نصمّم صَقِل حولها.

+
+
+ + +
- - - - - +
تصوّر لرحلة التعلّم01 / 03

مساحة للسؤال.

نريد للشرح أن يفتح فضولك، وأن يساعدك على ربط الفكرة بما تعرفه، خطوةً خطوة.

-
- - - - - - +

هذا عرض لفلسفة المنتج، وليس درسًا منشورًا أو نتيجة تعلّم مقاسة.

+
+
+
02 / تجربة صَقِل

تفاصيل تخدم عقلك.

رؤيتنا لتقنية تعليمية تجعل الطريق إلى الفهم أوضح، وتمنح كل خطوة هدفًا ومصدرًا.

+
+
حرية في التعلّم01 ↗

فكرة واحدة.
أكثر من طريق للفهم.

نصمّم تجربة تتيح تنوّع شروحات المعلمين للدرس المنهجي نفسه، بحسب الحصص المتاحة لك.

+
معرفة لها مرجع02 ↗

الدرس متصل
بمصادره.

كتاب، ورقة عمل، وخريطة ذهنية. نعمل على ربط موارد كل درس بمنهجه ونسخته المعتمدة.

+
تقنية تخدم التفكير03 ↗

السؤال المناسب.
في سياق الدرس.

نتطلّع إلى مساعدة ذكية مرتبطة بمحتوى الدرس، تمنحك تلميحًا يقودك إلى التفكير والمحاولة.

+

هذه ملامح التجربة المستهدفة. يتحدد المتاح فعليًا داخل البوابة بحسب المحتوى المنشور وصلاحية الوصول.

+

نؤمن أن التقنية تكون أقوى
عندما تجعل تفكيرك أعمق.

المعلم في قلب العملية، والمحتوى هو المرجع، والطالب شريك في بناء فهمه. هذه المبادئ تقود ما نبنيه.

+
+
03 / منظومة تتكامل

طموح مشترك.
ولكل دور، مساحة.

تبدأ رحلة التعلّم بالطالب، وتتكامل بخبرة المعلم ومساندة الأسرة والمدرسة.

+
01 / LEARN

للطالب الفضولي

ادخل بوابتك، وتعرّف على المواد والموارد المتاحة لحسابك. اجعل سؤالك القادم خطوةً نحو فهم أعمق.

بوابة الطالب
02 / INSPIRE

للمعلّم الملهم

لخبرتك وطريقتك في الشرح قيمة. استوديو المعلم هو مساحتك للعمل على محتواك ومتابعة رحلتك على المنصة.

استوديو المعلم
+
+
وضوح من البداية

قبل أن تبدأ.

إجابات قصيرة عن صَقِل وما نبنيه.

ما هي صَقِل؟

منصة تعليمية قيد التطوير والتحقق. نبني تجربة تربط الدرس المنهجي بالشرح والتدريب والمراجعة، مع بداية مركّزة على الصف العاشر.

هل كل ما يظهر هنا متاح الآن؟

تعرض هذه الصفحة رؤية المنتج، إلى جانب روابط البوابات الموجودة. المشاهد البصرية توضيحية، ويعتمد توفر الدروس والموارد والميزات داخل المنصة على النشر والصلاحيات واكتمال التحقق.

هل يمكنني اختيار المعلم؟

هذا جزء من التجربة المستهدفة: الاختيار بين الحصص المتاحة للدرس نفسه عند تعدد المعلمين. لا يعني ذلك أن لكل درس عدة شروحات منشورة الآن.

كيف أعرف المواد المتاحة وشروط الوصول؟

ابدأ من بوابة الطالب للتحقق مما يظهر لحسابك. لا تعرض هذه الصفحة أسعارًا أو باقات معتمدة، ولا تفترض توفر مادة أو اشتراك قبل ظهور تفاصيلهما الفعلية داخل المنصة.

+
لكل عقل أفق يستحقه

فضولك يستحق خطوة.

تعرّف على صَقِل من الداخل، واكتشف المتاح لك اليوم، ونحن نبني تجربة تعليمية تليق بطموحك.

إلى بوابة الطالب
+ +