3.1 KiB
3.1 KiB
Modul 5 — Ingest dokumentow -> koperta KB
Adapter obu zrodel (Paperless API + Nextcloud WebDAV) -> koperta KB. Domyka filar #2 w warstwie 2 (preprocess+index). Zalezy od: 2 (Paperless), 4 (Nextcloud).
Cel
Wciagnac dokumenty z Paperless i Nextcloud do spine KB (envelope w kb-postgres@PIHA), z OCR-textem + metadanymi, budujac pierwszy cross-source link (correspondent->maile).
Wymogi
jobs/documents-ingest/— job CLI (wzorzec jak jobs/gmail-bulk-import/), pip install -e.- Dwa adaptery:
- Paperless API: pobierz dokumenty (doc-id, correspondent, tags, created, OCR-content).
raw_ref= REFERENCJA (doc-id) — Paperless=zrodlo prawdy. NIE kopiuj bajtow. - Nextcloud WebDAV: listuj pliki, pobierz.
raw_ref= KOPIA do archiwum KB (snapshot, bo pliki znikaja). Wykrywaj zmiany (etag/mtime) -> nowa koperta (append).
- Paperless API: pobierz dokumenty (doc-id, correspondent, tags, created, OCR-content).
- Mapping -> koperta (
packages/kb-mailwzorzec, mozepackages/kb-documents):source=paperless|nextcloudid= stabilny (paperless doc-id | nextcloud fileid+etag)ts= data dokumentu (Paperless: created/z tresci; Nextcloud: mtime)geo= null (dokumenty zwykle bez geo; opcjonalnie z tresci pozniej)raw_ref= referencja (paperless) | sciezka-archiwum (nextcloud)entities[]= OCR-text (do embed), correspondent, tags, filename, content_type
- Selektywny index (jak maile): archiwizuj/referuj wszystko, embeduj sensowne (OCR-text -> bge-m3 na SOLARIA -> pgvector). Pomijaj smiecie (puste skany? duplikaty?).
Graf encji (warstwa 3 — cienki start, PIERWSZY cross-source)
- correspondent (Paperless: kto wystawil) = encja. Zmapuj do encji z maili (ten sam nadawca faktury i maila = ta sama osoba/firma). To DOWOD zasady kb-00 #7 (cienka warstwa 4 po drugim zrodle udowadnia cross-source linking).
- Zapisz link w grafie encji (schema z warstwy 3 — jesli nie istnieje, cienki start tutaj).
Domkniecie dlugu z maili (faza-2-zalacznikow)
- 70k zalacznikow z importu Gmaila (manifest w entities[] kopert mailowych).
- Faktury/umowy/PDFy -> wyslij do Paperless (jego OCR + correspondent-detection), potem wciagnij z powrotem przez adapter Paperless. NIE osobny pipeline OCR.
- Sizing: batch, partie (modul 3 OCR-worker na SOLARIA miele).
Do zweryfikowania przez CC
- Paperless API: endpointy (documents, correspondents, tags), auth (token), paginacja.
- Nextcloud WebDAV: listowanie rekurencyjne, etag, pobieranie, auth.
- Czy
packages/kb-mailda sie reuzyc czy potrzebapackages/kb-documents(koperta wspolna!). - Jak wykrywac zmiany w Nextcloud (polling etag? webhooks?) dla re-ingestu.
- Deduplikacja: dokument w Paperless I jako zalacznik maila — ten sam? (sha256 match).
Kryteria ukonczenia
- Dokumenty z Paperless + Nextcloud w tabeli envelope (kb-postgres@PIHA).
- OCR-text zembedowany (pgvector), correspondent jako encja.
- Min. jeden cross-source link correspondent<->mail zademonstrowany.
- Idempotentny (re-run nie duplikuje — wzorzec z gmail-bulk-import ON CONFLICT).
- Testy jednostkowe (wzorzec jobs/gmail-bulk-import/).
- Faza-2-zalacznikow: przetestowana na probce (kilka faktur z maili -> Paperless -> ingest).