عندما كنت متدربا في Akemax، كان أحد الأشياء التي لفتت انتباهي هو مقدار التقارير اليومية التي كانت لا تزال تعتمد على الورق. إذا احتاج شخص ما في أرضية المصنع إلى تقديم تقرير، كان عليه النزول إلى الطابق السفلي، وأخذ نموذج ورقي، وملئه يدويا، وتسليمه. كان الأمر يعمل، لكنه كان بطيئا ومعطلا. كنت أفكر باستمرار: لماذا لا نضع النماذج على خادم؟
ظلت هذه الفكرة عالقة في ذهني. الأشخاص الذين يستخدمون هذه النماذج ليسوا مبرمجين. لا يريدون تثبيت برامج أو إنشاء حسابات أو تعلم أداة جديدة. يحتاجون فقط إلى ملء نموذج والعودة إلى العمل. لذا كان يجب أن يكون ما أبنيه بسيطا للغاية - افتح رابطا، اختر نموذجا، املأه، أرسله.
من هنا جاء RTR (Real-Time Reporting).
الخطوة 1: ما الذي يفعله RTR فعلا
بمجرد تشغيل التطبيق، يعمل على سطح مكتب المسؤول وينشئ خادما محليا. يمكن للمستخدمين على نفس الشبكة زيارة رابط المسؤول والوصول إلى صفحة النماذج، حيث يمكنهم اختيار نموذج وإدخال التاريخ والمعلومات المطلوبة وإرساله.
من تطبيق الإدارة، يمكن للمسؤول عرض النماذج المرسلة وإنشاء أو تعديل النماذج حسب الحاجة.
# The architecture in a nutshell:
┌─────────────────────┐ IPC only ┌──────────────┐
│ Admin Panel (UI) │ ◄──────────────► │ Main Process│
│ Electron Window │ │ (Node.js) │
└─────────────────────┘ └──────┬───────┘
│
┌──────┴───────┐
│ Express HTTP │
│ Port 8080 │
│ LAN only │
└──────┬───────┘
│
┌─────────────────┼─────────────────┐
│ │ │
Phone/Tablet Desktop PC Any Browser
on the LAN on the LAN on the LAN
الخطوة 2: لماذا لا توجد حسابات مستخدمين
بدلا من استخدام حسابات مستخدمين فردية، يسجل RTR عنوان MAC للجهاز المستخدم لإرسال كل نموذج. نظرا لأن الشركات عادة ما يكون لديها عدد ثابت من الأجهزة المتصلة بشبكتها، فإن هذا يوفر طريقة بسيطة لربط عمليات الإرسال بجهاز معين دون مطالبة الموظفين بتسجيل الدخول.
قررت اتباع هذا النهج لأنه، بروح النماذج، يجب أن يتمكن أي شخص من أخذ نموذج وملئه دون الحاجة إلى إنشاء حساب أو تسجيل الدخول أولا.
الخطوة 3: الأمان عبر الشبكة
صمم RTR خصيصا للاستخدام على الشبكات الداخلية. لا يقبل اتصالات من خارج الشبكة المحلية، لذا فإن أمانه يعتمد بشكل أساسي على أمان الشبكة التي يعمل عليها.
لوحة الإدارة نفسها هي نافذة Electron أصلية تتواصل حصريا عبر الاتصال بين العمليات - لا يفتح أي مقبس شبكة لها أبدا، مما يجعلها غير قابلة للوصول من LAN بغض النظر عن إعدادات جدار الحماية. يرتبط خادم النماذج فقط بمحول الشبكة المواجه لـ LAN ويقيد الوصول إلى عناوين IP أو نطاقات CIDR المدرجة في القائمة البيضاء.
الخطوة 4: الميزات الرئيسية
- منشئ النماذج - إنشاء وتعديل نماذج التقارير بأنواع أسئلة مختلفة
- متصفح الإرسالات - عرض وتصفية والبحث في الردود المجمعة
- تصدير CSV - تصدير الإرسالات للتحليل في Excel أو Google Sheets أو أي أداة بيانات
- القائمة البيضاء لعناوين IP - التحكم بدقة في الأجهزة التي يمكنها الوصول إلى النماذج وإرسالها
- تتبع الأجهزة - تسجيل عناوين MAC يربط الإرسالات بالأجهزة
- محلي بالكامل - جميع البيانات تبقى في SQLite على جهاز المسؤول، لا حاجة للسحابة
الخطوة 5: المكدس التقني
بني RTR باستخدام:
- Electron - غلاف سطح مكتب أصلي للوحة الإدارة
- Node.js + Express - خادم HTTP خفيف لتوزيع النماذج
- SQLite - قاعدة بيانات محلية بدون إعداد
- NSIS - تغليف مثبت Windows
الخطوة 6: التحميل
تحميل RTR v0.1.0 (Windows x64)
أو انسخ المستودع وابنه من المصدر:
git clone https://github.com/petermurrayx/RTR--Real-Time-Reporting.git
cd RTR--Real-Time-Reporting
npm install
npm start # development mode
npm run build # build the installer
ملاحظة: المثبت مخصص لنظام Windows 10/11 (x64). عند التشغيل لأول مرة، سيطلب جدار حماية Windows السماح بالوصول إلى LAN - اقبل ذلك حتى تتمكن الأجهزة الأخرى من الوصول إلى خادم النماذج.
على الرغم من أن هذا لا يستخدم أي تقنيات ذكاء اصطناعي جديدة رائعة، إلا أنه يذكرني بالسبب الذي دفعني لدراسة علوم الحاسوب في الأساس: استخدام التكنولوجيا لجعل حياة الناس أسهل، ومساعدتهم على العمل بكفاءة أكبر، وإنجاز المهام.
إذا كان لديك بعض الوقت الفارغ، ألق نظرة عليه. المشروع مرخص بموجب MIT، لذا يمكن لأي شخص استخدام الكود أو تعديله.