السياق
تجربة واجهة ويب الحالية تعتمد بشكل أساسي على النصوص، وتعتمد على ردود الأوامر بنمط المراسلة. يوضح هذا الاقتراح واجهة رسومية حديثة تتضمن مخططات، كتب الطلبات، الأرصدة، الأوامر المفتوحة، نماذج معلمات التداول، ولوحات تحكم تدعم الوحدات. القاعدة المعمارية الأساسية هي أن واجهة ويب لا تتصل أبدًا مباشرة بالمنصات؛ يجب أن تتدفق جميع البيانات من واجهة برمجة تطبيقات البوت.
نماذج النشر
يُقترح نموذجان للنشر. الأول هو واجهة ويب مخصصة مُستضافة ذاتيًا تُقدَّم كشراء لمرة واحدة. في هذا النموذج، يقوم المشغل بتشغيل واجهة ويب وراء HTTPS عبر وكيل عكسي. تحافظ واجهة ويب على سجل أسطول من البوتات، وتستخدم private_webui_secret_key مشتركة لتوقيع رموز JSON (JWT) بعد تسجيل دخول المشغل، وتشمل المستخدمين المحليين والمصادقة الثنائية. تتواصل خادم واجهة ويب مع كل بوت باستخدام طلبات HTTP مباشرة إلى نقاط النهاية /api/v1/*، مما يسمح لعنوان ويب واحد بإدارة عدة بوتات عبر علامات تبويب.
النموذج الثاني هو واجهة ويب عامة مشمولة باشتراك. يُصادَق على المستخدمين من خلال خدمة دفع ومصادقة خارجية، ثم يضعون رمز ترخيص في إعدادات بوتاتهم. يقوم البوت بإنشاء اتصال صادر إلى وسيط عام، مما يلغي الحاجة إلى منفذ داخلي للبوت. تنتقل طلبات المتصفح عبر واجهة ويب العامة والوسيط إلى البوت عبر نفق واجهة برمجة تطبيقات واحد إلى واحد. ويقتصر نطاق الترخيص على منصة تداول واحدة وزوج تداول واحد لكل ترخيص.
نطاق المنتج الأدنى القابل للتطبيق
يركز المنتج الأدنى القابل للتطبيق على السيناريو الخاص المُستضاف ذاتيًا. يتضمن بناء مكدوس جديد باستخدام Vite وReact 18، دون دعم واجهة ويب القديمة. يشمل التنفيذ طبقة تجريديّة للنقل، تبدأ بـ DirectHttpTransport تليها RelayWsTransport. يتم تشغيل واجهة المستخدم عبر طلب GET /bot، حيث تُحدّد قدرات البوت كتل واجهة المستخدم المرئية. تُدار المعلمات عبر أحداث WebSocket params:updated جنبًا إلى جنب مع REST. تعتمد بيانات السوق والحسابات على استطلاع REST بفترة أولية تبلغ حوالي 10 ثوانٍ، مع خطط لإرسال البيانات من ذاكرة التخزين المؤقتة للبوت لاحقًا.
أهداف غير مدرجة
يستثني هذا النقاش بشكل صريح تفاصيل تنفيذ الدفع والفوترة، وكذلك تصميم واجهة برمجة تطبيقات البوت، والتي تُغطى في مناقشة مصاحبة. سيتم فتح قضية تتبع في مستودع adamant-tradebot-webui مع الإشارة إلى هذا الاقتراح.