homelab-codex-ws/packages/kb-mail/tests
oskar 4ec0b7876c fix(mail-body-ingest): usuwaj NUL (0x00) z tekstu przed chunkowaniem i embedem
Chunki z NUL wywalaly insert do postgresa (asyncpg CharacterNotInRepertoireError:
invalid byte sequence for encoding "UTF8": 0x00) - 3 przypadki na mailach z 2007
w plastrze offset 50000 Etapu B. sanitize_surrogates tego nie lapie, bo NUL to
poprawny code point, nie osierocony surogat.

Strip dzieje sie zaraz po strip_quotes, czyli PRZED chunk_text i przed wywolaniem
Ollamy - dzieki temu embedding liczy sie z dokladnie tego samego stringa, ktory
trafia do document_chunk.text. Sanityzacja dopiero przy insercie zostawialaby
wektor opisujacy tekst, ktorego DB nigdy nie zobaczyla.

Skala widoczna w progress/summary: nul_bytes_stripped (ile znakow) oraz
mails_nul_sanitized (ilu maili dotyczylo). Zadne z nich nie wchodzi do rownan
balansu i nie wplywa na exit code - to normalizacja, nie blad.

Ten sam strip w extract_threading (In-Reply-To / References): json.dumps zamienia
NUL na escape u0000, ktory jsonb odrzuca tym samym bledem.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-06 11:14:09 +02:00
..
conftest.py feat(kb-mail): fundament — pgvector spine, koperta, archiwum, pakiet domeny 2026-06-19 20:02:25 +02:00
test_archive.py feat(kb-mail): fundament — pgvector spine, koperta, archiwum, pakiet domeny 2026-06-19 20:02:25 +02:00
test_chunking.py refactor(kb-mail): extract chunker to packages/kb-mail (faza mailowa Krok 0) 2026-07-23 17:06:48 +02:00
test_db.py feat(kb-mail): fundament — pgvector spine, koperta, archiwum, pakiet domeny 2026-06-19 20:02:25 +02:00
test_envelope.py feat(kb-mail): fundament — pgvector spine, koperta, archiwum, pakiet domeny 2026-06-19 20:02:25 +02:00
test_migration.py fix(kb): przepiecie wszystkich odwolan wewnetrznych po migracji 2026-08-04 16:58:46 +02:00
test_text.py fix(mail-body-ingest): usuwaj NUL (0x00) z tekstu przed chunkowaniem i embedem 2026-08-06 11:14:09 +02:00