لقد نشرنا مؤخرًا طلبًا للمحاسبة للاتصالات في المنطقة بموجب ترخيص Apache 2.0 المجاني. نفذت على IONDV. Framework - حل مفتوح المصدر يعتمد على node.js للتطوير السريع لتطبيقات الويب. التواصل في المناطق هو شرط مهم لتنمية الأرض وحياة مريحة. سيكون مثالا على أساس إقليم خاباروفسك. وعلى الرغم من أن أراضينا قابلة للمقارنة مع إسبانيا والبرتغال مجتمعين ، فستبقى في منطقة البلطيق بأكملها (لن نمزح بشأن الدببة في شوارع خاباروفسك - ستجد مقاطع فيديو على Youtube بنفسك) ، ولكن لا يزال لدينا اتصالات خلوية والإنترنت في المناطق النائية المأهولة بالسكان في المنطقة ، أو جودتها يترك الكثير مما هو مرغوب فيه. التطبيق قابل للتطبيق في أي مكان ومتاح للاستخدام دون قيود.
كيفية تحليل الوضع الحالي للاتصال؟ كيف نفهم بسرعة المناطق المشكلة؟ كيف تخطط للتطور اللاحق للاتصالات في المنطقة؟ إنشاء حل من نوع السجل للحفاظ على معلومات الصناعة وإعداد التقارير التحليلية على أساسها وصياغة خطط التطوير.

تطبيق ويب الاتصالات
IONDV. الاتصالات ، أو كما نسميها في فريق ، الاتصالات هي حل برمجيات قائم على IONDV. إطار عمل ، تم تنفيذه لتنظيم وتسجيل وتخزين وعرض البيانات حول مدى توفر خدمات الاتصالات (الإنترنت ، الاتصالات المتنقلة ، التلفزيون ، البريد ، إلخ) في المناطق المأهولة بالسكان في المنطقة ، بما في ذلك توفر الاتصالات في مرافق قطاع الرعاية الصحية والتعليم. التطبيق متاح للجمهور على جيثب . تقليديًا ، بالنسبة إلى جميع المستودعات الموجودة في جيثب ، هناك تعليمات في مستودع README ، لكننا نشرنا أنظمة تجريبية للمراجعة ، دون تسجيل: https://telecom-ru.iondv.com .
يمكنك أيضًا مشاهدة لقطة فيديو قصيرة فقط على هذا العرض التوضيحي.
بعض التفاصيل الفنيةيتم نشر العرض التوضيحي على الخادم مع 2 من النوى وحدة المعالجة المركزية و 2 غيغابايت من الذاكرة في سحابة ياندكس. وعلى هذا الجهاز الظاهري هناك العشرات من هذه التطبيقات التجريبية. لقد اختبرنا نظامًا مشابهًا على نفس المورد في مقال آخر - "تجربة في تنفيذ برنامج المشروع الاجتماعي" تذكر الجميع "لفتح المصدر
" Https://habr.com/en/post/451092/ - تلقى ما يصل إلى 400 طلب في الثانية الواحدة. يحتوي نظام الاتصال على المزيد من البيانات الوصفية - ما يصل إلى 3-4 مستويات عمق.
على سبيل المثال ، يحتوي كائن الاتصال على 10 كيانات ذات صلة (الخلوية ، والإنترنت ، والبريد ، والتلفزيون ، إلخ). كل منها من 3-5 أكثر - بالنسبة للاتصال الخلوي ، فهو معيار ، ونوع الاتصال ، والمشغل ، والتسوية ، وما إلى ذلك ، والمشغل لديه أيضا تداخل.
ولكن حتى في هذه الموارد ، فإنه يتصرف بشكل سريع الاستجابة ، على الرغم من أن MongoDb ليس جيدًا جدًا لجلب البيانات ذات الصلة. لقد اتخذنا المقاييس - للحصول على 10 كائنات في القائمة (التي تم فيها عرض البيانات بما في ذلك البيانات ذات الصلة) ، تم إجراء ما يصل إلى 1000-1500 استفسار إلى قاعدة البيانات. في الوقت نفسه ، يتراوح الوقت القياسي للمستخدم في المتصفح بين 600 و 700 مللي ثانية.
ويستند التطبيق على تكنولوجيا IONDV. الإطار. هذا هو إطار عمل node.js مفتوح المصدر لإنشاء تطبيقات ويب عالية المستوى تعتمد على بيانات التعريف ، والتي لا تتطلب مهارات برمجة جدية. جوهر الإطار هو نموذج بيانات مستقل ، واجهات برمجة التطبيقات لـ kernel ، ووحدات الوظائف ، وقوالب العروض التقديمية. يستخدم MongoDb لنظام إدارة قواعد البيانات - فهو يخزن إعدادات التطبيق والبيانات الوصفية والبيانات نفسها. يعمل الإطار في Node.js. كل ذلك يوفر إطار عمل عبر منصة.
بالمناسبة ، هذا التطبيق هو مفتاح الإطار - فقد بدأ الاستغلال الإنتاجي للنسخة الجديدة على node.js باستخدام mongoDB. إجمالاً ، استغرق تطوير المكونات الإطارية للمشروع (الوحدة الجغرافية ، وتنقيح وحدة التقرير) وبيانات التطبيق الأولية 2643 ساعة.
قليلا عن مبدأ إنشاء تطبيق على الإطار. كل شيء بسيط جدًا - إطار + وحدات + بيانات وصفية = تطبيق. نهج تطوير التطبيق السريع في التنمية.
الوظيفة الأساسية لمعظم تطبيقات IONDV. يقوم Framework بتجميع سجل بيانات - وحدة التسجيل. هذه وحدة رئيسية مصممة خصيصًا للعمل مع البيانات بناءً على هياكل البيانات الأولية.
وبشكل أساسي ، فإن إطار التطبيق هو هياكل البيانات الشرحية التي يتم تشغيلها لوحدة التسجيل. كما أنه أمر رائع بالنسبة للنماذج الأولية السريعة للتطبيق - تنفيذ منطق العمل الأساسي.
في الوقت نفسه ، يتم توسيع كل شيء لا يتوافق مع السلوك النموذجي للنظام من خلال قوالب HTML أو كتابة وحدات جديدة في JavaScript. في الوقت نفسه ، هناك وحدة نمطية للبوابة تكون أكثر ملاءمة لعمل واجهات متخصصة باستخدام أي إطار أمامي مناسب.
أيضا في هذا التطبيق تستخدم:
- وحدة التحليلات للإبلاغ ،
- وحدة لوحة القيادة لعرض المعلومات في شكل الحاجيات ،
- وحدة بيانات جغرافية لعرضها على خريطة المستوطنات مع بيانات عن الصناعات التي يتم تنظيمها يدويًا ،
- وحدة إدارية لإدارة المستخدمين والوصول إلى الأدوار. لوحة تحكم المشرف.
في تطبيق IONDV. تُستخدم وحدة سجل الاتصالات لإنشاء الكيانات الرئيسية للنظام والعمل عليها - في البيانات الوصفية تسمى الفصول: المجتمع ، والاتصالات ، والرعاية الصحية والتعليم ، فضلاً عن المعلومات الأساسية والإضافية.
أمثلة الكيان الرئيسي
على سبيل المثال ، منطقة تحتوي على معلومات حول المنطقة ويتم استخدامها لاحقًا لربط جميع الكيانات المحاسبية - على سبيل المثال ، الاتصالات أو المرافق التعليمية. لقطة الشاشة تظهر شكل الشاشة.

وهنا جزء من البيانات الوصفية بتنسيق JSON.
{ "isStruct": false, "key": [ "okato" ], "semantic": "name", "name": "naselenniyPunkt", "version": "", "caption": " ", "ancestor": null, "container": "", "creationTracker": "", "changeTracker": "", "history": 0, "journaling": true, "compositeIndexes": null, "properties": [ { "orderNumber": 10, "name": "okato", "caption": "", "type": 0, "size": 11, "decimals": 0, "allowedFileTypes": null, "maxFileCount": 0, "nullable": false, "readonly": true, "indexed": true, "unique": true, "autoassigned": false, "hint": null, "defaultValue": null, "semantic": null, "selConditions": [], "selSorting": [], "selectionProvider": null, "indexSearch": false, "eagerLoading": false, "formula": null }, { "orderNumber": 30, "name": "name", "caption": "", "type": 0, "size": 128, "decimals": 0, "allowedFileTypes": null, "maxFileCount": 0, "nullable": true, "readonly": false, "indexed": true, "unique": false, "autoassigned": false, "hint": null, "defaultValue": null, "semantic": null, "selConditions": [], "selSorting": [], "selectionProvider": null, "indexSearch": false, "eagerLoading": false, "formula": null },
بالمناسبة ، يمكن توريث فئات بيانات التعريف. بالنسبة لهم ، يتم تعيين طرق العرض بشكل منفصل والتي تختلف في الخطوات المختلفة للعمليات التجارية وأكثر من ذلك بكثير. خاصية الخصائص تسرد قائمة السمات. معرفة المزيد عن البيانات الوصفية. يمكنك أيضًا إنشاء بيانات التعريف في تطبيق Studio أو عن طريق النشر محليًا من جيثب - وهو متاح أيضًا بموجب ترخيص Apache 2.0 المجاني.
يتم تحديث بيانات الكيان بسهولة. على سبيل المثال ، بالنسبة لمؤسسة تعليمية ، بعد إدخال البيانات في السمات الأساسية وإنشاء الكائن ، تظهر علامة التبويب "معلومات إضافية". في رأينا ، الأكثر إثارة للاهتمام هو تنفيذ السمة من نوع "البيانات الجغرافية". في لقطة شاشة لبطاقة الكائن ، التعليم عبارة عن خريطة. يتم استبدال عنوان الكائن من النموذج وسيحدد النظام الإحداثيات تلقائيًا. يتم تخزين البيانات في هذه السمة في GeoJSON - أي يمكن أن يكون أي كائن في هذا التنسيق - ليس فقط نقطة ، ولكن أيضًا مضلع أو خط.

سنوضح تشغيل الوحدة الأكثر بديهية - Geomap أو geodata module - تستخدم واجهة برمجة تطبيقات Yandex لعرض البيانات. يمكنك اختبار العرض التوضيحي هنا ، وسنخبرك بما يظهر.

على اليسار توجد طبقات الخريطة ، حيث يتم تحديد طبقة "التسويات" افتراضيًا. على الخريطة ، يمكنك النقر على أيقونة القرية. نتيجة لذلك ، تظهر البطاقة على اليمين مع معلومات حول وجود المعلومات والاتصالات فيها.
يمكنك الانتقال إلى طبقة "التواصل عن طريق التسويات" وسيتم عرض البيانات الموجزة على مناطق المنطقة المحسوبة في الوحدة النمطية التحليلية على اليمين. إذا قمت بالنقر نقرًا مزدوجًا على منطقة ما - سيتم عرض بيانات المنطقة فقط - سيتم تشغيل الفلتر. إذا قمت بالنقر نقرًا مزدوجًا على المنطقة مرة أخرى - فستعود الخريطة العامة.
يتم تحديد المعلومات حول الطبقات وكذلك كيفية الحصول على البيانات في شكل بيانات وصفية في JSON. طريقة لعرض كقالب HTML
مثال لجزء حول نافذة منبثقة مع معلومات مختصرة من البيانات الأولية لطبقة 2G.
"balloonContentLayoutClass" : "<div class='map-ajax-balloon' data-url='geomap/render/khv-svyaz-info/2gMobileKray/0/{{ properties.itemId }}?template=geo/balloon/2gMobile'><i class='fa fa-refresh fa-spin'></i></div>"
مثال على قالب EJS مع عرض جميع بيانات الهاتف المحمول في النافذة اليمنى. في ذلك ، يتم توفير الوصول إلى البيانات من خلال العمل مع كائن العنصر وخصائصه:
<% let result = { title: item.get('name') } if (item.get('chislennost')) { result.title += ' (' + item.property('chislennost').evaluate() + ' .)'; } let itemSvyaz = item.property('svyaz').evaluate(); if (itemSvyaz) { %> <ul class='balloon-attrlist' style='width:225px'> <li><%- result.title %></li> </ul> <ul class='mt10'> <table> <% let coll = itemSvyaz.property('mobile').evaluate(); if (coll && coll.length) { for (let elem of coll) { let collOp = elem.get('mobileOperator'); let collSt = elem.property('mobileStandart').evaluate(); if (collOp) { %> <tr> <td> <li><%- elem.property('mobileOperator').evaluate() %></li> </td> <td><% for (let element of collSt) { %> <%- element %> <% } %> </a></td> </tr> <% } } } } %> </table> </ul>
يمكن تحميل البيانات من النظام للتحليلات في نظام BI. على سبيل المثال ، قمنا بالتكامل مع QlickView. لتبسيط عمل المحللين ، لم يستخدموا نظام REST-API ، لكنهم قاموا بتوصيل QlickView مباشرة بـ DBMS من خلال MongoDB Connector - مضاهاة SQL عالية الجودة لهذه المهام.
كيف تحصل؟
ضمن Linux ، يمكنك تثبيت التطبيق في سطر واحد ، إذا تم تثبيت git و node.js و mongodb محليًا باستخدام أداة تثبيت التطبيق iondv . سيقوم البرنامج النصي بتثبيت تبعيات البيئة ، واستنساخ جميع المستودعات الضرورية للإطار والوحدات والتطبيقات من GitHub ، وجمع وبدء التطبيق وإطلاقه:
bash <(curl -sL https://raw.githubusercontent.com/iondv/iondv-app/master/iondv-app) -q -i -m localhost:27017 telecom-ru
حيث بدلاً من المضيف المحلي: 27017 ، تحتاج إلى تحديد عنوان MongoDb.
يمكنك أيضًا تشغيل حاوية الإرساء:
# mongodb: docker run --name mongodb -v mongodb_data:/data/db -p 27017:27017 -d mongo # IONDV. Telecom docker run -d -p 80:8888 --link mongodb iondv/telecom-ru
بعد البدء ، افتح الرابط http: // localhost: 8888 حيث يتم عرض البيانات التجريبية على المحدد الجغرافي. وفي الموقع http: // localhost: 8888 / registry ، سيكون المكتب الخلفي متاحًا مع الحساب التجريبي وكلمة المرور ion-demo .
انظر أيضًا دليل مستخدم التطبيق .
ما هي الايجابيات؟
والميزة الرئيسية لسجل الاتصالات IONDV. الاتصالات هي تمثيل مرئي لحالة تطور قطاع الاتصالات في المنطقة ، مما يسمح بالتخطيط لتحسين نوعية البنية التحتية للاتصالات ، وكذلك توفير هذه البيانات في المجال العام.
يعتمد حل الاتصالات المحاسبية على إطار عمل IONDV مفتوح المصدر. الإطار ، وهذا هو شفرة جافا سكريبت مفتوحة المصدر وهيكل بيانات أولية مفتوح في JSON ، مما يعني حرية كاملة للصقل. تقريبا كجزء من أباتشي 2.0). يمكنك بالتأكيد إصلاح وتحسين وبيع. على الرغم من أن المحرك لا يحتاج إلى موارد - فهو رائع لتطوير تطبيقات أعمال موثوقة من مختلف الأحجام.