Časté dotazy

Časté dotazy o Analyzátoru bankovních výpisů

Ochrana dat a compliance

Opouštějí data mou infrastrukturu?

Ne. Analyzátor bankovních výpisů funguje jako bezstavová knihovna. Veškeré zpracování -- analýza, maskování PII, extrakce archivů -- probíhá v lokální runtime paměti. Žádná API volání, žádné cloudové služby, žádná telemetrie. XML parsery jsou zpevněny pomocí no_network=True, což blokuje veškerý odchozí přístup na úrovni parseru. Vaše finanční data nikdy neopustí vaše prostředí.

Jak funguje maskování PII?

Citlivá pole jsou maskována dříve, než se dostanou k vaší aplikační logice. Parser identifikuje jména dlužníků, jména věřitelů, IBAN a poštovní adresy a nahradí je řetězcem ***REDACTED*** ve výstupu konzole a v režimu streaming.

  • Maskování je ve výchozím nastavení zapnuto ve výstupu CLI a v režimu streaming.
  • Exporty souborů (CSV, JSON, Excel) zachovávají nemaskovaná data pro další zpracování.
  • Povolení plných dat pomocí --show-pii v CLI nebo redact_pii=False v API.

Je proces extrakce deterministický?

Ano -- identický výstup bajt po bajtu při každém spuštění. Při stejném vstupním souboru parser pokaždé vyprodukuje stejný výsledek. Žádná náhodnost, žádná modelová inference, žádné heuristické vzorkování. CI vynucuje determinismus s 467 testy při 100% pokrytí větví, včetně fuzzingu založeného na vlastnostech pomocí Hypothesis.

Jaké standardy compliance projekt dodržuje?

Projekt udržuje dokumentaci v souladu s ISO 13485 s plnou sledovatelností:

  • Kvantifikovaný Registr rizik s hodnocením závažnosti/pravděpodobnosti a posouzením reziduálního rizika.
  • Plán verifikace a validace s 19 kontrolovanými kroky v 5 fázích.
  • Postup řízení změn s posouzením dopadů a protokoly pro návrat.
  • Registr SOUP pokrývající všechny závislosti s úrovněmi rizika a sledováním konce životnosti.
  • Matice sledovatelnosti mapující návrhové vstupy na implementaci a verifikaci.

Každá verze obsahuje CycloneDX SBOM, kontrolní součty SHA-256 a atestaci provenance sestavení na GitHub.

Výkon a škálovatelnost

Jak rychlý je Analyzátor bankovních výpisů?

Prahové hodnoty výkonu jsou validovány v CI při každém commitu:

Metrika Hodnota
Propustnost CAMT.053 27 000+ transakcí/sekundu
Propustnost PAIN.001 52 000+ transakcí/sekundu
Latence na transakci (CAMT) 37 mikrosekund
Latence na transakci (PAIN.001) 19 mikrosekund
Čas do prvního výsledku < 2 ms

Jak se zpracovávají velké soubory?

Streaming s omezenou pamětí -- testováno na 50 000 transakcích na soubor. Použijte parse_streaming() pro inkrementální zpracování XML souborů. Každá transakce je vrácena jako slovník; elementy jsou po zpracování vymazány, aby se zabránilo růstu paměti. Paměť neroste s velikostí souboru -- test s 50K transakcemi (25+ MB) využívá méně než 2x paměti oproti testu s 10K transakcemi.

Pro soubory přesahující 50 MB (např. PAIN.001 dávky host-to-host se 100K+ platbami) parser streamuje přes dočasný soubor s odstraňováním jmenných prostorů po částech -- celý dokument nikdy není načten do paměti.

Jak se bezpečně zpracovávají ZIP archivy?

iter_secure_xml_entries() validuje každou položku před extrakcí:

  • Omezení velikosti položky (výchozí 10 MB na položku)
  • Omezení celkové nekomprimované velikosti (výchozí 50 MB)
  • Limit kompresního poměru (výchozí 100:1) pro prevenci ZIP bomb
  • Odmítnutí šifrovaných položek

Žádný soubor není zapsán na disk. XML bajty přecházejí přímo do parseru přes from_bytes().

Mohu analyzovat více souborů paralelně?

Ano. Použijte parse_files_parallel(), která distribuuje práci přes ProcessPoolExecutor:

from bankstatementparser import parse_files_parallel

results = parse_files_parallel([
    "statements/jan.xml",
    "statements/feb.xml",
    "statements/mar.xml",
])
for r in results:
    print(r.path, r.status, len(r.transactions), "rows")

Podporované formáty

Které formáty bankovních výpisů jsou podporovány?

Formát Standard Typy souborů Třída parseru
CAMT.053 ISO 20022 výpis banka-zákazník .xml CamtParser
PAIN.001 ISO 20022 iniciace úhrad .xml Pain001Parser
CSV Obecné bankovní exporty .csv CsvStatementParser
OFX Open Financial Exchange .ofx OfxParser
QFX Quicken Financial Exchange .qfx QfxParser
MT940 SWIFT standard .mt940, .sta Mt940Parser

Zpracovává parser bankovně specifické dialekty CAMT.053?

Ano -- navržen jako nezávislý na jmenných prostorech. Parser odstraní XML jmenné prostory před zpracováním a zpracovává jakoukoli variantu CAMT.053 (camt.053.001.02, camt.053.001.04 nebo proprietární bankovní obálky) bez konfigurace specifické pro jmenný prostor. XPath dotazy cílí na strukturu elementů, nikoli na URI jmenných prostorů.

Pro banky, které zabalí CAMT do vlastní obálky, použijte from_string() nebo from_bytes() pro přímé podání vnitřního dokumentu.

Mohu namapovat vlastní záhlaví sloupců CSV na standardní schéma?

Ano -- automatická normalizace, žádná konfigurace. CsvStatementParser rozpoznává běžné varianty záhlaví: "Date", "Transaction Date", "Booking Date" se všechny mapují na pole date. "Amount", "Value", "Sum" se mapují na amount. Rozdělené sloupce kredit/debet (např. "Credit" a "Debit") jsou detekovány a automaticky sloučeny do jedné znaménkové částky.

Jaký je výstupní formát?

Všechny parsery produkují standardizované pandas DataFrames s konzistentními typy sloupců:

Formát Klíčové sloupce
CAMT Amount, Currency, DrCr, Debtor, Creditor, Reference, ValDt, BookgDt, AccountId
PAIN.001 PmtInfId, PmtMtd, InstdAmt, Currency, CdtrNm, EndToEndId, MsgId, CreDtTm, NbOfTxs
CSV/OFX/QFX/MT940 date, description, amount (normalizováno)

Můžete také exportovat do CSV, JSON, Excel nebo konvertovat do Polars DataFrames.

Workflow pokladních oddělení

Jak parser zpracovává víceměnové výpisy?

Každá transakce si zachovává svou původní měnu -- žádný implicitní převod. Pole Currency je extrahováno z XML atributu Ccy pro každou transakci. Víceměnové výpisy zůstávají nezměněny. Metoda get_account_balances() vrací počáteční a koncové zůstatky pro každý účet s původními kódy měn. Křížová měnová rekonciliace je ponechána na vaší downstream logice, kde kontrolujete zdroj směnných kurzů.

Podporuje parser jak odchozí, tak příchozí formáty?

Ano. Pain001Parser zpracovává soubory ISO 20022 PAIN.001 pro iniciaci úhrad (odchozí platby). CamtParser zpracovává soubory CAMT.053 pro výpisy banka-zákazník (příchozí reporting). Oba podporují streaming, maskování PII a export do CSV, JSON a Excel. Použijte detect_statement_format() pro automatickou identifikaci formátu.

Co se stane, když je záznam transakce chybný?

Chování závisí na režimu analýzy:

  • parse() (dávkový režim) -- Chybné záznamy bez povinných polí (Amount, Currency nebo CdtDbtInd) jsou přeskočeny s varovným logem. Zbytek výpisu se analyzuje normálně.
  • parse_streaming() (streaming režim) -- Chyby analýzy se šíří okamžitě jako výjimky. Žádná tichá ztráta dat. Toto fail-fast chování je záměrné pro finanční workflow, kde musí být zaúčtována každá transakce.

Jak funguje deduplikace?

Třída Deduplicator detekuje přesné duplicity a podezřelé shody s vysvětlitelnými skóre spolehlivosti:

from bankstatementparser import CamtParser, Deduplicator

parser = CamtParser("statement.xml")
dedup = Deduplicator()
result = dedup.deduplicate(dedup.from_dataframe(parser.parse()))

print(f"Unikátní: {len(result.unique_transactions)}")
print(f"Přesné duplicity: {len(result.exact_duplicates)}")
print(f"Podezřelé shody: {len(result.suspected_matches)}")

Instalace a kompatibilita

Jak nainstaluji Analyzátor bankovních výpisů?

pip install bankstatementparser

Pro volitelnou podporu Polars DataFrame:

pip install bankstatementparser[polars]

Které verze Pythonu jsou podporovány?

Python 3.9 až 3.14. Všechny verze jsou testovány v CI s 467 testy při 100% pokrytí větví.

Jaké jsou závislosti?

Knihovna má 5 přímých závislostí:

  • lxml -- analýza XML se zabezpečením
  • pandas -- DataFrames a manipulace s daty
  • openpyxl -- export do Excel
  • pydantic -- validace dat a modely
  • defusedxml -- ochrana před XXE

Všechny závislosti mají verze uzamčené hashem SHA-256. CycloneDX SBOM mapuje každou runtime komponentu.

Funguje na macOS, Linuxu a Windows?

Ano. Knihovna funguje na macOS, Linuxu a Windows (přes WSL). Nemá žádné platformově specifické závislosti.

Reprodukovatelnost a bezpečnost

Jak mohu ověřit reprodukovatelnost?

python -m pytest                              # 467 testů, 100% pokrytí větví
python scripts/verify_locked_hashes.py        # Ověření hashů SHA-256
git log --show-signature -1                   # Ověření podpisu commitu

Jaké bezpečnostní ochrany jsou vestavěny?

  • Ochrana před XXE: resolve_entities=False, no_network=True, load_dtd=False
  • Ochrana před ZIP bombami: Limity kompresního poměru, omezení velikosti položek, odmítnutí šifrovaných položek
  • Prevence procházení cest: Blokační seznam nebezpečných vzorů a rozlišení symlinků
  • Validace vstupů: Limity velikosti souborů (výchozí 100 MB), validace přípon/formátů
  • Dodavatelský řetězec: Závislosti uzamčené hashem SHA-256, CycloneDX SBOM, atestace provenance sestavení
  • Podepsané commity: Vynucováno v CI

Jak se Analyzátor bankovních výpisů srovnává s pyiso20022?

pyiso20022 je široký ISO 20022 toolkit, který generuje Python dataclasses ze schémat ISO XML. Pokrývá širokou škálu typů zpráv ISO 20022 (PACS, PAIN, CAMT, ADMI) s validací schémat. Analyzátor bankovních výpisů je účelově navržen pro analýzu bankovních výpisů s podporou streaming, maskováním PII, deduplikací a jednotným API pro šest formátů včetně ne-ISO formátů (CSV, OFX, QFX, MT940). Pokud potřebujete analyzovat bankovní výpisy do DataFrames s bezpečností produkční úrovně, použijte Analyzátor bankovních výpisů. Pokud potřebujete pracovat s celým katalogem zpráv ISO 20022, použijte pyiso20022.

Jaké jsou termíny migrace SWIFT ISO 20022?

SWIFT zveřejnil postupný časový plán migrace:

  • Listopad 2026: Strukturované a hybridní adresy se stanou povinnými. Zprávy MT101 s více instrukcemi budou odmítnuty. Začíná fáze 1 správy případů.
  • Listopad 2027: Všechny finanční instituce musí být schopny přijímat výpisy CAMT.053 nativně. SWIFT přestane převádět formát MT na ISO.
  • Listopad 2028: Plné vyřazení MT940, MT942, MT950, MT900 a MT910. Tyto budou nahrazeny ekvivalenty CAMT.052, CAMT.053 a CAMT.054.

Analyzátor bankovních výpisů podporuje jak starší formát MT940, tak moderní formáty CAMT.053/PAIN.001, což jej činí ideálním pro přechodné období.