# enrich_files_v1.0

**Verze:** 1.0
**Datum:** 2026-06-03
**Skript:** `enrich_files_v1.0.py`

## Účel
Doplnit do existujících záznamů v MongoDB `soubory.*` pole `content.*` parsovaná z obsahu souborů.

Spouští se **až po** [scan_files_v1.0.py](scan_files_v1.0.md).

## Podporované přípony a pole

| ext | knihovna | pole v `content` |
|---|---|---|
| pdf | pypdf | pages, encrypted, author, title, subject, creator, producer, created, modified, text_head |
| docx | python-docx | author, title, subject, last_modified_by, paragraphs, words, created, modified, text_head |
| xlsx, xlsm | openpyxl | total_sheets, sheets[{name,rows,cols}], author, title, subject, last_modified_by, created, modified |
| pptx | python-pptx | slides, author, title, subject, last_modified_by, created, modified, text_head (z prvních 3 snímků) |
| eml | stdlib email | subject, from, to, cc, date, has_attachments, attachments[], body_head |
| msg | extract_msg | totéž co eml |

S[DRY](../DRY)polečná pole vždy: `ok` (bool), `parsed_at`, `parser_version`, `sha256_at_parse`. Při chybě `error` (název výjimky + zpráva).

## Inkrementální chování
Zpracují se jen dokumenty kde:
- `content` chybí, NEBO
- `content.parser_version` != aktuální verze (1.0), NEBO
- `content.sha256_at_parse` != aktuální `sha256` (soubor se změnil)

Při dalším spuštění **přidá** jen nové/změněné. Při zvýšení verze parseru přeparsuje vše.

## Limity (skip)
- PDF nad 500 MB → ok=False, error="too_big_..."
- XLSX nad 200 MB → ok=False
- ostatní nad 300 MB → ok=False

`text_head` max 2000 znaků.

## Spuštění
```
python U:\PythonProject\Janssen\Soubory\enrich_files_v1.0.py
```

## Plán
Po doběhnutí ověřit `content.ok` rate, případně doladit (chybové vzory) a teprve pak stavět `MCP_SOUBORY` server.
