---
title: 'Analitika potrošnje'
description: Potpuna analiza jednog mjernog mjesta za plin – kvaliteta podataka, profil potrošnje, putovnica uređaja i dnevnik događaja, uz forenzičke detalje po izboru.
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 iscrpna je mjeriteljska i operativna analiza **jednog mjernog mjesta za plin** za odabrano razdoblje. Cilj nije samo nacrtati grafikon potrošnje, nego odgovoriti na praktična pitanja službe mjerenja. Analiza se poziva na međunarodne mjeriteljske dokumente tamo gdje oni potkrepljuju konkretnu vrijednost: ISO 5167 (mjerenje protoka mjernom blendom), EN 12405-1 (elektronički uređaji za pretvorbu obujma plina), OIML R 137 (plinomjeri), OIML R 140 (mjerni sustavi za plinovita goriva), ISO 6976 (ogrjevna vrijednost), EN 1359 (membranski plinomjeri) i EN 14236 (ultrazvučni plinomjeri za kućanstva).

## Svrha

<Image
  src="/images/ai-analytics/consumption-analytics/01_hero_block.svg"
  alt="Zaglavlje izvješća"
/>

_Zaglavlje izvješća._ Ono što čitatelj prvo vidi: naziv i adresa mjernog mjesta, tip korektora, ključni pokazatelji za posljednji sat (P, T), ukupna količina podataka u vremenskom prozoru (broj točaka), broj otkrivenih događaja, metoda analize (pravila / pravila + LLM / samo LLM, gdje je LLM veliki jezični model), trajanje preuzimanja podataka i obuhvaćeno razdoblje.

Izvješće odgovara na svakodnevna pitanja službe mjerenja:

- jesu li podaci za odabrano razdoblje potpuni;
- može li se arhiva koristiti za zatvaranje obračunskog razdoblja;
- postoji li praznina na kraju razdoblja;
- radi li telemetrija u ovom trenutku;
- slaže li se satni protok s kumulativnim obujmom;
- je li neki od senzora P/T zaglavljen;
- postoje li problemi s komunikacijom ili isporukom arhive;
- je li mjeriteljska putovnica dovoljno popunjena;
- postoje li sumnjivi obrasci umanjenog mjerenja;
- je li potreban izlazak na teren;
- tko treba postupiti: mjeritelj, dispečer, inženjer za komunikacije, inženjer za integraciju, terenska ekipa ili analitičar obračuna.

<Alert type="warning">
  Izvješće **nije formalni zapisnik o incidentu**. Ne dokazuje neovlašteni zahvat, zaobilaženje
  mjerenja ni krađu plina. Prikazuje tehničke i mjeriteljske pokazatelje koje treba provjeriti.
  Pravni zaključak poseban je postupak koji obvezno zahtijeva izlazak na teren.
</Alert>

## Osnovna logika

Izvješće razdvaja **tri međusobno neovisne ocjene** koje se ne smiju miješati:

| Ocjena                                        | Značenje                                                          |
| --------------------------------------------- | ----------------------------------------------------------------- |
| Spremnost podataka za razdoblje               | je li arhiva upotrebljiva za odabrano razdoblje                   |
| Trenutačni status telemetrije                 | javlja li se mjerno mjesto u trenutku generiranja izvješća        |
| Spremnost za zatvaranje obračunskog razdoblja | može li se razdoblje koristiti za obračun bez ručnog usklađivanja |

Povijesno razdoblje može biti potpuno upotrebljivo za analizu čak i ako se mjerno mjesto danas ne javlja.

**Primjer ispravnog tumačenja:**

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

Ovo nije proturječje. To znači da su povijesni podaci djelomično upotrebljivi, ali da trenutačna telemetrija ili zatvaranje obračunskog razdoblja zahtijevaju dodatnu provjeru.

## Pojmovnik

| Pojam                 | Značenje                                          |
| --------------------- | ------------------------------------------------- |
| Q                     | satni protok, m³/h                                |
| P                     | tlak plina, kPa                                   |
| T                     | temperatura plina, °C                             |
| V                     | kumulativni obujam, m³                            |
| ΣQ                    | zbroj satnih protoka za razdoblje                 |
| ΔV                    | prirast kumulativnog obujma za razdoblje          |
| H_expected            | koliko sati obuhvaća razdoblje izvješćivanja      |
| H_received            | koliko je satnih zapisa stvarno primljeno         |
| H_validQ              | koliko zapisa ima valjanu vrijednost protoka      |
| H_nullQ               | koliko zapisa postoji, ali je protok NULL         |
| H_missing             | koliko sati nedostaje u arhivi                    |
| final_tail_gap        | izostanak podataka na kraju razdoblja             |
| internal_gap          | praznina unutar razdoblja                         |
| ažurnost              | koliko je svjež posljednji sat u arhivi           |
| popunjenost putovnice | u kojoj je mjeri mjeriteljska putovnica popunjena |
| incident              | grupirani problem koji zahtijeva reakciju         |

## Vremenski prozor analize

### Početak i kraj razdoblja

Početak i kraj razdoblja zadajete vi. Izvješće analizira svaki sat od 00:00 prvog dana do 23:00 posljednjeg 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 razdoblje od godinu dana obično je $H_\text{expected} \approx 8760$.

## Dostupnost arhive po kategorijama

| Kategorija                  | Značenje                                        |
| --------------------------- | ----------------------------------------------- |
| Valjan sat                  | zapis postoji i ima ispravnu vrijednost protoka |
| Sat s vrijednošću NULL      | zapis postoji, ali je protok prazan             |
| Unutarnja praznina          | sat koji nedostaje unutar razdoblja             |
| Praznina na kraju razdoblja | sati koji nedostaju na kraju razdoblja          |
| Nepokriveni sat             | svaki sat bez valjane vrijednosti 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 razdoblja **ne uračunava se dvaput**: ne dodaje se na `missing_records` ako su
  ti sati već dio ukupnog broja sati koji nedostaju.
</Alert>

## Potpunost podataka

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

_Dostupnost, ažurnost i valjanost_ tri su međusobno neovisna aspekta provjere upotrebljivosti arhive prije bilo kakve suštinske analize. **Potpunost** odgovara na pitanje koliko je od očekivanih sati stiglo. **Ažurnost** – koliko su podaci svježi _upravo sada_. **Valjanost** – jesu li vrijednosti u fizički razumnim rasponima.

### Formula pokrivenosti

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

Osim toga:

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

Razlika je bitna:

- `Coverage_received` – jesu li zapisi uopće stigli;
- `Coverage_valid` – jesu li upotrebljivi za analizu protoka.

### Tumačenje pokrivenosti

| Pokrivenost | Status     | Značenje                          |
| ----------- | ---------- | --------------------------------- |
| ≥ 98%       | Odlično    | arhiva je gotovo potpuna          |
| 95–98%      | Dobro      | upotrebljivo uz manje rezerve     |
| 80–95%      | Upozorenje | primjetne praznine                |
| 50–80%      | Ozbiljno   | potrebno je ručno usklađivanje    |
| < 50%       | Kritično   | neupotrebljivo za većinu zadataka |

## Praznina na kraju razdoblja

Praznina na kraju razdoblja = izostanak podataka u arhivi na kraju odabranog razdoblja.

$$
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 dulje od tjedan dana – hitan izlazak na teren |

Praznina na kraju razdoblja odgovara na pitanje: **može li se razdoblje smatrati potpuno zatvorenim?** Ako podaci na kraju nedostaju, izvješće i dalje može biti upotrebljivo za retrospektivnu analizu, ali **nije spremno** za konačno zatvaranje obračunskog razdoblja (vidi odjeljak „Zaključak o obračunskom mjerenju”).

## Ažurnost podataka

Dvije odvojene metrike ažurnosti.

### Ažurnost u odnosu na kraj razdoblja

Koristi se za povijesnu analizu i obračun:

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

Odgovara na pitanje: **postoje li podaci do kraja odabranog razdoblja?**

### Ažurnost u odnosu na trenutak generiranja

Koristi se za trenutačno praćenje:

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

Odgovara na pitanje: **javlja li se mjerno mjesto upravo sada?**

### Pokrivenost u posljednja 24 sata

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

### Zbirna ocjena ažurnosti

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

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

## Trenutačni status telemetrije

<Image
  src="/images/ai-analytics/consumption-analytics/16_telemetry_major.svg"
  alt="Trenutačni status telemetrije i sažetak mjernog mjesta"
/>

_Trenutačno praćenje i sažetak mjernog mjesta._ Ovaj blok odgovara na pitanje „možemo li odmah postupiti na temelju ove arhive?” Uspoređuju se tri trenutka: posljednji arhivirani sat, kraj vremenskog prozora izvješća i trenutak generiranja izvješća. Ako su komunikacijske sesije svježe, a arhiva kasni – problem **nije kod dispečera**, nego u parseru ili prijamu arhive na poslužiteljskoj strani. AI komentar daje operateru kratak sažetak na razumljivom jeziku, **ne mijenjajući** formalne statuse.

Računa se **u odnosu na trenutak generiranja**, a ne u odnosu na razdoblje:

$$
\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                     | Vjerojatan uzrok                                   |
| --------------------------- | -------------------------------------------------- |
| sesije svježe, arhiva kasni | problem s **isporukom arhive / parserom / uvozom** |
| nema sesija, nema arhive    | modem / SIM / antena / napajanje / baterija        |

## Valjanost podataka

Provjera fizičkih raspona po kanalima:

| Kanal         | Uvjet                                          |
| ------------- | ---------------------------------------------- |
| Protok Q      | $Q \geq 0$                                     |
| Tlak 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 vrijednosti bilježe se početak, kraj, trajanje i vrijednost. Dugi intervali s istom vrijednošću gotovo su uvijek znak kvara A/D pretvornika, resetiranja senzora ili operativnog zaustavljanja protoka – a **ne** stvarnih fizičkih promjena. Skokovi – nagle promjene ≥ prag unutar jednog sata – naprotiv, artefakt su telemetrije ili posljedica resetiranja 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” konačni je tekstualni sažetak za oba kanala. Svakom otkrivenom problemu automatski se dodjeljuju preporuka, prioritet, odgovorna uloga i kratak opis okidača (što je točno izazvalo upozorenje).

### Zaglavljen senzor

Senzor se smatra zaglavljenim ako se njegova vrijednost gotovo ne mijenja dulje 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)
$$

Točke se smatraju jednakima 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 tlaka

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

### Tumačenje

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

<Alert type="warning">
  Zaglavljen senzor **nije dokaz neovlaštenog zahvata**. To je prije svega mjeriteljski rizik koji
  zahtijeva provjeru prema OIML R 137 / EN 12405-1.
</Alert>

## Zbirne ocjene kvalitete arhive

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

_Zbirni panel kvalitete._ Na vrhu su ključni KPI izvješća (sati s podacima, obujam, događaji, mirovanje/drift). Ispod su kartice odjeljaka (kvaliteta podataka, profil potrošnje, tehnička putovnica, umanjeno mjerenje i neovlašteni zahvat, anomalije i incidenti, dnevni pregled, izvori). Na kartici kvalitete podataka nalazi se 6 djelomičnih pokazatelja na ljestvici 0–100, uz opisni zaključak i težine zbirne ocjene.

Izvješće daje **5 međusobno neovisnih ocjena** (svaka na ljestvici 0–100) koje pokrivaju različite aspekte kvalitete:

| Ocjena                        | Na što se odnosi                               |
| ----------------------------- | ---------------------------------------------- |
| `score_historical_archive`    | upotrebljivost podataka za povijesno razdoblje |
| `score_data_validity`         | ispravnost vrijednosti Q/P/T                   |
| `score_sensor_health`         | stanje senzora (zaglavljenost, skokovi)        |
| `score_timeliness`            | ažurnost arhive i sesija                       |
| `score_operational_readiness` | spremnost za trenutačno praćenje               |

<Alert type="warning">
  Jedinstveni **zbirni skalar** „ukupna kvaliteta” namjerno se ne izračunava – miješanje povijesne
  upotrebljivosti s ažurnošću daje lažno umirujuću sliku. Svaka se ocjena tumači zasebno, s
  vlastitim zaključkom.
</Alert>

## Procjena potencijalno nepokrivenog obujma

<Image
  src="/images/ai-analytics/consumption-analytics/14_uncovered_volume.svg"
  alt="Procjena rizika od nepokrivenog obujma"
/>

_Dvije različite procjene istog obujma._ Srednja vrijednost za razdoblje daje konzervativnu procjenu (popunjavanje praznine na kraju razdoblja uz ravnomjeran profil), dok profil aktivnih sati bolje odražava dnevni ritam (radna smjena / noć / vikend). Razlika između njih čini **raspon neizvjesnosti**, a ne jednu točku. Razina rizika ovisi o duljini praznine i karakterističnom srednjem protoku.

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

_Mjesec s anomalnom potrošnjom._ Mjesečne anomalije poseban su signal koji se ocjenjuje u odnosu na godišnji ritam (sezona grijanja naspram ljeta). Ako neki mjesec **znatno** premašuje medijan ostalih mjeseci (prag × 2), automatski se ističe na vrhu, uz prijedlog da se provjere tijek događaja, putovnica i tehnološki uzroci.

Ovaj blok procjenjuje koliko je plina moglo proteći tijekom sati bez valjanih podataka u arhivi.

<Alert type="warning">
  Ovo **nije potvrđeni gubitak**. Nije ni podatak o krađi ni automatski zahtjev za naknadu štete. To
  je procjena **slijepe točke** – obujma koji ne pokriva valjana arhiva.
</Alert>

### Sati bez valjanih podataka

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

### Procjena na temelju srednje vrijednosti

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

Ova je procjena prikladna za objekte s relativno ujednačenom potrošnjom.

### Procjena na temelju profila

Tipičan protok za sat u danu $h$ (medijan za razdoblje):

$$
\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}$.

### Raspon procjene

Prikazuju se obje procjene. Ako su bliske – dnevni profil je stabilan. Ako se znatno razlikuju – objekt ima izražen režim rada i potreban je oprez.

## Mjerno mjesto u mirovanju

Ako mjerno mjesto tijekom razdoblja praktički nije imalo stvarnu potrošnju, izostanak protoka **ne smatra se rizikom**.

### Provjera mirovanja

Adaptivni prag blizu nule:

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

Smatra se da je mjerno mjesto u mirovanju kada su ispunjena **oba** uvjeta:

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

### Učinak

Ljestvica ozbiljnosti postaje blaža (najviše `medium` umjesto `critical`), a izvješće navodi:

> Mjerno mjesto zapravo je bilo izvan rada / sezonski zaustavljeno. Izostanak potrošnje ne smatra se rizikom umanjenog mjerenja.

## Usklađivanje Q/V

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

_Usklađivanje satnog protoka s brojačem._ Mjeriteljski obračun potrošnje temelji se na prirastu V, a ne na zbroju trenutačnih vrijednosti Q. Podudaranje ΣQ ≈ ΔV u ≥ 80% sati uobičajeno je za ispravno mjerno mjesto. **Vraćanje V unatrag** (između uzastopnih sati, $V_{t+1} < V_t$) i **nagli skokovi V** kritični su znakovi kvara arhive i gotovo uvijek zahtijevaju provjeru.

Ključni mjeriteljski blok. Uspoređuje zbroj satnih protoka s 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 neusklađenosti

| $\vert\mathrm{Diff}_\%\vert$ | Zaključak                      |
| ---------------------------- | ------------------------------ |
| ≤ 2%                         | `good` (usklađeno)             |
| 2–5%                         | `warn` (usklađeno uz rezerve)  |
| > 5%                         | `bad` (neusklađenost)          |
| nema V                       | `unavailable`                  |
| osnova Q/V nepoznata         | potrebna je provjera putovnice |

### Monotonost brojača

Stanje brojača mora rasti ili ostati nepromijenjeno.

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

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

### Usklađivanje $Q \cdot 1\text{h} \approx \Delta V$ po satima

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

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

Sat je usklađen ako je $\mathrm{Match}_h \leq 20\,\%$. Udio usklađenih sati:

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

### Ograničenja usklađivanja Q/V

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

| Pitanje                          | Zašto je važno                              |
| -------------------------------- | ------------------------------------------- |
| Q – standardni ili radni obujam? | različite osnove unose sustavnu pogrešku    |
| V – standardni ili radni obujam? | potrebna je ista osnova                     |
| Kolika je vrijednost impulsa?    | nužna je za potpuno obračunsko usklađivanje |
| Je li V monoton?                 | vraćanja unatrag dovode arhivu u pitanje    |
| Postoje li ručne korekcije?      | mogu objasniti odstupanje                   |

Ako osnova nije poznata:

> Q i V brojčano su usklađeni, ali obračunska osnova nije potvrđena. Potrebno je provjeriti putovnicu, vrijednost impulsa i osnovu obujma (vidi 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 prijama arhive”._ Ako u prozoru postoje sesije, a arhive nema – uređaj odgovara preko GSM/CSQ, ali se arhiva ili ne upisuje ili je poslužitelj ne parsira. To **nije** problem dispečera / modema – treba ga riješiti 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 se prazninu provjerava je li u istom vremenskom prozoru bilo sesija:

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

### Diferencijalna dijagnostika

| Situacija                               | Vjerojatan 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 dio arhive nedostaje | djelomično očitavanje / prekid na granici stranice / poslužiteljska strana |
| sesije svježe, arhiva zastarjela        | **nije problem GSM veze**, nego isporuke arhive                            |
| vremenska oznaka sesije u budućnosti    | neusklađenost sata / vremenske zone                                        |

### Kvaliteta signala

Ako se kvaliteta signala iskazuje kao CSQ:

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

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

## Mjeriteljska putovnica

### Obvezna polja i njihove težine

Putovnica definira 11 polja s 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, točka 3) |
| next_verification_date     | 1,0     | praćenje roka                          |
| **flow_range** (Qmin/Qmax) | **1,5** | raspon prema EN 12405-1                |
| meter_serial_number        | 1,0     | identifikacija na licu mjesta          |
| meter_type                 | 1,0     | povezivanje s mjeriteljskim podacima   |
| firmware_version           | 0,5     | kompatibilnost i poznate pogreške      |
| p_const                    | 0,5     | zamjenska vrijednost tlaka             |
| pulse_weight               | 0,8     | za usklađivanje 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 putovnica nije potpuna, zaključak o obračunskom mjerenju mora se donijeti uz rezervu:

> Mjeriteljska putovnica nije potpuna. Zaključak o obračunskom mjerenju zahtijeva ručno usklađivanje i pozivanje na OIML R 137 / EN 12405-1.

## Sumnjivi obrasci umanjenog mjerenja

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

_Razvrstavanje signala._ Svaki se signal svrstava u kategoriju i ima razinu dokaza (niska / srednja / visoka), prioritet izlaska na teren, formalne dokaze i preporučenu radnju. **Ovo nije zaključak o mjernom mjestu** – to je popis vremenskih prozora koje operater ili servisno osoblje treba ručno provjeriti.

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

### Prag blizu nule

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

### Nulti protok tijekom aktivnih sati

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

### Promjenjiv P + nula (Q≈0 uz promjenjiv P)

Uzrok može biti:

- isključenje / zatvoren ventil na izlazu / sezonsko zaustavljanje;
- režim P_const ili kvar senzora;
- pogreška impulsnog ulaza;
- **mogući neovlašteni zahvat** – ali nije dokazan.

<Alert type="warning">
  Obrazac „promjenjiv P + nula” **nije dokaz neovlaštenog zahvata**. To je samo razlog za provjeru
  režima rada mjernog mjesta.
</Alert>

### Prekid i ponovna uspostava protoka

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

### Potvrđeni neovlašteni zahvat

Sam statistički obrazac **ne može** potvrditi neovlašteni zahvat. Potrebni su **čvrsti dokazi**:

- otvaranje ormara (cover_open u događajima uređaja);
- djelovanje magnetskim poljem;
- izmjene parametara (parameter_change);
- neovlaštena izmjena P_const;
- resetiranje arhive;
- potvrđena manipulacija impulsnim ulazom;
- zapisnik s terena;
- fotografije / plombe / očitanja na licu mjesta.

Ispravan format zaključka:

```
Potvrđeni neovlašteni zahvat:  NIJE OTKRIVEN
Sumnjivi obrasci:              POSTOJE
Pravna spremnost:              NIJE SPREMNO
```

## Zaključak o obračunskom mjerenju

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

_Status za rukovodstvo._ Ovih 7 redaka odgovara na 7 različitih pitanja na razini rukovodstva: može li se razdoblje zatvoriti (obračun), radi li mjerno mjesto sada (praćenje), slažu li se arhiva i brojač (Q×h naspram ΔV), je li potreban izlazak na teren, postoje li sumnjivi obrasci, koliko su podaci cjeloviti i jesu li prisutni svi parametri putovnice. Klikom na redak prelazi se na blok s dokazima u izvješću.

Glavni zaključak za voditelja službe mjerenja.

### Pravila za obračunsku arhivu

**Spremno:**

- Pokrivenost ≥ 98%
- Praznina na kraju razdoblja ≤ 2 h
- Q/V usklađeni (`good`)
- V monoton
- Putovnica COMPLETE
- Nema kritičnih problema sa senzorima

**Spremno uz rezerve:**

- Pokrivenost 95–98%
- Praznina na kraju razdoblja 2–24 h
- Q/V usklađeni uz rezerve (`warn`)
- Putovnica PARTIAL
- Nema kritične prepreke

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

- Praznina na kraju razdoblja > 24 h ILI
- Q/V nisu klasificirani ILI
- Postoji vraćanje V unatrag ILI
- Putovnica nepotpuna 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 unatrag/skokove ILI
- Q/V potpuno neusklađeni ILI
- Ključni kanal nedostupan

### Trenutačno praćenje – ocjenjuje se zasebno

| Uvjet                            | Status                             |
| -------------------------------- | ---------------------------------- |
| arhiva i sesija svježe           | upotrebljivo                       |
| arhiva kasni, ali sesije postoje | narušeno / problem s isporukom     |
| arhiva i sesije zastarjele       | kritično / problem s komunikacijom |
| vremenska oznaka nevaljana       | nepouzdano                         |

### Pregled na terenu

Izlazak na teren potreban je ako je ispunjen **barem jedan** od sljedećih uvjeta:

- praznina na kraju razdoblja nije popunjena;
- Q/V nisu klasificirani;
- postoji vraćanje brojača unatrag;
- putovnica je kritično nepotpuna;
- senzor P ili T je zaglavljen;
- postoje sumnjivi obrasci umanjenog mjerenja;
- dnevnik događaja nije dostupan, a postoje izražene anomalije;
- trenutačna telemetrija kritično je narušena.

## Incidenti

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

### Tipovi

| Tip                    | Značenje                               |
| ---------------------- | -------------------------------------- |
| `FINAL_TAIL_GAP`       | nema podataka na kraju razdoblja       |
| `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 unatrag               |
| `P_SENSOR_STUCK`       | zaglavljena vrijednost tlaka           |
| `T_SENSOR_STUCK`       | zaglavljena vrijednost temperature     |
| `PASSPORT_INCOMPLETE`  | nedostaju polja putovnice              |
| `TAMPERING_CANDIDATE`  | sumnjiv obrazac, a ne dokaz            |

### Načelo grupiranja

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

Primjer: 301 neobrađeni događaj → 15 grupiranih incidenata → 5 najvišeg prioriteta za postupanje. Operateru se ne smije prikazati 301 istovjetan 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 kontrolni popis za teren"
/>

_Aktivnosti s prioritetima P0/P1/P2._ Svaka aktivnost ima odgovornu ulogu, rok (danas / tijekom dana / 1–3 dana) i **uzrok** zbog kojeg je uvrštena na popis. Kontrolni popis za teren sastavlja se automatski na temelju zaključka i otvorenih incidenata: što ponijeti, što pregledati, što izmjeriti – s oznakama P0/P1 za određivanje prioriteta na licu mjesta.

Svaka je preporuka vezana uz uzrok.

| Polje     | Opis                                           |
| --------- | ---------------------------------------------- |
| ID        | broj preporuke                                 |
| Prioritet | P0 / P1 / P2 / P3                              |
| Radnja    | što treba učiniti                              |
| Uloga     | tko je odgovoran                               |
| Rok       | do kada treba završiti                         |
| Uzrok     | zbog čega je radnja predviđena                 |
| Status    | otvorena / dodijeljena / izvršena / provjerena |

### Primjeri pravila

| Uvjet                          | Radnja                                                                           |
| ------------------------------ | -------------------------------------------------------------------------------- |
| praznina > 24 h, sesije svježe | tim za poslužiteljsku stranu: ponovno uspostaviti isporuku satne arhive          |
| praznina > 24 h, nema sesija   | tim za komunikaciju: provjeriti modem/SIM/napajanje                              |
| T zaglavljen ≥ 24 h            | mjeritelj: provjeriti senzor T (OIML R 137)                                      |
| P zaglavljen ≥ 24 h            | mjeritelj: provjeriti senzor P ili postavku P_const                              |
| neusklađenost Q/V              | mjeritelj + služba obračuna: uskladiti V, Q i vrijednost impulsa (EN 12405-1 §7) |
| putovnica nepotpuna            | administrator / mjeritelj: popuniti putovnicu                                    |
| sumnjivi obrasci               | terenska ekipa: provjeriti plombe, impulsni ulaz, ventile                        |

## Kontrolni popis za teren

### Što ponijeti

kontrolni manometar • kontrolni termometar • multimetar • tester signala/antene • pribor za plombiranje • obrazac zapisnika o pregledu • pristup arhivi i putovnici • oprema za fotografiranje.

### Što provjeriti

plombe na korektoru i plinomjeru • impulsni kabel • senzori P, T • modem, antena, napajanje, baterija • zaporni ventili • mogući obilazni vod • putovnica naspram stvarne opreme.

### Što izmjeriti

kontrolne vrijednosti P, T • trenutačni protok Q • kumulativni obujam V • očitanja vanjskog mjerila • CSQ/RSSI • napon napajanja • ulazni impulsi • datum/vrijeme korektora • P_const • Qmin/Qmax • vrijednost impulsa.

### Što fotografirati

zaslon korektora (P/T/Q/V) • datum/vrijeme na uređaju • serijski brojevi • plombe • impulsni kabel • senzori • modem i antena • opći izgled • položaji ventila.

## Izvor podataka prema profilu ponašanja

Konkretna arhiva i polje u API-ju biraju se automatski prema ponašanju uređaja. Tri skupine:

### Kontinuirana satna arhiva

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

1. neposredno polje „protok po satu” (ako ga uređaj izračunava);
2. Δ kumulativnog standardnog obujma;
3. Δ kumulativnog radnog obujma.

Dopušteni razmak – **točno 1 sat**.

### Prijenos po sesijama uz arhivu trenutačnog stanja

Uređaj upisuje zapise kada se poveže, a ne strogo svakog sata. Primarni izvor je **trenutačni protok** (koji izračunava uređaj); rezervni izvor je normalizirana Δ kumulativnog obujma:

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

Dopušteni razmak – **do 6 sati**; ako je $\Delta t > 6\text{ h}$, točka se smatra nevaljanom (vjerojatno je riječ o gubitku podataka, a ne o pražnjenju brojača).

### Čisto telemetrijski moduli

Uređaj šalje samo podatke o komunikaciji i stanju, a plin ne mjeri – izvješće prikazuje N/A uz napomenu „ovaj uređaj nema mjerno mjesto”.

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

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

## Ograničenja metodologije

### Arhiva

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

### Q/V

Usklađivanje Q/V ima smisla samo kada Q i V:

- imaju istu osnovu obujma (standardnu ili radnu);
- imaju ispravnu vrijednost impulsa;
- potječu iz istog mjernog izvora;
- vremenski su sinkronizirani.

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

### Putovnica

Bez Qmin/Qmax, datuma ovjeravanja, P_const ili vrijednosti impulsa zaključak o obračunskom mjerenju mora se donijeti uz rezervu.

### Sumnjivi obrasci

Obrasci umanjenog mjerenja **nisu dokaz** neovlaštenog zahvata. Oni samo određuju prioritet pregleda.

### AI komentar

AI komentar **ne sudjeluje** u donošenju pravnog zaključka i ne zamjenjuje formalna pravila. On samo pomaže objasniti situaciju razumljivim jezikom.

## Kako tumačiti izvješće

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

_Vizualizacija Q/P/T i profili ponašanja._ Na glavnom grafikonu događaji su istaknuti poluprozirnim okomitim trakama prema tipu (skok / mirovanje / istjecanje / zaglavljen senzor / nema podataka) – svaki se tip može prikazati ili sakriti klikom na njegovu oznaku. Klizne srednje vrijednosti 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 toplinskom kartom „dan u tjednu × mjesec”, koja pokazuje stabilnost radnih smjena.

<Image
  src="/images/ai-analytics/consumption-analytics/10_period_compare.svg"
  alt="Usporedba s prethodnim razdobljem"
/>

_Usporedba s prethodnim razdobljem._ Međugodišnja razlika krije dvije zamke: (1) **promjenu pokrivenosti prethodnog razdoblja** (ako je ona iznosila 6%, „33×” veći broj događaja artefakt je dijeljenja, a ne stvarni porast) i (2) **izostanak normalizacije po trajanju**. Zato se pri pokrivenosti < 50% u usporedbi skriva Δ % i prikazuju se samo apsolutne razlike, kako operater ne bi bio doveden u zabludu.

1. Počnite od bloka **Zaključak o obračunskom mjerenju**.
2. Provjerite je li razdoblje spremno za obračun.
3. Zasebno provjerite trenutačno praćenje.
4. Prijeđite na **5 incidenata najvišeg prioriteta**.
5. Ako postoji praznina na kraju razdoblja – prijeđite na odjeljak „Komunikacija naspram arhive”.
6. Ako postoji neusklađenost Q/V – prijeđite na analizu kumulativnog obujma.
7. Ako su senzori P/T zaglavljeni – prijeđite na odjeljak „Stabilnost senzora”.
8. Ako putovnica nije potpuna – **ne donosite** konačan zaključak o obračunskom mjerenju.
9. Ako postoje sumnjivi obrasci – planirajte provjeru, ali **ne donosite pravni zaključak**.
10. Provedite plan aktivnosti po ulogama.

## Minimalni kriteriji za potpuno izvješće

Izvješće se smatra potpunim ako sadrži:

- razdoblje analize • $H_\text{expected}$ • primljene zapise • valjane zapise • zapise s vrijednošću NULL • unutarnje praznine • prazninu na kraju razdoblja • pokrivenost • ažurnost • valjanost Q/P/T • stanje senzora • procjenu nepokrivenog obujma • usklađivanje Q/V • monotonost V • usporedbu komunikacije i arhive • popunjenost putovnice • 5 incidenata najvišeg prioriteta • plan aktivnosti po ulogama • kontrolni popis za teren;

- tri obvezne napomene:
  - o umanjenom mjerenju (riječ je o procjeni slijepe točke, a ne o iznosu gubitka);
  - o sumnji na neovlašteni zahvat (obrasci ≠ dokaz);
  - o AI komentaru (nije pravni zaključak).

## Parametri pokretanja

| Parametar         | Opis                                                                                                                                                                                                                                                                                                                                                |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Mjerno mjesto br. | mjerno mjesto koje se analizira                                                                                                                                                                                                                                                                                                                     |
| Razdoblje od      | početak prozora analize (zadano: godinu dana unatrag)                                                                                                                                                                                                                                                                                               |
| Razdoblje do      | kraj prozora analize (zadano: jučer)                                                                                                                                                                                                                                                                                                                |
| Proširena analiza | dodatno učitava arhivu komunikacijskih 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 temeljnih uzroka razinom pouzdanosti i temeljnim uzrokom za svaki događaj. Izrada izvješća traje 5–15 sekundi dulje. |
