---
title: 'Analýza spotřeby'
description: Kompletní analýza jednoho plynoměrného uzlu — kvalita dat, profil spotřeby, pasport zařízení a žurnál událostí, s volitelným forenzním detailem.
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';

Analýza spotřeby je podrobný metrologický a provozní rozbor **jednoho plynoměrného uzlu** za zvolené období. Cílem není pouze vykreslit graf spotřeby, ale odpovědět na praktické otázky metrologické služby. Analýza využívá mezinárodní metrologické normy tam, kde podkládají konkrétní hodnotu: ISO 5167 (clonové měření), EN 12405-1 (elektronické přepočítávače objemu), OIML R 137 (plynoměry), OIML R 140 (měřicí systémy pro plynná paliva), ISO 6976 (výhřevnost), EN 1359 (membránové plynoměry) a EN 14236 (ultrazvukové domácí plynoměry).

## Účel

<Image src="/images/ai-analytics/consumption-analytics/01_hero_block.svg" alt="Záhlaví reportu" />

_Záhlaví reportu._ První, co čtenář vidí: název a adresu uzlu, typ přepočítávače, klíčové metriky poslední hodiny (P, T), celkový objem dat v okně (body), počet detekovaných událostí, metodu analýzy (rules / rules+LLM / LLM-only), dobu načítání a pokryté období.

Report odpovídá na každodenní otázky metrologické služby:

- jsou data za zvolené období úplná;
- lze archiv použít pro uzávěrku obchodního období;
- existuje koncová mezera na konci období;
- funguje aktuální telemetrie;
- odpovídá hodinový průtok kumulativnímu objemu;
- nezasekl se některý ze snímačů P/T;
- nejsou problémy s komunikací nebo doručením archivu;
- je metrologický pasport dostatečně vyplněný;
- nevyskytují se podezřelé vzorce podměřování;
- je třeba výjezd na místo;
- která role má jednat: metrolog, dispečer, komunikační technik, integrační technik, terénní četa nebo fakturační analytik.

<Alert type="warning">
  Report **není formální protokol o incidentu**. Nedokazuje neoprávněnou manipulaci, obtok ani
  krádež plynu. Ukazuje technické a metrologické indikátory, které vyžadují ověření. Právní verdikt
  je samostatný proces, který vyžaduje povinný výjezd na místo.
</Alert>

## Základní logika

Report odděluje **tři ortogonální hodnocení**, která se nesmějí směšovat:

| Hodnocení                        | Význam                                                 |
| -------------------------------- | ------------------------------------------------------ |
| Připravenost dat za období       | je archiv použitelný pro zvolené období                |
| Stav aktuální telemetrie         | je uzel v okamžiku generování reportu „naživu"         |
| Připravenost k obchodní uzávěrce | lze období použít pro fakturaci bez ruční rekonciliace |

Historické období může být pro analýzu dokonale použitelné, i když uzel dnes mlčí.

**Příklad správné interpretace:**

```
Data za období:        použitelná s výhradami
Aktuální monitoring:   zhoršený
Obchodní uzávěrka:     není připravena k finální uzávěrce
```

To není rozpor. Znamená to: historická data jsou částečně použitelná, ale aktuální telemetrie nebo obchodní uzávěrka vyžaduje dodatečné ověření.

## Slovníček

| Pojem                 | Význam                                            |
| --------------------- | ------------------------------------------------- |
| Q                     | hodinový průtok, m³/h                             |
| P                     | tlak plynu, kPa                                   |
| T                     | teplota plynu, °C                                 |
| V                     | kumulativní objem, m³                             |
| ΣQ                    | součet hodinových průtoků za období               |
| ΔV                    | přírůstek kumulativního objemu za období          |
| H_expected            | kolik hodin mělo v reportovaném období proběhnout |
| H_received            | kolik hodinových záznamů bylo skutečně přijato    |
| H_validQ              | kolik záznamů má platnou hodnotu průtoku          |
| H_nullQ               | kolik záznamů existuje, ale s NULL průtokem       |
| H_missing             | kolik hodin v archivu chybí                       |
| final_tail_gap        | absence dat na konci období                       |
| internal_gap          | mezera uvnitř období                              |
| freshness             | jak aktuální je poslední hodina archivu           |
| passport completeness | míra vyplnění metrologického pasportu             |
| incident              | seskupený problém vyžadující akci                 |

## Časové okno analýzy

### Začátek a konec období

Začátek a konec období nastavujete vy. Report analyzuje každou hodinu od 00:00 prvního dne do 23:00 posledního dne:

$$
\text{window\_start} = \text{report\_start } 00{:}00, \quad
\text{window\_end} = \text{report\_end } 23{:}00
$$

### Očekávaný počet hodin

$$
H_\text{expected} = \mathrm{count}(\text{hours from window\_start to window\_end})
$$

Pro roční období typicky $H_\text{expected} \approx 8760$.

## Rozpis dostupnosti archivu

| Kategorie           | Význam                                       |
| ------------------- | -------------------------------------------- |
| Platná hodina       | záznam existuje se správnou hodnotou průtoku |
| NULL hodina         | záznam existuje, ale průtok je prázdný       |
| Vnitřní mezera      | hodina chybí uvnitř období                   |
| Koncová mezera      | chybějící hodiny na konci období             |
| Nepozorovaná hodina | jakákoli hodina bez platné hodnoty průtoku   |

**Vzorce:**

$$
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">
  Koncová mezera **se nezapočítává dvojnásobně** k `missing_records`, pokud jsou tyto hodiny již
  součástí celkového počtu chybějících záznamů.
</Alert>

## Úplnost dat

<Image
  src="/images/ai-analytics/consumption-analytics/07_completeness_validity.svg"
  alt="Dostupnost dat, aktuálnost a validita"
/>

_Dostupnost, aktuálnost a validita_ jsou tři ortogonální řezy v kontrole způsobilosti archivu před jakoukoli věcnou analýzou. **Úplnost** odpovídá: kolik z očekávaných hodin dorazilo. **Aktuálnost** — jak aktuální jsou data _právě teď_. **Validita** — zda hodnoty spadají do fyzikálně rozumných rozsahů.

### Vzorec pokrytí

$$
\mathrm{Coverage}_\text{valid} = \frac{H_\text{validQ}}{H_\text{expected}} \times 100\,\%
$$

Navíc:

$$
\mathrm{Coverage}_\text{received} = \frac{H_\text{received}}{H_\text{expected}} \times 100\,\%
$$

Rozdíl je podstatný:

- `Coverage_received` — zda záznamy vůbec dorazily;
- `Coverage_valid` — zda jsou použitelné pro analýzu průtoku.

### Interpretace pokrytí

| Pokrytí | Stav       | Význam                          |
| ------- | ---------- | ------------------------------- |
| ≥ 98 %  | Vynikající | archiv téměř úplný              |
| 95–98 % | Dobrý      | použitelný s drobnými výhradami |
| 80–95 % | Varování   | znatelné mezery                 |
| 50–80 % | Závažný    | nutná ruční rekonciliace        |
| < 50 %  | Kritický   | pro většinu úloh nepoužitelný   |

## Koncová mezera

Koncová mezera = absence dat archivu na konci zvoleného období.

$$
H_\text{tail} = \text{window\_end} - \text{last\_valid\_archive\_hour}
$$

| Koncová mezera | Stav                                                |
| -------------- | --------------------------------------------------- |
| ≤ 2 h          | přijatelná                                          |
| 2–6 h          | varování                                            |
| 6–24 h         | závažná                                             |
| > 24 h         | kritická                                            |
| > 168 h        | zařízení mlčí přes týden — urgentní výjezd na místo |

Koncová mezera odpovídá: **lze období považovat za plně uzavřené?** Pokud data na konci chybějí, report může být stále použitelný pro retrospektivní analýzu, ale **není připraven** pro finální obchodní uzávěrku (viz Obchodní metrologický verdikt).

## Aktuálnost dat

Dvě samostatné metriky aktuálnosti.

### Aktuálnost vůči konci období

Používá se pro historickou analýzu a fakturaci:

$$
\mathrm{Lag}_\text{period} = \text{window\_end} - \text{last\_valid\_archive\_hour}
$$

Odpovídá: **jsou data k dispozici až do konce zvoleného období?**

### Aktuálnost vůči okamžiku generování

Používá se pro aktuální monitoring:

$$
\mathrm{Lag}_\text{current} = \text{generation\_time} - \text{last\_valid\_archive\_hour}
$$

Odpovídá: **je uzel naživu právě teď?**

### Pokrytí posledních 24 hodin

$$
\mathrm{Fresh}_{24h} = \frac{H_\text{validQ, last 24h}}{24} \times 100\,\%
$$

### Kompozitní skóre aktuálnosti

$$
\mathrm{LagScore} = \max(0, 100 - 2 \times \mathrm{Lag}_\text{period})
$$

$$
\mathrm{FreshnessScore} = \frac{\mathrm{LagScore} + \mathrm{Fresh}_{24h}}{2}
$$

## Stav aktuální telemetrie

<Image
  src="/images/ai-analytics/consumption-analytics/16_telemetry_major.svg"
  alt="Stav aktuální telemetrie a souhrn uzlu"
/>

_Aktuální monitoring a souhrn uzlu._ Tento blok odpovídá na otázku „můžeme s tímto archivem jednat právě teď?". Porovnávají se tři okamžiky: poslední archivovaná hodina, konec reportovaného okna a okamžik generování reportu. Pokud je komunikace aktuální, ale archiv zaostává — problém **není u dispečera**, ale v serverovém parseru/uploadu. AI komentář vytvoří krátký, lidsky čitelný souhrn pro operátora, **aniž by přepisoval** formální stavy.

Počítáno **relativně k okamžiku generování**, nikoli k období:

$$
\mathrm{Lag}_\text{archive, current} = \text{generation\_time} - \text{last\_archive\_hour}
$$

$$
\mathrm{Age}_\text{session} = \text{generation\_time} - \text{last\_session\_time}
$$

| Zpoždění   | Stav     |
| ---------- | -------- |
| ≤ 6 h      | normální |
| 6–24 h     | varování |
| 24–72 h    | závažný  |
| > 72 h     | kritický |
| žádná data | kritický |

**Diferenciální diagnostika:**

| Symptom                          | Pravděpodobná příčina                                 |
| -------------------------------- | ----------------------------------------------------- |
| relace aktuální, archiv zaostává | problém s **doručením archivu / parserem / importem** |
| žádné relace, žádný archiv       | modem / SIM / anténa / napájení / baterie             |

## Validita dat

Kontroly fyzikálního rozsahu po kanálech:

| Kanál     | Podmínka                                       |
| --------- | ---------------------------------------------- |
| Průtok Q  | $Q \geq 0$                                     |
| Tlak P    | $0 < P \leq 5000\text{ kPa}$                   |
| Teplota T | $-50\,°\mathrm{C} \leq T \leq 80\,°\mathrm{C}$ |

Po kanálech:

$$
\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}
$$

Agregátně:

$$
\mathrm{Validity}_\text{total} = \frac{\sum N_\text{ok}}{\sum N_\text{checked}} \times 100\,\%
$$

## Stabilita snímačů

<Image
  src="/images/ai-analytics/consumption-analytics/06_sensor_health.svg"
  alt="Diagnostika stability snímačů"
/>

_Podrobná diagnostika snímačů P a T._ Každý zaseknutý úsek dostane svůj začátek/konec/délku/hodnotu. Dlouhé intervaly se stejnou hodnotou jsou téměř vždy známkou selhání ADC / resetu snímače / provozního zastavení průtoku — **nikoli** reálnou fyzikou. Špičky — náhlé skoky ≥ prahu za hodinu — jsou naopak telemetrický artefakt nebo reset snímače.

<Image
  src="/images/ai-analytics/consumption-analytics/05_sensors_critical.svg"
  alt="Stav snímačů a plán akcí"
/>

_Interpretace a plán akcí pro snímače._ „Stav snímače: CRITICAL" je finální textový souhrn napříč oběma kanály. Každý detekovaný problém je automaticky opatřen doporučením, prioritou, odpovědnou rolí a krátkým spouštěčem (co konkrétně se aktivovalo).

### Zaseknutý snímač

Snímač se považuje za zaseknutý, pokud se hodnota mění jen nepatrně po dobu delší než prah (24 h):

$$
H_\text{stuck} \geq 24 \text{ h}
$$

Tolerance shodnosti (0,1 %):

$$
\mathrm{tol}(x) = \max\bigl(0.05,\ |x| \times 0.001\bigr)
$$

Body se považují za stejné, pokud $|x_i - x_\text{run}| \leq \mathrm{tol}(x_\text{run})$.

### Teplotní špička

$$
|T_i - T_{i-1}| > 20\,°\mathrm{C / h}
$$

### Tlaková špička

$$
|P_i - P_{i-1}| > \max(1.0, 0.5 \times \overline{P})
$$

### Interpretace

| Indikátor          | Význam                                                |
| ------------------ | ----------------------------------------------------- |
| Dlouhé zaseknutí T | možné selhání snímače T                               |
| Dlouhé zaseknutí P | možné selhání snímače P nebo režim `P_const`          |
| Mnoho špiček P     | nestabilita kanálu nebo telemetrický artefakt         |
| Mnoho špiček T     | chyba snímače nebo náhlá změna technologického režimu |

<Alert type="warning">
  Zaseknutý snímač **není důkazem neoprávněné manipulace**. Jde primárně o metrologické riziko,
  které vyžaduje ověření podle OIML R 137 / EN 12405-1.
</Alert>

## Agregátní skóre kvality archivu

<Image
  src="/images/ai-analytics/consumption-analytics/08_quality_summary.svg"
  alt="Agregátní panel kvality"
/>

_Agregátní panel kvality._ Nahoře — klíčové KPI reportu (hodiny dat, objem, události, nečinnost/drift). Níže — záložky sekcí (kvalita dat, profil spotřeby, technický pasport, podměřování a manipulace, anomálie a incidenty, denní, zdroje). Na záložce kvality dat — 6 dílčích indikátorů 0–100 plus slovní verdikt a váhy kompozitního skóre.

Report vytváří **5 ortogonálních skóre** (0–100 každé) pokrývajících odlišné aspekty kvality:

| Skóre                         | O čem                                |
| ----------------------------- | ------------------------------------ |
| `score_historical_archive`    | použitelnost dat historického období |
| `score_data_validity`         | správnost hodnot Q/P/T               |
| `score_sensor_health`         | stav snímačů (zaseknutí, špičky)     |
| `score_timeliness`            | aktuálnost archivu a relací          |
| `score_operational_readiness` | připravenost pro aktuální monitoring |

<Alert type="warning">
  Jediný **kompozitní skalár** „celková kvalita" se záměrně nevytváří — směšování historické
  použitelnosti s aktuálností dává falešně uklidňující obraz. Každé skóre se čte zvlášť s vlastním
  verdiktem.
</Alert>

## Odhad potenciálně nepozorovaného objemu

<Image
  src="/images/ai-analytics/consumption-analytics/14_uncovered_volume.svg"
  alt="Riziková odhad nepozorovaného objemu"
/>

_Dva různé odhady téhož objemu._ Průměr za období je konzervativní (doplnění koncové mezery při plochém profilu), zatímco profil aktivních hodin lépe zachycuje denní rytmus (pracovní směna / noc / víkend). Rozdíl mezi nimi je **rozsah nejistoty**, nikoli jediný bod. Úroveň rizika závisí na délce mezery a charakteristickém průměrném průtoku.

<Image
  src="/images/ai-analytics/consumption-analytics/11_anomalous_month.svg"
  alt="Anomální měsíc spotřeby"
/>

_Anomální měsíc spotřeby._ Měsíční anomálie jsou samostatný signál vyhodnocovaný vůči ročnímu rytmu (topná sezóna vs léto). Pokud určitý měsíc **podstatně** překračuje medián ostatních (práh × 2), je automaticky vyzdvižen nahoru s návrhem zkontrolovat tok událostí, pasport a technologické příčiny.

Tento blok odhaduje, kolik plynu mohlo projít během hodin bez platných dat archivu.

<Alert type="warning">
  Toto **není potvrzená ztráta**. Není to údaj o krádeži ani automatický nárok na náhradu škody. Je
  to odhad **slepého místa** — objemu nepokrytého platným archivem.
</Alert>

### Hodiny bez platných dat

$$
H_\text{blind} = H_\text{missing} + H_\text{nullQ}
$$

### Odhad na základě průměru

$$
\overline{Q} = \frac{\sum Q_\text{valid}}{H_\text{validQ}},
\qquad
V_\text{blind, mean} = H_\text{blind} \times \overline{Q}
$$

Vhodné pro objekty s relativně rovnoměrnou spotřebou.

### Odhad na základě profilu

Typický průtok pro hodinu dne $h$ (medián za období):

$$
\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))
$$

Pokud je profil pro hodinu nespolehlivý, použije se $\overline{Q}$.

### Rozsah odhadu

Zobrazují se oba odhady. Pokud jsou blízké — denní profil je stabilní. Pokud se výrazně rozcházejí — objekt má výrazný provozní režim a je nutná opatrnost.

## Nečinný uzel

Pokud uzel za období neměl prakticky žádnou reálnou spotřebu, absence průtoku **se nepovažuje za riziko**.

### Kontrola nečinnosti

Adaptivní práh blízký nule:

$$
Q_\text{nearzero} = \max(0.5, 0.05 \times \mathrm{median}(Q))
$$

Uzel se považuje za nečinný, když platí **obě** podmínky:

$$
\overline{Q} \leq 0.05\text{ m³/h} \quad \text{and} \quad V_\text{blind, mean} < 5\text{ m³}
$$

### Efekt

Škála závažnosti se zmírní (maximum `medium` místo `critical`) a report uvádí:

> Uzel byl fakticky mimo provoz / sezónně zastaven. Absence spotřeby se nepovažuje za riziko podměřování.

## Rekonciliace Q/V

<Image
  src="/images/ai-analytics/consumption-analytics/13_qv_volume.svg"
  alt="Analýza nakumulovaného objemu"
/>

_Rekonciliace hodinového průtoku vs akumulátor._ Metrologický obchodní výpočet je řízen přírůstkem V, nikoli součtem okamžitých hodnot Q. Shoda ΣQ ≈ ΔV ≥ 80 % hodin je normou pro zdravý uzel. **Návraty V** (z hodiny na hodinu, $V_{t+1} < V_t$) a **prudké skoky V** jsou kritickými známkami selhání archivu a téměř vždy vyžadují šetření.

Klíčový metrologický blok. Porovnává součet hodinových průtoků s přírůstkem kumulativního čítače.

### Základní veličiny

$$
\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\,\%
$$

### Interpretace nesouladu

| $\vert\mathrm{Diff}_\%\vert$ | Verdikt                         |
| ---------------------------- | ------------------------------- |
| ≤ 2 %                        | `good` (sjednoceno)             |
| 2–5 %                        | `warn` (sjednoceno s výhradami) |
| > 5 %                        | `bad` (nesoulad)                |
| žádné V                      | `unavailable`                   |
| neznámý základ Q/V           | vyžaduje ověření pasportu       |

### Monotonicita čítače

Čítač musí růst nebo zůstat konstantní.

Návrat: $\Delta V_h < -0.5\text{ m³}$ → incident `V_ROLLBACK`.

Prudký skok: $\Delta V_h > V_\text{jump\_threshold}$ → incident `V_JUMP`.

### Hodinová rekonciliace $Q \cdot 1\text{h} \approx \Delta V$

Pro každou hodinu s oběma $Q$ i $V$:

$$
\mathrm{Match}_h = \frac{|Q_h - \Delta V_h|}{\max(Q_h, \Delta V_h)}
$$

Hodina je sjednocená, pokud $\mathrm{Match}_h \leq 20\,\%$. Podíl sjednocených hodin:

$$
\mathrm{Match}_\% = \frac{H_\text{matched}}{H_\text{checked}} \times 100\,\%
$$

### Omezení rekonciliace Q/V

Ani dobrá číselná shoda neznamená obchodní použitelnost. Je třeba vědět:

| Otázka                              | Proč na tom záleží                     |
| ----------------------------------- | -------------------------------------- |
| Q — standardní nebo pracovní objem? | různý základ dává zkreslení            |
| V — standardní nebo pracovní objem? | potřebujete stejný základ              |
| Jaká je váha impulzu?               | nutná pro úplnou obchodní rekonciliaci |
| Je V monotonní?                     | návraty zpochybňují archiv             |
| Existují ruční korekce?             | mohou vysvětlit rozcházení             |

Pokud je základ neznámý:

> Rekonciliace Q/V je číselně sjednocená, ale obchodní základ není potvrzen. Je nutné ověření pasportu, váhy impulzu a objemového základu (viz EN 12405-1 §7).

## Komunikace vs archiv

<Image
  src="/images/ai-analytics/consumption-analytics/12_csq_vs_archive.svg"
  alt="Diagnostika CSQ vs archiv"
/>

_Diferenciální diagnostika „komunikace vs upload"._ Pokud v okně existují relace, ale archiv ne — zařízení odpovídá přes GSM/CSQ, ale archiv buď není zapsán, nebo není serverem naparsován. Toto **není** problém dispečera / modemu — měl by jej řešit integrační technik.

### Základní vzorce

$$
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\,\%
$$

### Doručení archivu

U každé mezery kontrolujeme, zda ve stejném časovém okně proběhly relace:

- `gap_with_sessions` — mezera v archivu s přítomnými relacemi;
- `gap_without_sessions` — mezera v archivu a žádné relace.

### Diferenciální diagnostika

| Situace                             | Pravděpodobná příčina                                |
| ----------------------------------- | ---------------------------------------------------- |
| žádné relace, žádný archiv          | modem / SIM / anténa / napájení                      |
| relace OK, archiv se neaktualizuje  | doručení hodinového archivu / parser / import        |
| relace OK, ale část archivu chybí   | částečné čtení / zlom stránky / backend              |
| relace aktuální, archiv zastaralý   | **nejde o problém GSM**, problém s doručením archivu |
| časové razítko relace v budoucnosti | nesoulad hodin / časového pásma                      |

### Kvalita signálu

Pokud je kvalita signálu udávána jako CSQ:

$$
\mathrm{RSSI}_\text{dBm} \approx -113 + 2 \times \mathrm{CSQ}
$$

Příklad: CSQ=29 → RSSI ≈ −55 dBm (vynikající).

## Metrologický pasport

### Povinná pole s váhami

Pasport definuje 11 polí s váhami:

| Pole                       | Váha    | Proč                               |
| -------------------------- | ------- | ---------------------------------- |
| equipment_serial_number    | 1.0     | identifikace                       |
| equipment_type_id          | 1.0     | model/typ                          |
| installation_date          | 0.8     | provozní kontext                   |
| **verification_date**      | **1.5** | právní platnost (OIML R 137 cl. 3) |
| next_verification_date     | 1.0     | kontrola lhůty                     |
| **flow_range** (Qmin/Qmax) | **1.5** | rozsah podle EN 12405-1            |
| meter_serial_number        | 1.0     | identifikace na místě              |
| meter_type                 | 1.0     | metrologická vazba                 |
| firmware_version           | 0.5     | kompatibilita a známé chyby        |
| p_const                    | 0.5     | dosazovaný tlak                    |
| pulse_weight               | 0.8     | pro rekonciliaci Q/V               |

### Vzorec úplnosti

$$
\mathrm{PassportCompleteness} = \frac{\sum w_\text{filled}}{\sum w_\text{required}} \times 100\,\%
$$

### Interpretace

| Úplnost | Stav                |
| ------- | ------------------- |
| ≥ 80 %  | COMPLETE            |
| 50–80 % | PARTIAL             |
| 20–50 % | INCOMPLETE          |
| < 20 %  | CRITICAL_INCOMPLETE |

Pokud je pasport neúplný, obchodní verdikt musí obsahovat výhradu:

> Metrologický pasport neúplný. Obchodní verdikt vyžaduje ruční rekonciliaci a odkaz na OIML R 137 / EN 12405-1.

## Podezřelé vzorce podměřování

<Image
  src="/images/ai-analytics/consumption-analytics/03_forensic_signals.svg"
  alt="Třídění signálů podměřování"
/>

_Třídění signálů._ Každý signál je zařazen do kategorie, má úroveň důkazu (low / medium / high), terénní prioritu, formální důkaz a doporučenou akci. **Toto není verdikt o uzlu** — je to seznam oken, která vyžadují ruční kontrolu operátorem nebo servisním personálem.

Jde o **heuristiky**, nikoli důkazy.

### Práh blízký nule

$$
Q_\text{nearzero} = \max(0.5, 0.05 \times \mathrm{median}(Q))
$$

### Nulový průtok během aktivních hodin

Hodina je podezřele tichá, pokud $Q_h < Q_\text{nearzero}$ A spadá do typického aktivního intervalu objektu.

### Živý P + nula (Q≈0 s živým P)

Může jít o:

- vypnutí / uzavřený ventil na výstupu / sezónní zastavení;
- režim P_const nebo selhání snímače;
- chybu impulzního vstupu;
- **možnou neoprávněnou manipulaci** — ale ne prokázanou.

<Alert type="warning">
  Živý P + nula **není důkazem neoprávněné manipulace**. Je to pouze důvod ověřit provozní režim
  uzlu.
</Alert>

### Přerušení–obnovení

Vzorec: normální Q → Q≈0 → normální Q. Prudká změna režimu, ale ne důkaz porušení. Možná vysvětlení: plánované vypnutí / zastavení objektu / uzavření ventilu / selhání kanálu / ruční zásah / chyba doručení archivu.

### Potvrzená manipulace

Samotný statistický vzorec **nemůže** potvrdit neoprávněnou manipulaci. Je třeba **tvrdý důkaz**:

- otevření skříně (cover_open v událostech zařízení);
- magnetické rušení;
- změny parametrů (parameter_change);
- neautorizovaná úprava P_const;
- reset archivu;
- potvrzená manipulace s impulzním vstupem;
- akceptační protokol z výjezdu na místo;
- fotografie / plomby / odečty na místě.

Správný formát verdiktu:

```
Potvrzená manipulace:  NENALEZENA
Podezřelé vzorce:      PŘÍTOMNY
Právní připravenost:   NENÍ PŘIPRAVENA
```

## Obchodní metrologický verdikt

<Image
  src="/images/ai-analytics/consumption-analytics/02_commercial_verdict.svg"
  alt="Obchodní metrologický verdikt"
/>

_Manažerský stav._ 7 řádků uzavírá 7 různých otázek na manažerské úrovni: lze období uzavřít (fakturace), funguje uzel právě teď (monitoring), shodují se archiv a akumulátor (Q×h vs ΔV), je třeba výjezd na místo, jsou přítomny podezřelé vzorce, jak integrální jsou data, jsou přítomny všechny parametry pasportu. Každý řádek je klikatelný a odkazuje na důkazní blok reportu.

Hlavní verdikt pro manažera metrologické služby.

### Pravidla fakturačního archivu

**Připraven:**

- Pokrytí ≥ 98 %
- Koncová mezera ≤ 2 h
- Q/V sjednoceno (`good`)
- V monotonní
- Pasport COMPLETE
- Žádné kritické problémy snímačů

**Připraven s výhradami:**

- Pokrytí 95–98 %
- Koncová mezera 2–24 h
- Q/V sjednoceno s výhradami (`warn`)
- Pasport PARTIAL
- Žádný kritický blokátor

**Není připraven k finální uzávěrce:**

- Koncová mezera > 24 h NEBO
- Q/V neklasifikováno NEBO
- Přítomen návrat V NEBO
- Pasport neúplný v obchodních polích NEBO
- Kritický problém snímače

**Nepoužitelný:**

- Pokrytí kriticky nízké NEBO
- Archiv poškozený NEBO
- V má závažné návraty/špičky NEBO
- Q/V zcela nekonzistentní NEBO
- Klíčový kanál nedostupný

### Aktuální monitoring — hodnocen samostatně

| Podmínka                             | Stav                           |
| ------------------------------------ | ------------------------------ |
| archiv i relace aktuální             | použitelný                     |
| archiv zaostává, ale relace přítomny | zhoršený / problém s doručením |
| archiv i relace zastaralé            | kritický / problém komunikace  |
| časové razítko neplatné              | nespolehlivý                   |

### Inspekce v terénu

Výjezd je nutný, pokud platí **alespoň jedna** z podmínek:

- koncová mezera neobnovena;
- Q/V neklasifikováno;
- přítomen návrat čítače;
- pasport kriticky neúplný;
- zaseknutý snímač P nebo T;
- podezřelé vzorce podměřování;
- žurnál událostí nedostupný, zatímco existují silné anomálie;
- aktuální telemetrie kriticky zhoršená.

## Incidenty

Incident je **seskupený** problém, nikoli každý surový záznam.

### Typy

| Typ                    | Význam                            |
| ---------------------- | --------------------------------- |
| `FINAL_TAIL_GAP`       | žádná data na konci období        |
| `COMMUNICATION_GAP`    | výpadek komunikace                |
| `ARCHIVE_DELIVERY_GAP` | relace přítomny, archiv nedoručen |
| `Q_V_MISMATCH`         | Q a V nesedí                      |
| `V_ROLLBACK`           | čítač se vrátil zpět              |
| `P_SENSOR_STUCK`       | tlak zaseknut                     |
| `T_SENSOR_STUCK`       | teplota zaseknuta                 |
| `PASSPORT_INCOMPLETE`  | chybějící pole pasportu           |
| `TAMPERING_CANDIDATE`  | podezřelý vzorec, ne důkaz        |

### Princip seskupování

```
surové události → seskupené incidenty → prioritní incidenty
```

Příklad: 301 surových → 15 seskupených → Top-5 pro akci. Operátorovi se nesmí 301 identických událostí ukazovat jako 301 samostatných problémů.

## Plán akcí

<Image
  src="/images/ai-analytics/consumption-analytics/09_action_plan_checklist.svg"
  alt="Plán akcí podle role a terénní kontrolní seznam"
/>

_Akce s prioritami P0/P1/P2._ Každá akce nese odpovědnou roli, termín (dnes / během dne / 1–3 dny) a **příčinu**, která ji zařadila do seznamu. Terénní kontrolní seznam se sestavuje automaticky z verdiktu a otevřených incidentů: co vzít, na co se podívat, co změřit — označeno P0/P1 pro prioritizaci na místě.

Každé doporučení je vázáno na příčinu.

| Pole     | Popis                             |
| -------- | --------------------------------- |
| ID       | číslo doporučení                  |
| Priorita | P0 / P1 / P2 / P3                 |
| Akce     | co udělat                         |
| Role     | kdo je odpovědný                  |
| Termín   | dokdy dokončit                    |
| Příčina  | proč tato akce vznikla            |
| Stav     | open / assigned / done / verified |

### Příklady pravidel

| Podmínka                              | Akce                                                                   |
| ------------------------------------- | ---------------------------------------------------------------------- |
| koncová mezera > 24h, relace aktuální | backend: obnovit doručení hodinového archivu                           |
| koncová mezera > 24h, žádné relace    | komunikace: zkontrolovat modem/SIM/napájení                            |
| T zaseknuta ≥ 24h                     | metrolog: ověřit snímač T (OIML R 137)                                 |
| P zaseknut ≥ 24h                      | metrolog: ověřit snímač P nebo nastavení P_const                       |
| nesoulad Q/V                          | metrolog + fakturace: rekonciliovat V, Q, váhu impulzu (EN 12405-1 §7) |
| neúplný pasport                       | administrátor / metrolog: vyplnit pasport                              |
| podezřelé vzorce                      | terénní četa: zkontrolovat plomby, impulzní vstup, ventily             |

## Terénní kontrolní seznam

### Co vzít s sebou

referenční manometr • referenční teploměr • multimetr • tester signálu/antény • sada plomb • inspekční protokol • přístup k archivu a pasportu • pořízení fotografií.

### Co zkontrolovat

plomby přepočítávače a plynoměru • impulzní kabel • snímače P, T • modem, anténa, napájení, baterie • uzavírací ventily • možný obtok • pasport vs skutečné zařízení.

### Co změřit

referenční P, T • aktuální Q • kumulativní V • odečty externího plynoměru • CSQ/RSSI • napájecí napětí • vstupní impulzy • datum/čas přepočítávače • P_const • Qmin/Qmax • váha impulzu.

### Co vyfotografovat

displej přepočítávače (P/T/Q/V) • datum/čas na zařízení • výrobní čísla • plomby • impulzní kabel • snímače • modem a anténa • celkový pohled • polohy ventilů.

## Zdroj podle behaviorálního profilu

Konkrétní archiv API a pole se vybírají automaticky podle chování zařízení. Tři rodiny:

### Souvislý hodinový archiv

Zařízení zapisuje záznam **přesně jednou za hodinu**. Priorita zdrojů:

1. přímé pole „průtok za hodinu" (pokud jej zařízení počítá);
2. Δ kumulativního standardního objemu;
3. Δ kumulativního pracovního objemu.

Přípustná mezera — **přesně 1 hodina**.

### Upload po relacích s archivem aktuálního stavu

Zařízení zapisuje záznamy při připojení, nikoli striktně po hodinách. Primárním zdrojem je **okamžitý průtok** (počítaný zařízením); záložně Δ kumulativního objemu normalizovaná:

$$
\dot Q_h = \frac{V_t - V_{t-\Delta t}}{\Delta t / 3600}
$$

Přípustná mezera — **až 6 hodin**; pokud $\Delta t > 6\text{ h}$, bod se považuje za neplatný (pravděpodobně ztráta dat, nikoli výboj čítače).

### Bloky čisté telemetrie

Zařízení přenáší pouze komunikaci/stav, neměří plyn — report ukazuje N/A s poznámkou „toto zařízení nemá měřicí bod".

### Záloha pro řídká data (sparse-fallback)

Pokud primární archiv poskytne < 50 % očekávaných bodů, automaticky se zkouší sekundární archiv relací (tak jak je, bez hodinové mřížky) a výpočet pokračuje z něj.

## Omezení metodiky

### Archiv

Pokud je hodinový archiv neúplný, všechny odhady pro chybějící hodiny jsou **přibližné**.

### Q/V

Rekonciliace Q/V má smysl pouze tehdy, když Q a V:

- sdílejí jediný objemový základ (standardní nebo pracovní);
- mají správnou váhu impulzu;
- patří ke stejnému měřicímu zdroji;
- jsou časově synchronizovány.

Postup ověření viz OIML R 137 a základ přepočtu viz EN 12405-1 §7.

### Pasport

Bez Qmin/Qmax, data ověření, P_const nebo váhy impulzu musí obchodní verdikt nést výhradu.

### Podezřelé vzorce

Vzorce podměřování **nejsou důkazem** neoprávněné manipulace. Pouze stanovují prioritu inspekce.

### AI komentář

AI komentář **se neúčastní** právního verdiktu a nenahrazuje formální pravidla. Pouze pomáhá vysvětlit situaci běžným jazykem.

## Jak číst report

<Image
  src="/images/ai-analytics/consumption-analytics/04_chart_qpt_profile.svg"
  alt="Průtok, tlak a teplota s profilem spotřeby"
/>

_Vizualizace Q/P/T a behaviorální profily._ Na hlavním grafu jsou události zvýrazněny jako poloprůhledné svislé pásy podle typu (spike / idle / leak / stuck sensor / no data) — kterýkoli typ lze zobrazit/skrýt kliknutím na jeho štítek. Klouzavé 7/30denní průměry poskytují sezónní vyhlazení. Vzorec spotřeby je dvojí rozklad: denní profil (hodina dne) rozdělený na všední den/víkend a kalendářní heatmapa „den v týdnu × měsíc" ukazující stabilitu pracovní směny.

<Image
  src="/images/ai-analytics/consumption-analytics/10_period_compare.svg"
  alt="Porovnání s předchozím obdobím"
/>

_Meziobdobní porovnání._ Meziroční delta nese dvě pasti: (1) **změna pokrytí předchozího období** (pokud bylo 6 %, „33×" nárůst událostí je dělicí artefakt, ne realita) a (2) **žádná normalizace délky**. Proto při pokrytí < 50 % porovnání maskuje Δ % a ukazuje pouze absolutní delty, aby operátora nedovedlo k chybným závěrům.

1. Začněte **Obchodním metrologickým verdiktem**.
2. Zjistěte, zda je období připraveno k fakturaci.
3. Samostatně zkontrolujte aktuální monitoring.
4. Přejděte na **Top-5 incidentů**.
5. Pokud existuje koncová mezera — jděte na „komunikace vs archiv".
6. Pokud existuje nesoulad Q/V — jděte na analýzu nakumulovaného objemu.
7. Pokud jsou snímače P/T zaseknuté — jděte na stabilitu snímačů.
8. Pokud je pasport neúplný — **nevydávejte** tvrdý obchodní verdikt.
9. Pokud existují podezřelé vzorce — naplánujte kontrolu, ale **nevydávejte právní verdikt**.
10. Proveďte plán akcí podle role.

## Minimální kritéria úplného reportu

Report se považuje za úplný, pokud obsahuje:

- období analýzy • $H_\text{expected}$ • přijaté záznamy • platné záznamy • NULL záznamy • vnitřní mezery • koncová mezera • pokrytí • aktuálnost • validita Q/P/T • zdraví snímačů • odhad nepozorovaného objemu • rekonciliace Q/V • monotonicita V • komunikace vs archiv • úplnost pasportu • Top-5 incidentů • plán akcí podle role • terénní kontrolní seznam;

- tři povinná upozornění:
  - o podměřování (jde o odhad slepého místa, nikoli údaj o ztrátě);
  - o podezření z manipulace (vzorce ≠ důkaz);
  - o AI komentáři (nejde o právní verdikt).

## Parametry spuštění

| Parametr          | Popis                                                                                                                                                                                                                                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Měřicí uzel #     | měřicí uzel k analýze                                                                                                                                                                                                                                                                                              |
| Období od         | začátek okna analýzy (výchozí: jeden rok zpět)                                                                                                                                                                                                                                                                     |
| Období do         | konec okna analýzy (výchozí: včera)                                                                                                                                                                                                                                                                                |
| Rozšířená analýza | navíc načítá archiv komunikačních relací a archiv abnormálních událostí přepočítávače. Aktivuje bloky Data Source Readiness, Communication Health a Device Abnormal Log a vyplňuje matici Root Cause Matrix s mírou jistoty a kořenovou příčinou pro každou událost. Přidává 5–15 sekund k době sestavení reportu. |
