Výsledky extrakce jsou content-addressed a cachované
Tohle není optimalizace. Je to podmínka, bez které by event sourcing v tomhle produktu nefungoval — protože přehrání logu se vyplatí jen tehdy, když nestojí znovu všechny peníze za OCR a LLM.
- Klíč cache
- SHA-256 dokumentu plus verze extraktoru
- Přehrání projekce
- čte cache, nestahuje a nespouští OCR ani LLM
- Invalidace
- zvýšením verze extraktoru, selektivně podle typu dokumentu
- Stav
- plánováno (fáze 1: úložiště dokumentů, OCR, extrakce)
Ekonomika opravy
Bez cache by přehrání projekce znamenalo znovu vytěžit každý dokument. U backfillu v rozsahu celého rejstříku je to náklad, který se neschvaluje kvůli jedné opravené interpretaci pole.
Důsledek není, že se opravy zdraží. Důsledek je, že se přestanou dělat: tým odloží opravu chyby v datech na později a data tiše zestárnou do stavu, kterému nikdo nevěří. Levné přehrávání je jediná obrana proti tomuhle scénáři.
Adresování obsahem
Identita dokumentu není URL ani pořadové číslo v řízení, ale hash jeho bajtů. Tentýž dokument stažený znovu — nebo publikovaný ve dvou řízeních — se rozpozná jako už známý a nezpracovává se podruhé.
Zároveň tím zůstává stabilní odkaz, na kterém stojí provenience: hodnota ukazuje na hash a stránku, a ten odkaz přežije i opakované stažení.
Invalidace je záměrná, ne plošná
Klíč cache obsahuje i verzi extraktoru. Nová verze tak zneplatní jen to, co skutečně změnila — typicky jeden typ dokumentu — a zbytek se dál čte z cache.
Plošné vyhození cache je operace s cenou celého backfillu a zachází se s ní podle toho.
Kde to v repozitáři žije
docs/EXTRACTION.md— stádia pipeline a proč je cache architektonické rozhodnutídocs/ARCHITECTURE.md— úložiště, jejich znovupostavitelnost a záložní politikadocs/runbooks/replay.md— runbook přehrání projekce z logu
Souvisí
Event sourcing, protože zdroj je event stream
Systém je konzumentem oficiálního proudu událostí. Z něj staví lokální append-only repliku a z ní přehrává projekci aktuálního stavu. Oprava chyby v interpretaci znamená přehrát log, ne znovu stahovat rejstřík.
Detail
Dokumentová pipeline je oddělená od příjmu
Příjem je levný, rychlý a musí stíhat rejstřík. Extrakce je drahá, pomalá a občas potřebuje člověka. Spojit je znamená zpomalit příjem na rychlost nejpomalejšího skenu, proto jsou to dvě fronty s vlastními limity.
Detail
Dokumentová pipeline
PlánovánoStahování do content-addressed úložiště, OCR, extrakce do deklarovaného schématu, validace a skóre spolehlivosti. Výsledky budou cachované podle hashe dokumentu, takže přehrání projekce nic nestojí.
Detail