Soft odhad vykreslený jako jistá data ve finančním výhledu
import { Aside } from ‘@astrojs/starlight/components’;
Symptom
Sekce “Symptom”Majitel firmy se v kokpitu ptá: „Jak jste přišli na to, že peníze nedojdou? A proč tři budoucí měsíce ukazují úplně stejný příjem?” Graf výhledu cashflow ukazoval v několika po sobě jdoucích měsících identické částky příjmů a nad tím verdikt „výhled kladný — peníze nedojdou”.
Root cause
Sekce “Root cause”Výhled skládal tři různě tvrdé zdroje do jednoho čísla:
- Doklady — nezaplacené faktury se splatností (tvrdá data),
- podepsané zakázky s termínem — rozprostření zbývající fakturace do termínu (měkčí),
- podepsané zakázky bez termínu — fallback „rozlož zbývající částku rovnoměrně do 3 měsíců” (čistá heuristika).
Když většina zakázek nemá termín (běžné u importů z CRM), složka 3 dominuje → tři identické „třetiny” v grafu. Verdikt runway (banka + budoucí toky < 0?) počítal se součtem všech tří složek, takže silná věta stála na heuristice, a UI nijak nerozlišovalo, co je doklad a co domněnka. Bonus pasti: zakázka roky stará bez termínu kreslila příjem „do příštích 3 měsíců” donekonečna (okno se posouvá s časem) a fallback se aplikoval i na zakázky s termínem za horizontem grafu.
Fix
Sekce “Fix”Datový model nese složky odděleně a verdikt má úrovně:
// místo jednoho contractPredicted:contractPredictedFirm // zakázky s budoucím termínemcontractPredictedGuessed // bez termínu — fallback /3 měsícefutureCumulativeHard // jen doklady − náklady (konzervativní)futureCumulativeFirm // + firm složkafutureCumulative // + guessed (optimistický)
// runway ve 3 scénářích → 4 poctivé verdikty:// positive-hard | positive-with-firm | positive-only-with-estimates | negative- Silná věta „peníze nedojdou” se zobrazí bez výhrad jen když drží konzervativní scénář.
- Když kladný výhled drží až odhad, UI/e-mail říká doslova: „…výhled stojí na odhadu nevyfakturovaných zakázek bez termínu” + kdy by peníze došly bez něj.
- Graf: odhad šrafovaný/světlý s vlastní legendou; pod grafem coverage řádek „Výhled počítán z: banka + N dokladů + M zakázek, z toho K bez termínu”.
- Stale pravidlo: zakázka bez termínu starší 6 měsíců příjem nekreslí — místo toho vznikne akční priorita „doplňte termín / uzavřete”.
- AI narativní vrstva má validátor: text bez povinné výhrady se zahodí a padá na deterministický fallback.
Lekce
Sekce “Lekce”- Fallback heuristika je v pořádku — falešná jistota ne. Jakmile heuristika vstupuje do stejného čísla jako tvrdá data, musí být oddělitelná až do UI.
- Identické hodnoty v po sobě jdoucích obdobích jsou červená vlajka rovnoměrného rozpočítání — uživatel to pozná dřív než vývojář.
- Pozor na všechny renderovací cesty téhož čísla (text i HTML e-mailu, souhrn, AI přepis) — oprava jen jedné vytvoří vnitřně rozporný výstup.
- Silný verdikt počítej z nejkonzervativnější varianty; optimistickou ukazuj jako druhý scénář, ne jako fakt.