---
title: 'Analitika potrošnje'
description: Potpuna analiza jednog mernog mesta za gas – kvalitet podataka, profil potrošnje, pasoš uređaja i dnevnik događaja, uz opcione forenzičke detalje.
section: AI Analytics
weight: 1
related:
  - ai-analytics/node-reports/metering-bypass
  - ai-analytics/node-reports/battery-forecast
  - ai-analytics/fleet-reports/top-problem-nodes
---

import Alert from '@/components/docs/Alert.astro';
import Image from '@/components/docs/Image.astro';

Analitika potrošnje je iscrpna metrološka i operativna analiza **jednog mernog mesta za gas** za izabrani period. Cilj nije samo da se nacrta grafikon potrošnje, već da se odgovori na praktična pitanja službe merenja. Analiza se poziva na međunarodne metrološke dokumente tamo gde oni potkrepljuju konkretnu vrednost: ISO 5167 (merenje protoka mernom blendom), EN 12405-1 (elektronski uređaji za konverziju zapremine gasa), OIML R 137 (gasomeri), OIML R 140 (merni sistemi za gasovita goriva), ISO 6976 (toplotna moć), EN 1359 (membranski gasomeri) i EN 14236 (ultrazvučni gasomeri za domaćinstva).

## Svrha

<Image
  src="/images/ai-analytics/consumption-analytics/01_hero_block.svg"
  alt="Zaglavlje izveštaja"
/>

_Zaglavlje izveštaja._ Ono što čitalac prvo vidi: naziv i adresa mernog mesta, tip korektora, ključni pokazatelji za poslednji sat (P, T), ukupan obim podataka u vremenskom prozoru (broj tačaka), broj otkrivenih događaja, metod analize (pravila / pravila + LLM / samo LLM, gde je LLM veliki jezički model), trajanje preuzimanja podataka i obuhvaćeni period.

Izveštaj odgovara na svakodnevna pitanja službe merenja:

- da li su podaci za izabrani period potpuni;
- da li se arhiva može koristiti za zatvaranje obračunskog perioda;
- da li na kraju perioda postoji praznina;
- da li telemetrija trenutno radi;
- da li se satni protok slaže sa kumulativnom zapreminom;
- da li je neki od senzora P/T zaglavljen;
- da li postoje problemi sa komunikacijom ili isporukom arhive;
- da li je metrološki pasoš dovoljno popunjen;
- da li postoje sumnjivi obrasci umanjenog merenja;
- da li je potreban izlazak na teren;
- ko treba da postupi: metrolog, dispečer, inženjer za komunikacije, inženjer za integraciju, terenska ekipa ili analitičar obračuna.

<Alert type="warning">
  Izveštaj **nije formalni zapisnik o incidentu**. Ne dokazuje neovlašćenu manipulaciju,
  zaobilaženje merenja niti krađu gasa. Prikazuje tehničke i metrološke pokazatelje koje treba
  proveriti. Pravni zaključak je poseban postupak koji obavezno zahteva izlazak na teren.
</Alert>

## Osnovna logika

Izveštaj razdvaja **tri međusobno nezavisne ocene** koje se ne smeju mešati:

| Ocena                                       | Značenje                                                           |
| ------------------------------------------- | ------------------------------------------------------------------ |
| Spremnost podataka za period                | da li je arhiva upotrebljiva za izabrani period                    |
| Trenutni status telemetrije                 | da li se merno mesto javlja u trenutku generisanja izveštaja       |
| Spremnost za zatvaranje obračunskog perioda | da li se period može koristiti za obračun bez ručnog usaglašavanja |

Istorijski period može biti potpuno upotrebljiv za analizu čak i ako se merno mesto danas ne javlja.

**Primer ispravnog tumačenja:**

```
Podaci za period:      upotrebljivi uz rezerve
Trenutno praćenje:     narušeno
Zatvaranje obračuna:   nije spremno za konačno zatvaranje
```

Ovo nije protivrečnost. To znači da su istorijski podaci delimično upotrebljivi, ali da trenutna telemetrija ili zatvaranje obračunskog perioda zahtevaju dodatnu proveru.

## Pojmovnik

| Pojam              | Značenje                                   |
| ------------------ | ------------------------------------------ |
| Q                  | satni protok, m³/h                         |
| P                  | pritisak gasa, kPa                         |
| T                  | temperatura gasa, °C                       |
| V                  | kumulativna zapremina, m³                  |
| ΣQ                 | zbir satnih protoka za period              |
| ΔV                 | prirast kumulativne zapremine za period    |
| H_expected         | koliko sati obuhvata izveštajni period     |
| H_received         | koliko je satnih zapisa faktički primljeno |
| H_validQ           | koliko zapisa ima validnu vrednost protoka |
| H_nullQ            | koliko zapisa postoji, ali je protok NULL  |
| H_missing          | koliko sati nedostaje u arhivi             |
| final_tail_gap     | odsustvo podataka na kraju perioda         |
| internal_gap       | praznina unutar perioda                    |
| ažurnost           | koliko je svež poslednji sat u arhivi      |
| popunjenost pasoša | u kojoj meri je metrološki pasoš popunjen  |
| incident           | grupisani problem koji zahteva reagovanje  |

## Vremenski prozor analize

### Početak i kraj perioda

Početak i kraj perioda zadajete vi. Izveštaj analizira svaki sat od 00:00 prvog dana do 23:00 poslednjeg dana:

$$
\text{window\_start} = \text{report\_start } 00{:}00, \quad
\text{window\_end} = \text{report\_end } 23{:}00
$$

### Očekivani broj sati

$$
H_\text{expected} = \mathrm{count}(\text{hours from window\_start to window\_end})
$$

Za period od godinu dana obično je $H_\text{expected} \approx 8760$.

## Dostupnost arhive po kategorijama

| Kategorija                | Značenje                                      |
| ------------------------- | --------------------------------------------- |
| Validan sat               | zapis postoji i ima ispravnu vrednost protoka |
| Sat sa vrednošću NULL     | zapis postoji, ali je protok prazan           |
| Unutrašnja praznina       | sat koji nedostaje unutar perioda             |
| Praznina na kraju perioda | sati koji nedostaju na kraju perioda          |
| Nepokriven sat            | svaki sat bez validne vrednosti protoka       |

**Formule:**

$$
H_\text{received} = \mathrm{count}(\text{hourly records})
$$

$$
H_\text{validQ} = \mathrm{count}(\text{records where } Q \neq \text{NULL and } Q \geq 0)
$$

$$
H_\text{nullQ} = \mathrm{count}(\text{records where } Q = \text{NULL})
$$

$$
H_\text{missing} = \max(0, H_\text{expected} - H_\text{received})
$$

$$
H_\text{unobserved} = H_\text{missing} + H_\text{nullQ}
$$

<Alert type="warning">
  Praznina na kraju perioda **ne uračunava se dvaput**: ne dodaje se na `missing_records` ako su ti
  sati već deo ukupnog broja sati koji nedostaju.
</Alert>

## Potpunost podataka

<Image
  src="/images/ai-analytics/consumption-analytics/07_completeness_validity.svg"
  alt="Dostupnost, ažurnost i validnost podataka"
/>

_Dostupnost, ažurnost i validnost_ tri su međusobno nezavisna aspekta provere upotrebljivosti arhive pre bilo kakve suštinske analize. **Potpunost** odgovara na pitanje koliko je od očekivanih sati stiglo. **Ažurnost** – koliko su podaci sveži _upravo sada_. **Validnost** – da li su vrednosti u fizički razumnim opsezima.

### Formula pokrivenosti

$$
\mathrm{Coverage}_\text{valid} = \frac{H_\text{validQ}}{H_\text{expected}} \times 100\,\%
$$

Pored toga:

$$
\mathrm{Coverage}_\text{received} = \frac{H_\text{received}}{H_\text{expected}} \times 100\,\%
$$

Razlika je bitna:

- `Coverage_received` – da li su zapisi uopšte stigli;
- `Coverage_valid` – da li su upotrebljivi za analizu protoka.

### Tumačenje pokrivenosti

| Pokrivenost | Status     | Značenje                          |
| ----------- | ---------- | --------------------------------- |
| ≥ 98%       | Odlično    | arhiva je skoro potpuna           |
| 95–98%      | Dobro      | upotrebljivo uz manje rezerve     |
| 80–95%      | Upozorenje | primetne praznine                 |
| 50–80%      | Ozbiljno   | potrebno je ručno usaglašavanje   |
| < 50%       | Kritično   | neupotrebljivo za većinu zadataka |

## Praznina na kraju perioda

Praznina na kraju perioda = odsustvo podataka u arhivi na kraju izabranog perioda.

$$
H_\text{tail} = \text{window\_end} - \text{last\_valid\_archive\_hour}
$$

| Praznina | Status                                                            |
| -------- | ----------------------------------------------------------------- |
| ≤ 2 h    | prihvatljivo                                                      |
| 2–6 h    | upozorenje                                                        |
| 6–24 h   | ozbiljno                                                          |
| > 24 h   | kritično                                                          |
| > 168 h  | uređaj se ne javlja duže od nedelju dana – hitan izlazak na teren |

Praznina na kraju perioda odgovara na pitanje: **može li se period smatrati potpuno zatvorenim?** Ako podaci na kraju nedostaju, izveštaj i dalje može biti upotrebljiv za retrospektivnu analizu, ali **nije spreman** za konačno zatvaranje obračunskog perioda (videti odeljak „Zaključak o obračunskom merenju”).

## Ažurnost podataka

Dve odvojene metrike ažurnosti.

### Ažurnost u odnosu na kraj perioda

Koristi se za istorijsku analizu i obračun:

$$
\mathrm{Lag}_\text{period} = \text{window\_end} - \text{last\_valid\_archive\_hour}
$$

Odgovara na pitanje: **postoje li podaci do kraja izabranog perioda?**

### Ažurnost u odnosu na trenutak generisanja

Koristi se za trenutno praćenje:

$$
\mathrm{Lag}_\text{current} = \text{generation\_time} - \text{last\_valid\_archive\_hour}
$$

Odgovara na pitanje: **javlja li se merno mesto upravo sada?**

### Pokrivenost u poslednja 24 sata

$$
\mathrm{Fresh}_{24h} = \frac{H_\text{validQ, last 24h}}{24} \times 100\,\%
$$

### Zbirna ocena ažurnosti

$$
\mathrm{LagScore} = \max(0, 100 - 2 \times \mathrm{Lag}_\text{period})
$$

$$
\mathrm{FreshnessScore} = \frac{\mathrm{LagScore} + \mathrm{Fresh}_{24h}}{2}
$$

## Trenutni status telemetrije

<Image
  src="/images/ai-analytics/consumption-analytics/16_telemetry_major.svg"
  alt="Trenutni status telemetrije i rezime mernog mesta"
/>

_Trenutno praćenje i rezime mernog mesta._ Ovaj blok odgovara na pitanje „možemo li odmah da postupimo na osnovu ove arhive?” Upoređuju se tri trenutka: poslednji arhivirani sat, kraj vremenskog prozora izveštaja i trenutak generisanja izveštaja. Ako su komunikacione sesije sveže, a arhiva kasni – problem **nije kod dispečera**, već u parseru ili prijemu arhive na serverskoj strani. AI komentar daje operateru kratak rezime na razumljivom jeziku, **ne menjajući** formalne statuse.

Računa se **u odnosu na trenutak generisanja**, a ne u odnosu na period:

$$
\mathrm{Lag}_\text{archive, current} = \text{generation\_time} - \text{last\_archive\_hour}
$$

$$
\mathrm{Age}_\text{session} = \text{generation\_time} - \text{last\_session\_time}
$$

| Kašnjenje     | Status     |
| ------------- | ---------- |
| ≤ 6 h         | normalno   |
| 6–24 h        | upozorenje |
| 24–72 h       | ozbiljno   |
| > 72 h        | kritično   |
| nema podataka | kritično   |

**Diferencijalna dijagnostika:**

| Simptom                    | Verovatan uzrok                                     |
| -------------------------- | --------------------------------------------------- |
| sesije sveže, arhiva kasni | problem sa **isporukom arhive / parserom / uvozom** |
| nema sesija, nema arhive   | modem / SIM / antena / napajanje / baterija         |

## Validnost podataka

Provera fizičkih opsega po kanalima:

| Kanal         | Uslov                                          |
| ------------- | ---------------------------------------------- |
| Protok Q      | $Q \geq 0$                                     |
| Pritisak P    | $0 < P \leq 5000\text{ kPa}$                   |
| Temperatura T | $-50\,°\mathrm{C} \leq T \leq 80\,°\mathrm{C}$ |

Za svaki kanal:

$$
\mathrm{Validity}_\text{ch} = \frac{N_\text{ok}}{N_\text{total}} \times 100\,\%,
\quad
N_\text{ok} = N_\text{total} - N_\text{null} - N_\text{below} - N_\text{above}
$$

Zbirno:

$$
\mathrm{Validity}_\text{total} = \frac{\sum N_\text{ok}}{\sum N_\text{checked}} \times 100\,\%
$$

## Stabilnost senzora

<Image
  src="/images/ai-analytics/consumption-analytics/06_sensor_health.svg"
  alt="Dijagnostika stabilnosti senzora"
/>

_Detaljna dijagnostika senzora P i T._ Za svaki niz zaglavljenih vrednosti beleže se početak, kraj, trajanje i vrednost. Dugi intervali sa istom vrednošću gotovo uvek su znak otkaza A/D konvertora, resetovanja senzora ili operativnog zaustavljanja protoka – a **ne** stvarnih fizičkih promena. Skokovi – nagle promene ≥ prag u toku jednog sata – naprotiv, predstavljaju artefakt telemetrije ili posledicu resetovanja senzora.

<Image
  src="/images/ai-analytics/consumption-analytics/05_sensors_critical.svg"
  alt="Stanje senzora i plan aktivnosti"
/>

_Tumačenje i plan aktivnosti za senzore._ „Stanje senzora: CRITICAL” je konačni tekstualni rezime za oba kanala. Svakom otkrivenom problemu automatski se dodeljuju preporuka, prioritet, odgovorna uloga i kratak opis okidača (šta je tačno izazvalo upozorenje).

### Zaglavljen senzor

Senzor se smatra zaglavljenim ako se njegova vrednost gotovo ne menja duže od praga (24 h):

$$
H_\text{stuck} \geq 24 \text{ h}
$$

Tolerancija jednakosti (0,1%):

$$
\mathrm{tol}(x) = \max\bigl(0.05,\ |x| \times 0.001\bigr)
$$

Tačke se smatraju jednakim ako je $|x_i - x_\text{run}| \leq \mathrm{tol}(x_\text{run})$.

### Skok temperature

$$
|T_i - T_{i-1}| > 20\,°\mathrm{C / h}
$$

### Skok pritiska

$$
|P_i - P_{i-1}| > \max(1.0, 0.5 \times \overline{P})
$$

### Tumačenje

| Pokazatelj        | Značenje                                            |
| ----------------- | --------------------------------------------------- |
| Dugo zaglavljen T | mogući otkaz senzora T                              |
| Dugo zaglavljen P | mogući otkaz senzora P ili režim `P_const`          |
| Mnogo skokova P   | nestabilnost kanala ili artefakt telemetrije        |
| Mnogo skokova T   | greška senzora ili nagla promena tehnološkog režima |

<Alert type="warning">
  Zaglavljen senzor **nije dokaz neovlašćene manipulacije**. To je pre svega metrološki rizik koji
  zahteva proveru prema OIML R 137 / EN 12405-1.
</Alert>

## Zbirne ocene kvaliteta arhive

<Image
  src="/images/ai-analytics/consumption-analytics/08_quality_summary.svg"
  alt="Zbirni panel kvaliteta"
/>

_Zbirni panel kvaliteta._ Na vrhu su ključni KPI izveštaja (sati sa podacima, zapremina, događaji, mirovanje/drift). Ispod su kartice odeljaka (kvalitet podataka, profil potrošnje, tehnički pasoš, umanjeno merenje i neovlašćena manipulacija, anomalije i incidenti, dnevni pregled, izvori). Na kartici kvaliteta podataka nalazi se 6 delimičnih pokazatelja na skali 0–100, uz opisni zaključak i težine zbirne ocene.

Izveštaj daje **5 međusobno nezavisnih ocena** (svaka na skali 0–100) koje pokrivaju različite aspekte kvaliteta:

| Ocena                         | Na šta se odnosi                             |
| ----------------------------- | -------------------------------------------- |
| `score_historical_archive`    | upotrebljivost podataka za istorijski period |
| `score_data_validity`         | ispravnost vrednosti Q/P/T                   |
| `score_sensor_health`         | stanje senzora (zaglavljenost, skokovi)      |
| `score_timeliness`            | ažurnost arhive i sesija                     |
| `score_operational_readiness` | spremnost za trenutno praćenje               |

<Alert type="warning">
  Jedinstveni **zbirni skalar** „ukupni kvalitet” namerno se ne izračunava – mešanje istorijske
  upotrebljivosti sa ažurnošću daje lažno umirujuću sliku. Svaka ocena se tumači zasebno, sa
  sopstvenim zaključkom.
</Alert>

## Procena potencijalno nepokrivene zapremine

<Image
  src="/images/ai-analytics/consumption-analytics/14_uncovered_volume.svg"
  alt="Procena rizika od nepokrivene zapremine"
/>

_Dve različite procene iste zapremine._ Srednja vrednost za period daje konzervativnu procenu (popunjavanje praznine na kraju perioda uz ravnomeran profil), dok profil aktivnih sati bolje odražava dnevni ritam (radna smena / noć / vikend). Razlika između njih predstavlja **opseg neizvesnosti**, a ne jednu tačku. Nivo rizika zavisi od dužine praznine i karakterističnog srednjeg protoka.

<Image
  src="/images/ai-analytics/consumption-analytics/11_anomalous_month.svg"
  alt="Mesec sa anomalnom potrošnjom"
/>

_Mesec sa anomalnom potrošnjom._ Mesečne anomalije su poseban signal koji se ocenjuje u odnosu na godišnji ritam (grejna sezona naspram leta). Ako neki mesec **znatno** premašuje medijanu ostalih meseci (prag × 2), automatski se ističe na vrhu, uz predlog da se provere tok događaja, pasoš i tehnološki uzroci.

Ovaj blok procenjuje koliko je gasa moglo da protekne tokom sati bez validnih podataka u arhivi.

<Alert type="warning">
  Ovo **nije potvrđeni gubitak**. Nije ni podatak o krađi ni automatski zahtev za naknadu štete. To
  je procena **slepe mrlje** – zapremine koju ne pokriva validna arhiva.
</Alert>

### Sati bez validnih podataka

$$
H_\text{blind} = H_\text{missing} + H_\text{nullQ}
$$

### Procena na osnovu srednje vrednosti

$$
\overline{Q} = \frac{\sum Q_\text{valid}}{H_\text{validQ}},
\qquad
V_\text{blind, mean} = H_\text{blind} \times \overline{Q}
$$

Ova procena je pogodna za objekte sa relativno ujednačenom potrošnjom.

### Procena na osnovu profila

Tipičan protok za sat u danu $h$ (medijana za period):

$$
\mathrm{Profile}(h) = \mathrm{median}(Q \mid \text{hour\_of\_day} = h)
$$

$$
V_\text{blind, profile} = \sum_{t \in \text{BlindHours}} \mathrm{Profile}(\text{hour}(t))
$$

Ako je profil za neki sat nepouzdan, koristi se $\overline{Q}$.

### Opseg procene

Prikazuju se obe procene. Ako su bliske – dnevni profil je stabilan. Ako se znatno razlikuju – objekat ima izražen režim rada i potreban je oprez.

## Merno mesto u mirovanju

Ako merno mesto tokom perioda praktično nije imalo stvarnu potrošnju, odsustvo protoka **ne smatra se rizikom**.

### Provera mirovanja

Adaptivni prag blizu nule:

$$
Q_\text{nearzero} = \max(0.5, 0.05 \times \mathrm{median}(Q))
$$

Smatra se da je merno mesto u mirovanju kada su ispunjena **oba** uslova:

$$
\overline{Q} \leq 0.05\text{ m³/h} \quad \text{i} \quad V_\text{blind, mean} < 5\text{ m³}
$$

### Efekat

Skala ozbiljnosti postaje blaža (najviše `medium` umesto `critical`), a izveštaj navodi:

> Merno mesto je faktički bilo van rada / sezonski zaustavljeno. Odsustvo potrošnje ne smatra se rizikom umanjenog merenja.

## Usaglašavanje Q/V

<Image
  src="/images/ai-analytics/consumption-analytics/13_qv_volume.svg"
  alt="Analiza kumulativne zapremine"
/>

_Usaglašavanje satnog protoka sa brojačem._ Metrološki obračun potrošnje zasniva se na prirastu V, a ne na zbiru trenutnih vrednosti Q. Poklapanje ΣQ ≈ ΔV u ≥ 80% sati uobičajeno je za ispravno merno mesto. **Vraćanje V unazad** (između uzastopnih sati, $V_{t+1} < V_t$) i **nagli skokovi V** kritični su znaci kvara arhive i gotovo uvek zahtevaju proveru.

Ključni metrološki blok. Upoređuje zbir satnih protoka sa prirastom kumulativnog brojača.

### Osnovne veličine

$$
\Sigma Q = \sum_{h=1}^{n} Q_h, \qquad
\Delta V = V_\text{end} - V_\text{start}
$$

$$
\mathrm{Diff} = \Sigma Q - \Delta V, \qquad
\mathrm{Diff}_\% = \frac{\Sigma Q - \Delta V}{\Delta V} \times 100\,\%
$$

### Tumačenje neusaglašenosti

| $\vert\mathrm{Diff}_\%\vert$ | Zaključak                      |
| ---------------------------- | ------------------------------ |
| ≤ 2%                         | `good` (usaglašeno)            |
| 2–5%                         | `warn` (usaglašeno uz rezerve) |
| > 5%                         | `bad` (neusaglašenost)         |
| nema V                       | `unavailable`                  |
| osnova Q/V nepoznata         | potrebna je provera pasoša     |

### Monotonost brojača

Stanje brojača mora da raste ili da ostane nepromenjeno.

Vraćanje unazad: $\Delta V_h < -0.5\text{ m³}$ → incident `V_ROLLBACK`.

Nagli skok: $\Delta V_h > V_\text{jump\_threshold}$ → incident `V_JUMP`.

### Usaglašavanje $Q \cdot 1\text{h} \approx \Delta V$ po satima

Za svaki sat u kom postoje i $Q$ i $V$:

$$
\mathrm{Match}_h = \frac{|Q_h - \Delta V_h|}{\max(Q_h, \Delta V_h)}
$$

Sat je usaglašen ako je $\mathrm{Match}_h \leq 20\,\%$. Udeo usaglašenih sati:

$$
\mathrm{Match}_\% = \frac{H_\text{matched}}{H_\text{checked}} \times 100\,\%
$$

### Ograničenja usaglašavanja Q/V

Ni dobro brojčano poklapanje ne znači da su podaci upotrebljivi za obračun. Potrebno je znati:

| Pitanje                             | Zašto je važno                                   |
| ----------------------------------- | ------------------------------------------------ |
| Q – standardna ili radna zapremina? | različite osnove unose sistematsku grešku        |
| V – standardna ili radna zapremina? | potrebna je ista osnova                          |
| Kolika je vrednost impulsa?         | neophodna je za potpuno obračunsko usaglašavanje |
| Da li je V monoton?                 | vraćanja unazad dovode arhivu u pitanje          |
| Postoje li ručne korekcije?         | mogu da objasne odstupanje                       |

Ako osnova nije poznata:

> Q i V su brojčano usaglašeni, ali obračunska osnova nije potvrđena. Potrebno je proveriti pasoš, vrednost impulsa i osnovu zapremine (videti EN 12405-1 §7).

## Komunikacija naspram arhive

<Image
  src="/images/ai-analytics/consumption-analytics/12_csq_vs_archive.svg"
  alt="Dijagnostika CSQ naspram arhive"
/>

_Diferencijalna dijagnostika „komunikacija naspram prijema arhive”._ Ako u prozoru postoje sesije, a arhive nema – uređaj odgovara preko GSM/CSQ, ali se arhiva ili ne upisuje, ili je server ne parsira. To **nije** problem dispečera / modema – treba da ga rešava inženjer za integraciju.

### Osnovne formule

$$
N_\text{sessions} = \mathrm{count}(\text{sessions}), \quad
N_\text{success} = \mathrm{count}(\text{successful sessions})
$$

$$
\mathrm{SessionSuccess}_\% = \frac{N_\text{success}}{N_\text{sessions}} \times 100\,\%
$$

### Isporuka arhive

Za svaku prazninu proverava se da li je u istom vremenskom prozoru bilo sesija:

- `gap_with_sessions` – praznina u arhivi uz postojeće sesije;
- `gap_without_sessions` – praznina u arhivi, a sesija takođe nema.

### Diferencijalna dijagnostika

| Situacija                               | Verovatan uzrok                                                   |
| --------------------------------------- | ----------------------------------------------------------------- |
| nema sesija, nema arhive                | modem / SIM / antena / napajanje                                  |
| sesije u redu, arhiva se ne ažurira     | isporuka satne arhive / parser / uvoz                             |
| sesije u redu, ali deo arhive nedostaje | delimično očitavanje / prekid na granici stranice / serverski deo |
| sesije sveže, arhiva zastarela          | **nije problem GSM veze**, već isporuke arhive                    |
| vremenska oznaka sesije u budućnosti    | neusklađenost sata / vremenske zone                               |

### Kvalitet signala

Ako se kvalitet signala iskazuje kao CSQ:

$$
\mathrm{RSSI}_\text{dBm} \approx -113 + 2 \times \mathrm{CSQ}
$$

Primer: CSQ=29 → RSSI ≈ −55 dBm (odličan signal).

## Metrološki pasoš

### Obavezna polja i njihove težine

Pasoš definiše 11 polja sa težinama:

| Polje                      | Težina  | Zašto                                  |
| -------------------------- | ------- | -------------------------------------- |
| equipment_serial_number    | 1,0     | identifikacija                         |
| equipment_type_id          | 1,0     | model/tip                              |
| installation_date          | 0,8     | operativni kontekst                    |
| **verification_date**      | **1,5** | pravna valjanost (OIML R 137, tačka 3) |
| next_verification_date     | 1,0     | praćenje roka                          |
| **flow_range** (Qmin/Qmax) | **1,5** | opseg prema EN 12405-1                 |
| meter_serial_number        | 1,0     | identifikacija na licu mesta           |
| meter_type                 | 1,0     | povezivanje sa metrološkim podacima    |
| firmware_version           | 0,5     | kompatibilnost i poznate greške        |
| p_const                    | 0,5     | zamenska vrednost pritiska             |
| pulse_weight               | 0,8     | za usaglašavanje Q/V                   |

### Formula popunjenosti

$$
\mathrm{PassportCompleteness} = \frac{\sum w_\text{filled}}{\sum w_\text{required}} \times 100\,\%
$$

### Tumačenje

| Popunjenost | Status              |
| ----------- | ------------------- |
| ≥ 80%       | COMPLETE            |
| 50–80%      | PARTIAL             |
| 20–50%      | INCOMPLETE          |
| < 20%       | CRITICAL_INCOMPLETE |

Ako pasoš nije potpun, zaključak o obračunskom merenju mora biti dat uz rezervu:

> Metrološki pasoš nije potpun. Zaključak o obračunskom merenju zahteva ručno usaglašavanje i pozivanje na OIML R 137 / EN 12405-1.

## Sumnjivi obrasci umanjenog merenja

<Image
  src="/images/ai-analytics/consumption-analytics/03_forensic_signals.svg"
  alt="Razvrstavanje signala umanjenog merenja"
/>

_Razvrstavanje signala._ Svaki signal se svrstava u kategoriju i ima nivo dokaza (nizak / srednji / visok), prioritet izlaska na teren, formalne dokaze i preporučenu radnju. **Ovo nije zaključak o mernom mestu** – to je spisak vremenskih prozora koje operater ili servisno osoblje treba ručno da proveri.

To su **heuristike**, a ne dokazi.

### Prag blizu nule

$$
Q_\text{nearzero} = \max(0.5, 0.05 \times \mathrm{median}(Q))
$$

### Nulti protok tokom aktivnih sati

Sat je sumnjivo „tih” ako je $Q_h < Q_\text{nearzero}$ I ako pripada tipičnom intervalu aktivnosti objekta.

### Promenljiv P + nula (Q≈0 uz promenljiv P)

Uzrok može biti:

- isključenje / zatvoren ventil na izlazu / sezonsko zaustavljanje;
- režim P_const ili otkaz senzora;
- greška impulsnog ulaza;
- **moguća neovlašćena manipulacija** – ali nije dokazana.

<Alert type="warning">
  Obrazac „promenljiv P + nula” **nije dokaz neovlašćene manipulacije**. To je samo razlog da se
  proveri režim rada mernog mesta.
</Alert>

### Prekid i ponovno uspostavljanje protoka

Obrazac: normalan Q → Q≈0 → normalan Q. Nagla promena režima, ali ne i dokaz nepravilnosti. Moguća objašnjenja: planirano isključenje / obustava rada objekta / zatvaranje ventila / otkaz kanala / ručna intervencija / greška u isporuci arhive.

### Potvrđena neovlašćena manipulacija

Sam statistički obrazac **ne može** da potvrdi neovlašćenu manipulaciju. Potrebni su **čvrsti dokazi**:

- otvaranje ormana (cover_open u događajima uređaja);
- delovanje magnetnim poljem;
- izmene parametara (parameter_change);
- neovlašćena izmena P_const;
- resetovanje arhive;
- potvrđena manipulacija impulsnim ulazom;
- zapisnik sa terena;
- fotografije / plombe / očitavanja na licu mesta.

Ispravan format zaključka:

```
Potvrđena neovlašćena manipulacija:  NIJE OTKRIVENA
Sumnjivi obrasci:                    POSTOJE
Pravna spremnost:                    NIJE SPREMNO
```

## Zaključak o obračunskom merenju

<Image
  src="/images/ai-analytics/consumption-analytics/02_commercial_verdict.svg"
  alt="Zaključak o obračunskom merenju"
/>

_Status za rukovodstvo._ Sedam redova odgovara na sedam različitih pitanja na nivou rukovodstva: može li se period zatvoriti (obračun), radi li merno mesto sada (praćenje), slažu li se arhiva i brojač (Q×h naspram ΔV), da li je potreban izlazak na teren, postoje li sumnjivi obrasci, koliko su podaci celoviti i da li su prisutni svi parametri pasoša. Klikom na red prelazi se na blok sa dokazima u izveštaju.

Glavni zaključak za rukovodioca službe merenja.

### Pravila za obračunsku arhivu

**Spremno:**

- Pokrivenost ≥ 98%
- Praznina na kraju perioda ≤ 2 h
- Q/V usaglašeni (`good`)
- V monoton
- Pasoš COMPLETE
- Nema kritičnih problema sa senzorima

**Spremno uz rezerve:**

- Pokrivenost 95–98%
- Praznina na kraju perioda 2–24 h
- Q/V usaglašeni uz rezerve (`warn`)
- Pasoš PARTIAL
- Nema kritične prepreke

**Nije spremno za konačno zatvaranje:**

- Praznina na kraju perioda > 24 h ILI
- Q/V nisu klasifikovani ILI
- Postoji vraćanje V unazad ILI
- Pasoš nepotpun u obračunskim poljima ILI
- Kritičan problem sa senzorom

**Neupotrebljivo:**

- Pokrivenost kritično niska ILI
- Arhiva oštećena ILI
- V ima velika vraćanja unazad/skokove ILI
- Q/V potpuno neusaglašeni ILI
- Ključni kanal nedostupan

### Trenutno praćenje – ocenjuje se zasebno

| Uslov                            | Status                              |
| -------------------------------- | ----------------------------------- |
| arhiva i sesija sveže            | upotrebljivo                        |
| arhiva kasni, ali sesije postoje | narušeno / problem sa isporukom     |
| arhiva i sesije zastarele        | kritično / problem sa komunikacijom |
| vremenska oznaka nevalidna       | nepouzdano                          |

### Pregled na terenu

Izlazak na teren je potreban ako je ispunjen **bar jedan** od sledećih uslova:

- praznina na kraju perioda nije popunjena;
- Q/V nisu klasifikovani;
- postoji vraćanje brojača unazad;
- pasoš je kritično nepotpun;
- senzor P ili T je zaglavljen;
- postoje sumnjivi obrasci umanjenog merenja;
- dnevnik događaja nije dostupan, a postoje izražene anomalije;
- trenutna telemetrija je kritično narušena.

## Incidenti

Incident je **grupisani** problem, a ne svaki pojedinačni neobrađeni zapis.

### Tipovi

| Tip                    | Značenje                               |
| ---------------------- | -------------------------------------- |
| `FINAL_TAIL_GAP`       | nema podataka na kraju perioda         |
| `COMMUNICATION_GAP`    | prekid komunikacije                    |
| `ARCHIVE_DELIVERY_GAP` | sesije postoje, arhiva nije isporučena |
| `Q_V_MISMATCH`         | Q i V se ne slažu                      |
| `V_ROLLBACK`           | brojač se vratio unazad                |
| `P_SENSOR_STUCK`       | zaglavljena vrednost pritiska          |
| `T_SENSOR_STUCK`       | zaglavljena vrednost temperature       |
| `PASSPORT_INCOMPLETE`  | nedostaju polja pasoša                 |
| `TAMPERING_CANDIDATE`  | sumnjiv obrazac, a ne dokaz            |

### Princip grupisanja

```
neobrađeni događaji → grupisani incidenti → incidenti najvišeg prioriteta
```

Primer: 301 neobrađeni događaj → 15 grupisanih incidenata → 5 najvišeg prioriteta za postupanje. Operateru se ne sme prikazati 301 istovetan događaj kao 301 zaseban problem.

## Plan aktivnosti

<Image
  src="/images/ai-analytics/consumption-analytics/09_action_plan_checklist.svg"
  alt="Plan aktivnosti po ulogama i kontrolna lista za teren"
/>

_Aktivnosti sa prioritetima P0/P1/P2._ Svaka aktivnost ima odgovornu ulogu, rok (danas / u toku dana / 1–3 dana) i **uzrok** zbog kog je uvrštena na spisak. Kontrolna lista za teren sastavlja se automatski na osnovu zaključka i otvorenih incidenata: šta poneti, šta pregledati, šta izmeriti – sa oznakama P0/P1 za određivanje prioriteta na licu mesta.

Svaka preporuka je vezana za uzrok.

| Polje     | Opis                                        |
| --------- | ------------------------------------------- |
| ID        | broj preporuke                              |
| Prioritet | P0 / P1 / P2 / P3                           |
| Radnja    | šta treba uraditi                           |
| Uloga     | ko je odgovoran                             |
| Rok       | do kada treba završiti                      |
| Uzrok     | zbog čega je radnja predviđena              |
| Status    | otvorena / dodeljena / izvršena / proverena |

### Primeri pravila

| Uslov                         | Radnja                                                                         |
| ----------------------------- | ------------------------------------------------------------------------------ |
| praznina > 24 h, sesije sveže | tim za serverski deo: ponovo uspostaviti isporuku satne arhive                 |
| praznina > 24 h, nema sesija  | tim za komunikacije: proveriti modem/SIM/napajanje                             |
| T zaglavljen ≥ 24 h           | metrolog: proveriti senzor T (OIML R 137)                                      |
| P zaglavljen ≥ 24 h           | metrolog: proveriti senzor P ili podešavanje P_const                           |
| neusaglašenost Q/V            | metrolog + služba obračuna: usaglasiti V, Q i vrednost impulsa (EN 12405-1 §7) |
| pasoš nepotpun                | administrator / metrolog: popuniti pasoš                                       |
| sumnjivi obrasci              | terenska ekipa: proveriti plombe, impulsni ulaz, ventile                       |

## Kontrolna lista za teren

### Šta poneti

kontrolni manometar • kontrolni termometar • multimetar • tester signala/antene • pribor za plombiranje • obrazac zapisnika o pregledu • pristup arhivi i pasošu • oprema za fotografisanje.

### Šta proveriti

plombe na korektoru i gasomeru • impulsni kabl • senzori P, T • modem, antena, napajanje, baterija • zaporni ventili • mogući obilazni vod • pasoš naspram stvarne opreme.

### Šta izmeriti

kontrolne vrednosti P, T • trenutni protok Q • kumulativna zapremina V • očitavanja spoljnog merila • CSQ/RSSI • napon napajanja • ulazni impulsi • datum/vreme korektora • P_const • Qmin/Qmax • vrednost impulsa.

### Šta fotografisati

displej korektora (P/T/Q/V) • datum/vreme na uređaju • serijski brojevi • plombe • impulsni kabl • senzori • modem i antena • opšti izgled • položaji ventila.

## Izvor podataka prema profilu ponašanja

Konkretna arhiva i polje u interfejsu API biraju se automatski prema ponašanju uređaja. Tri grupe:

### Kontinuirana satna arhiva

Uređaj upisuje zapis **tačno jednom na sat**. Prioritet izvora:

1. neposredno polje „protok po satu” (ako ga uređaj izračunava);
2. Δ kumulativne standardne zapremine;
3. Δ kumulativne radne zapremine.

Dozvoljeni razmak – **tačno 1 sat**.

### Prenos po sesijama uz arhivu trenutnog stanja

Uređaj upisuje zapise kada se poveže, a ne strogo svakog sata. Primarni izvor je **trenutni protok** (koji izračunava uređaj); rezervni izvor je normalizovana Δ kumulativne zapremine:

$$
\dot Q_h = \frac{V_t - V_{t-\Delta t}}{\Delta t / 3600}
$$

Dozvoljeni razmak – **do 6 sati**; ako je $\Delta t > 6\text{ h}$, tačka se smatra nevalidnom (verovatno je reč o gubitku podataka, a ne o pražnjenju brojača).

### Čisto telemetrijski moduli

Uređaj šalje samo podatke o komunikaciji i stanju, a gas ne meri – izveštaj prikazuje N/A uz napomenu „ovaj uređaj nema merno mesto”.

### Rezervni izvor za retke podatke (sparse-fallback)

Ako primarna arhiva daje < 50% očekivanih tačaka, automatski se pokušava sa sekundarnom arhivom sesija (u izvornom obliku, bez satne mreže) i proračun se nastavlja na osnovu nje.

## Ograničenja metodologije

### Arhiva

Ako satna arhiva nije potpuna, sve procene za sate koji nedostaju su **približne**.

### Q/V

Usaglašavanje Q/V ima smisla samo kada Q i V:

- imaju istu osnovu zapremine (standardnu ili radnu);
- imaju ispravnu vrednost impulsa;
- potiču iz istog mernog izvora;
- vremenski su sinhronizovani.

Postupak overavanja opisan je u OIML R 137, a osnova konverzije u EN 12405-1 §7.

### Pasoš

Bez Qmin/Qmax, datuma overavanja, P_const ili vrednosti impulsa zaključak o obračunskom merenju mora biti dat uz rezervu.

### Sumnjivi obrasci

Obrasci umanjenog merenja **nisu dokaz** neovlašćene manipulacije. Oni samo određuju prioritet pregleda.

### AI komentar

AI komentar **ne učestvuje** u donošenju pravnog zaključka i ne zamenjuje formalna pravila. On samo pomaže da se situacija objasni razumljivim jezikom.

## Kako tumačiti izveštaj

<Image
  src="/images/ai-analytics/consumption-analytics/04_chart_qpt_profile.svg"
  alt="Protok, pritisak i temperatura sa profilom potrošnje"
/>

_Vizuelizacija Q/P/T i profili ponašanja._ Na glavnom grafikonu događaji su istaknuti poluprovidnim vertikalnim trakama prema tipu (skok / mirovanje / curenje / zaglavljen senzor / nema podataka) – svaki tip može da se prikaže ili sakrije klikom na njegovu oznaku. Klizne srednje vrednosti za 7 i 30 dana služe za sezonsko izglađivanje. Obrazac potrošnje prikazuje se na dva načina: dnevnim profilom (sat u danu), zasebno za radne dane i za vikend, i kalendarskom toplotnom mapom „dan u nedelji × mesec”, koja pokazuje stabilnost radnih smena.

<Image
  src="/images/ai-analytics/consumption-analytics/10_period_compare.svg"
  alt="Poređenje sa prethodnim periodom"
/>

_Poređenje sa prethodnim periodom._ Međugodišnja razlika krije dve zamke: (1) **promenu pokrivenosti prethodnog perioda** (ako je ona iznosila 6%, „33×” veći broj događaja artefakt je deljenja, a ne stvarni porast) i (2) **izostanak normalizacije po trajanju**. Zato se pri pokrivenosti < 50% u poređenju sakriva Δ % i prikazuju se samo apsolutne razlike, kako operater ne bi bio doveden u zabludu.

1. Počnite od bloka **Zaključak o obračunskom merenju**.
2. Proverite da li je period spreman za obračun.
3. Zasebno proverite trenutno praćenje.
4. Pređite na **5 incidenata najvišeg prioriteta**.
5. Ako postoji praznina na kraju perioda – pređite na odeljak „Komunikacija naspram arhive”.
6. Ako postoji neusaglašenost Q/V – pređite na analizu kumulativne zapremine.
7. Ako su senzori P/T zaglavljeni – pređite na odeljak „Stabilnost senzora”.
8. Ako pasoš nije potpun – **ne donosite** definitivan zaključak o obračunskom merenju.
9. Ako postoje sumnjivi obrasci – planirajte proveru, ali **ne donosite pravni zaključak**.
10. Sprovedite plan aktivnosti po ulogama.

## Minimalni kriterijumi za potpun izveštaj

Izveštaj se smatra potpunim ako sadrži:

- period analize • $H_\text{expected}$ • primljene zapise • validne zapise • zapise sa vrednošću NULL • unutrašnje praznine • prazninu na kraju perioda • pokrivenost • ažurnost • validnost Q/P/T • stanje senzora • procenu nepokrivene zapremine • usaglašavanje Q/V • monotonost V • poređenje komunikacije i arhive • popunjenost pasoša • 5 incidenata najvišeg prioriteta • plan aktivnosti po ulogama • kontrolnu listu za teren;

- tri obavezne napomene:
  - o umanjenom merenju (reč je o proceni slepe mrlje, a ne o iznosu gubitka);
  - o sumnji na neovlašćenu manipulaciju (obrasci ≠ dokaz);
  - o AI komentaru (nije pravni zaključak).

## Parametri pokretanja

| Parametar         | Opis                                                                                                                                                                                                                                                                                                                                            |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Merno mesto br.   | merno mesto koje se analizira                                                                                                                                                                                                                                                                                                                   |
| Period od         | početak prozora analize (podrazumevano: godinu dana unazad)                                                                                                                                                                                                                                                                                     |
| Period do         | kraj prozora analize (podrazumevano: juče)                                                                                                                                                                                                                                                                                                      |
| Proširena analiza | dodatno učitava arhivu komunikacionih sesija i arhivu nenormalnih režima rada korektora. Uključuje blokove „Spremnost izvora podataka”, „Stanje komunikacije” i „Dnevnik nenormalnih režima rada uređaja” i popunjava matricu osnovnih uzroka nivoom pouzdanosti i osnovnim uzrokom za svaki događaj. Izrada izveštaja traje 5–15 sekundi duže. |
