

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.