لوحة_التحكم
أول_شيء_تراه_عند_تسجيل_الدخول،وبصراحة_الصفحة_التي_ستتركها_مفتوحة_طوال_اليوم.
صفحة_الوصول(/،_Components/Pages/Index.razor)_هي مركز_قيادة_مباشر_ومتقدم_للهاتف
لنشاط_المستخدم_المسجل_الدخول_عبر_عمليات_cBot_واختبارات_backtest_والموارد_و(للمديرين)عنقود
العقدة.تتحدث_ذاتها،_تبدو_رائعة_على_الهاتف،_ولا_تجبرك_أبداً_على_الضغط_على_F5.
ماذا_تعرض
من_الأعلى_إلى_الأأسفل،مرتبة_حسب_الأولوية_للهاتف(كل_كتلة_هي_عنصر_تخزين_بعرض_كامل_ على_الهاتف،_شبكة_متجاوبة_على_الكمبيوتر_اللوحي/سطح_المكتب):
- الرأس —العنوان،مؤشر_مباشر(نقطة_نابضة_حقيقية؛ثابت_تحت
prefers-reduced-motion)،_وقت_آخر_تحديث،_و تبديل_الفترة (1H · 24H · 7D · 30D) الذي_يشغل_KPIs_والرسم_البياني. - KPIs_البطلة —أربع_بطاقات_سريعة_القراءة،كل_واحدة_رقم_كبير+
خط_بياني_SVG_مدمج،و(حيث_مجدي) الفرق_مقابل_الفترة_السابقة:
- نشط_الآن —_التشغيلات_واختبارات_backtest_الحالية_التي_تبدأ/تعمل.
- معدل_النجاح —المكتمل÷(المكتمل+_الفاشل)_على_الفترة؛_الفرق_بالنقاط_المئوية.
- مكتمل —_التشغيلات/اختبارات_backtest_المكتملة_هذه_الفترة؛_الفرق_مقابل_الفترة_السابقة.
- فشل —_الإخفاقات_هذه_الفترة؛الفرق(أقل_أفضل،_لذا_الانخفاض_يظهر_أخضر).
- رسم_النشاط_البياني —خط_زمني_مساحي_ApexCharts_للبدايات/الاكتمالات/الإخفاقات لكل_دلو_زمني.
- حلقة_حالة_Instance —قائمة_دائرية_للتشغيل/ backtests/ المعلق/ المكتمل/ الفاشل، الإجمالي_في_المركز.
- اختبارات_Backtest —لوحة_ثلاثية(قيد_التشغيل_/ مكتمل/ فاشل)،انقر_إلى
/backtest. - نسخ_التداول —_ملفات_نسخ_التداول_مع_نقطة_حالة_مباشرة،_عدد_الوجهات،_و علامة_Live
على_الملفات_القيد_التشغيل؛انقر_إلى
/copy-trading. - وكلاء_AI —وكلاء_التداول_المدفوعون_بالشخصية_مع_حالة_التشغيل(المحرف_·الحالة)
ووقت_آخر_إجراء؛انقر_إلى
/agent-studio. - تدفق_النشاط_المباشر —أحدث_20_حدثاً(الأحدث_أولاً)مع_نقطة_ملونة_حسب_الحالة ووقت_نسبي.
- صحة_العنقود (المديرون_فقط) —_العقد_النشطة_مقابل_الإجمالية_ومقياس_الاستخدام.
- مربعات_الموارد —cBots،_حسابات_التداول،معرفات_cTrader،مفاتيح_MCP (انقر_إلى_صفحاتها).
تخصيص_لوحة_التحكم_الخاصتك
كل_كتلة_أعلاه_هي ** أداة_تحكمها**.اضغط تخصيص (أعلى_يمين_الرأس)لفتح حوار_حيث تظهر/تخفي أي_أداة_و إعادة_ترتيبها بالأسهم_لأعلى/لأسفل. إعادة_الضبط_ إلى_الافتراضييستعيد_ترتيب_الكتالوج.اختياركيُخزن_في_الخادم_لكل_مستخدم، لذا_يتبعك_عبر_المتصفحات_والأجهزة_—_ليس_هذا_التبويب_فقط.
- الأدوات_المحصورة_بالميزات_والمديرين_فقط_(نسخ_التداول،وكلاء_AI،صحة_العنقود) تظهر_فقط_في_الحوار_عندما النشر/الدور_يسمح_بها.
- كتالوج_الأدوات_مصدر_حقيقة_واحد_في_
Core/Dashboard/DashboardWidgets.cs؛التقديم (التسمية_الأيقونة_التوفر)يعيش_فيComponents/Dashboard/DashboardWidgetMeta.cs.
كيف_تبقى_مباشرة
الصفحة_تستعلم_GET /api/dashboard/overview?period=<1h|24h|7d|30d>كل_10_ثوانٍ_وتعيد
عرض_الأدوات_في_مكانها_—_لا_إعادة_تحميل_يدوية.خطأ_الاسترجاع_العابر_يُبلع_ويُعاد
في_العلامة_التالية؛_الحلقة_تتوقف_بشكل_أنيق_عند_التخلص.التحميل_الأول_يظهر_هيكلاً؛
فشل_مستمر_يعرض_بطاقة_خطأ_مع إعادة_المحاولة؛مستخدم_بدون_بيانات_يرى_KPIs_صفرية
ونص_حالة_فارغة.
الواجهة_الخلفية
Endpoints/DashboardEndpoints.csتعين/overview(وتحتفظ_بالنظير_القديم/stats).هي_لكل_مستخدم_ومحصورة_بالميزات_عبرICurrentUser؛الساعة_تأتي_منTimeProvider._ كما_تعين_GET/PUT /api/dashboard/layout_—_تخطيط_أدوات_المستخدم،محمل_عند_بدء الصفحة_ومحفوظ_من_حوار_التخصيص.- استمرار_التخطيطهو_المجموع
UserDashboard(Core/Dashboard/UserDashboard.cs):_ لوحة_واحدة_لكل_مستخدم_(فريدة_على_UserId)،تمتلك_قائمة_مرتبة_من_إعدادات_الأدوات (مرئية_ترتيب)مخزنة_كعمودjsonb.القائمة_المرتبة_تتغير_فقط_عبرApply/Reset, اللذين_يتحققان_من_كل_مفتاح_مقابل_كتالوجDashboardWidgetsويحافظان_على_اكتمال القائمة_وإزالة_التكرار.المفاتيح_غير_المعروفة_ترفض_بـDomainException→_400. Endpoints/DashboardQuery.csيبني_نموذج_القراءةDashboardOverview:لقطة_حالة كل_الوقت_(العد_المجموعات)،مجموعة_نافذة_من_الحالات_المادية_مرة_واحدة،وعد_الموارد/العقد. حالة_الحالة_وطوابع_الوقت_الطرفية_تعيش_على_أنواع_TPH_الفرعية(وليس_الأعمدة)، لذا_الصفوف_تُقرأ_في_الذاكرة_عبر_مساعدي_InstanceEndpoints.GetStartedAt/GetStoppedAtالمشاركين. وقت_الحدث_=_stopped ?? started ?? created.Endpoints/DashboardModels.csholds the DTOs،خطة_الفترة→(نافذة،عد_الدلو) و_DashboardMath_ —الرياضيات_النقية_الحتمية_لـ_التجميع_و_KPI/الفرق(لا_I/O،nowيُمرر). فروق_KPI_تقارن_النافذة_الحالية_بالنافذة_السابقة_فوراً(الاستعلام_يجلب_نافذة_مزدوجة_لهذا). لا_توجد_تغذية_حيّة_لحساب_P&L_—المنصة_لديها_حقوق_فقط_لـ_اختبارات_backtest وتتبع_prop-firm_—لذا_لوحة_التحكم_مُخصصة_بشكل_متعمد تشغيلية(النشاط، الإنتاجية،معدل_النجاح)،_وليس_مؤشر_أرصدة_الوسيط.
التصميم_و_الرموز
كل_اللون_ياتي_من_رموز_التصميم_(var(--app-success|-warning|-error|-info|-primary|-text*))،
لذا_لوحة_ألوان_العلامة_البيضاء_تتدفق_مجاناً—بما_في_ذلك_الرسم_البياني_الذي_تُقرأ
ألوان_السلسلة_من_الرموز_المحلولة_في_وقت_التشغيل_عبر_window.appReadTokens
(SVG_لا_تستطيع_استهلاك_متغيرات_CSS_مباشرة).لا_رمز_سداسي_محدد_في_أي_مكان
في_لوحة_التحكم.انظر../ui-guidelines.md.
رابط_"مدعوم_بواسطة_cMind"_
تعرض_لوحة_التحكم_رابطاً_صغيراً_أنيقاً "مدعوم_بواسطة_cMind"يشير_إلى_موقع
التوثيق_هذا.يتم إظهاره_افتراضياً—نحن_فخورون_بالشروع_ويساعد_المتداولين_الأخرىين
في_العثور_عليه_—لكن_الأمر_بيدك_كلياً.معادو_التسويق_الذي_يشغل_نسخة_مؤشرة
كلياً_بـ_علامة_بيضاء_يعكسونApp:Branding:ShowSiteLink_
إلى_false_ويختفي.انظرتحديد_العلامة_البيضاء.
الاختبارات
- وحدة_النمط (
tests/IntegrationTests/DashboardMathTests.cs)_—_التجميع،معدل النجاح،_فروق_الفترة_السابقة،تحليل_الفترة،فارغ/حدود(حدث_عندnow،_حراسة_القسمة_على_صفر). - وحدة (
tests/UnitTests/Dashboard/UserDashboardTests.cs)_—المجموعUserDashboard: بذرة_افتراضية،_تطبيق_ترتيب/رؤية،_إلحاق_محذوف،_انهيار_التكرار،_رفض_مفتاح_غير_معروف،_إعادة_ضبط. - تكامل (
tests/IntegrationTests/DashboardQueryTests.cs،DashboardLayoutTests.cs)—نموذج القراءة_مقابل_Postgres_الحقيقي_(الحالة/KPIs/النشاط/الموارد،صحة_عقد_المسؤول،مسار المستخدم_الفارغ)،أقسام_backtests/copy-profiles/agents_الجديدة،ورحلة_ذهاب_وإياب للتخطيط(حفظ_تخطيط_مخصص_→إعادة_تحميل→_الترتيب_والرؤية_مستمران). - E2E (
tests/E2ETests/DashboardTests.cs،DashboardCustomizeTests.cs)—كمبيوتر مكتبي_+ هاتف:بطاقات_KPI،الرسم_البياني،الحلقة_وتغذية_تعرض؛تبديل_الفترة يبديل_الفترة_النشطة_ويُعيد_التحميل؛نقر_KPI_يفتح_إلى/run؛ **إخفاء_أداة_يستمر عبر_إعادة_التحميل**، إعادة_الضبطيعيدها،وتعمل_حوار_التخصيص_على_الهاتف without_overflow_الأفقي./أيضاً_فيPageSmokeTests،MobileLayoutTests(shell+_no-overflow)وMobileJourneyTests.