Integrace dat z externích systémů měst a městských společností
Systém bude zpracovávat real time data
Vystavené push API
Systém bude umět oboustranně komunikovat s připojenými zařízeními
Volání externího ovládacího API
Napojení přes websocket
Systém bude zpracovávat statická data a data z API / DB
Pull API
JSON REST API
Proprietární HTTP/S API
Externí FTP úložiště
Stahování dat v intervalu 1 min až 1 rok
Nastavitelné konfigurací (definice CRON)
Systém bude zpracovávat ruční vstupy (mapové podklady, číselníky) - přímým nahráním do databáze
Formát GeoJSON, JSON, CSV
Systém bude umožňovat automatické nahrávání do katalogu OD
Týdenní, denní frekvence
Nad přijatými daty budou prováděny výpočty
Geoprocessing, výpočet zpoždění, predikce, obohacení dat
Úložiště dat
V systému budou použity SQL a NoSQL databáze s možným přímým přístupem pro datové analytiky
Systém bude ukládat aktuální data (aktuální poloha, aktuální obsazenost)
Systém bude ukládat historická data (historie obsazenosti, historie polohy, historie stavu)
Datová analýza
Možnosti připojení nástrojů pro datovou analýzu (Grafana, PowerBI, R studio, ArcGIS Desktop, popř. jiné standardní nástroje)
Systém bude uchovávat přijatá raw data po různou dobu dle potřeb projektu
Webové aplikace
Webová aplikace interních dashboardů, dispečinku (operativního monitoringu) a administračního panelu DP, popř. využití webu Golemio pro veřejné dashboardy
Zobrazení dashboardů pro veřejnost
Zobrazení interních dashboardů
Možnost ovládání připojených zařízení přes aplikaci dispečinku
Přístup skrze přihlašovací údaje k webové aplikaci určené k zobrazování specifických dashboardů
Přihlašování a rozdělení přístupů k jednotlivým dashboardům dle rolí
Rozdělení přístupů k jednotlivým datům na dashboardech (např. Dashboard lampy, některý uživatel vidí pouze lampy s parametrem “městská část: Praha 7”, některý uživatel všechny)
Přístup na základě městské části
Přístup na základě povolených ID jednotlivých záznamů
Aktualizace dat (nejmenší možná doba aktualizace)
Pro veřejné dashboardy od 30 min
Interní dashboard od 1 min
Dispečerský panel od 10s
Administrační API pro správu uživatelů a práv
Správa uživatelů, uživatelský skupin, API přístupů
Open API
Implementace výstupní gateway pro zpřístupnění dat z DP pro třetí strany (mobilní vývojáři, externí systémy)
Jednotné REST API
Dokumentace výstupního API
Nastavení request limitů, role a oprávnění přístupu, logování přístupů
Administrační panel s přehledem přístupů/využití
Nastavitelné přístupy k jednotlivým API endpointům
Logování všech přístupů a generování statistik
Blokace dříve poskytnutého přístupu
Bude možné určovat celkový rate limit pro uživatele
Nastavení oprávnění přístupů bude možné jak za základě datové sady (endpoint) tak i podle atributů v datech
Přístup k jednotlivým API endpointům
Přístup na základě městské části
Přístup na základě povolených ID jednotlivých záznamů
Přístup s maximálním limitem (velikosti) dotazu
Automatické generování API klíčů
Uživatelé musí mít možnost si sami vygenerovat svůj klíč, který bude mít výchozí hodnotu rate limitu
Ověří se emailem - posílání verifikačního emailu pro aktivaci klíče
Alerting
Kontrola dat
V daném časovém úseku musí přijít dávka dat, jinak se odešle upozornění
Periodické provolání externích zdrojů a validace schématu
Ověřování hodnot vůči stanoveným pravidlům
Nefunkční požadavky
Dispečink a dashboardy budou dostupné jako webová aplikace s řízením přístupů
Administrační panel bude dostupný jako webová aplikace s řízením přístupů
Jednotlivé moduly řešení budou horizontálně škálovatelné - vrstva pro integraci dat, vrstva pro výstupní rozhraní, databázová vrstva, napojení na senzory
Moduly umožní navýšení výkonu a počtu zpracovávaných požadavků/kapacity úložiště pomocí horizontálního škálování bez zásahu do zdrojových kódů řešení
Jednotlivé moduly/vrstvy budou jednotlivě nahraditelné - integrace dat, výstupní rozhraní, databázová vrstva, napojení na senzory (vstupní rozhraní)
Řešení bude využívat systému queue (fronty) pro zajištění perzistence a synchronizace přijímaných dat/zpráv
Celé řešení bude možné nasadit na virtualizované architektuře VMWare
Jednotlivé moduly budou k nasazení využívat technologii linuxových kontejnerů (Docker)
Zdrojový kód jednotlivých částí řešení bude udržován v git repozitáři, nebude obsahovat citlivá data a bude připraven k publikaci jako open-source
Zdrojové kódy budou pokryty jednotkovými testy, které se budou automaticky spouštět před nasazením nové verze
Modul výstupního rozhraní a integračního rozhraní s databázovou vrstvou bude možno plnohodnotně zprovoznit samostatně bez závislosti na ostatních modulech
Celé řešení bude monitorovatelné standardními monitoring nástroji
Předpokládaný objem dat je 1 TB za dobu 3 měsíců, řešení bude dimenzováno minimálně na tento objem
Systém bude dimenzován na vstup 200 datových zpráv za 1s
Řešení bude robustní k výpadku jakéhokoliv jednoho modulu (vrstvy) aplikace po omezený čas
Celé řešení bude nasazené v režimu vysoké dostupnosti, odolné vůči výpadku jakéhokoliv z virtuálních strojů:
Systém bude provádět automatické zálohy dat z datového úložiště a ostatních modulů
Dostupnost služeb bude:
Výstupní API: 99,5
Databázová vrstva: 99,5
Dispečink: 99,5
Monitoring: 99,5
Alerting: 99,5
Součástí řešení je i návrh řešení Disaster recovery a kritických scénářů
Součástí řešení je návrh automatického zálohování, export dat pro migraci dat