Regulatorni izveštaji za telekom operatora
Regulatorni izveštaji za telekom operatora logo

Regulatorni izveštaji za telekom operatora

Aplikacija koja iz CDR zapisa o telefonskom saobraćaju automatski računa minute po kategorijama i puni obrasce GIT7 i PPK1 za RATEL.

Kontekst

Svaki telekom operator u Srbiji obavezan je da Regulatornoj agenciji za elektronske komunikacije i poštanske usluge (RATEL) predaje periodične izveštaje o ostvarenom saobraćaju. Obrasci traže minute razvrstane po vrsti veze — od fiksne ka fiksnoj, od fiksne ka mobilnim mrežama, po domaćim operatorima, po međunarodnim destinacijama, po smeru poziva.

Podaci za to postoje, ali u obliku koji nije napravljen za izveštavanje: CDR zapisi, jedan red po pozivu, razbijeni u zasebne tabele po mesecu. Za godišnji izveštaj to je dvanaest tabela sa milionima redova.

Zadatak

Klijent je do tada izveštaje pravio ručno — izvoz iz baze, pa obrada u Excel-u, pa sabiranje po kategorijama. Posao je trajao danima, radila ga je jedna osoba koja je jedina znala tačna pravila razvrstavanja, a svaka greška u filtriranju značila je pogrešan broj poslat regulatoru.

Traženo je da se ceo taj postupak pretvori u aplikaciju: da se otvori u browseru, izabere obrazac i da se dobiju gotove brojke.

Kako smo rešili

Napravili smo web aplikaciju koja svaku stavku obrasca opisuje kao imenovani upit nad bazom. Mesečne tabele se spajaju u jedan skup, pa se nad njim primenjuju pravila koja definišu kategoriju — smer poziva, tip destinacije, operator sa kojim je veza ostvarena, prefiks pozvanog broja.

Ključna odluka bila je da pravila razvrstavanja stoje u kodu, a ne u glavi jedne osobe. Svaka stavka obrasca ima svoj upit sa imenom koje kaže šta računa, pa se logika može pročitati, proveriti i ispraviti bez pogađanja.

Rezultati se prikazuju u aplikaciji, a dostupni su i preko REST tačaka — da bi brojke mogle da se povuku i u druge sisteme, bez ponovnog računanja.

Tehnologije

  • Spring MVC — kontroleri, REST tačke i prikaz
  • Hibernate i MySQL — pristup podacima i agregacija nad CDR tabelama
  • JSP i Bootstrap — interfejs za izbor obrasca i pregled rezultata
  • Maven, WAR raspoređen na aplikacionom serveru

Šta to znači danas

Isti obrazac rešavamo i danas, samo u modernijem stogu: kad postoji gomila sirovih zapisa i obaveza da se iz njih dobije tačan, ponovljiv broj — bilo da je regulator, poreska ili uprava koja traži izveštaj. Logika koja se može pročitati i proveriti vredi više od tabele koju ume da popuni samo jedan čovek.