# scan_files_v1.0 **Verze:** 1.0 **Datum:** 2026-06-03 **Skript:** `scan_files_v1.0.py` ## Účel Rekurzivní sken dvou Dropbox složek studií (`!!42847922MDD3003`, `!77242113UCO3001`) a zápis metadat všech souborů do MongoDB. ## Konfigurace - **MongoDB:** `mongodb://192.168.1.76:27017` (bez autentizace) - **DB:** `soubory` - **Kolekce:** `42847922MDD3003`, `77242113UCO3001` (jedna kolekce na studii) - **Cesta k Dropboxu:** zjištěna pomocí `Knihovny/najdi_dropbox.py` (přenositelné mezi PC) ## Struktura dokumentu v MongoDB | pole | popis | |---|---| | `path` | absolutní cesta (unikátní klíč) | | `study` | kód studie (= název kolekce) | | `rel_path` | relativní cesta od kořene studie | | `dir`, `rel_dir` | nadřazený adresář (absolutní/relativní) | | `parent_folders` | pole názvů složek (pro filtrování) | | `name`, `stem`, `ext` | jméno, jméno bez přípony, přípona (lower-case) | | `size_bytes` | velikost | | `mtime`, `ctime`, `atime` | časové údaje (UTC) | | `sha256` | hash obsahu | | `mime` | mimetype dle přípony | | `tokens` | jméno rozparsované na slova/čísla (lower-case) | | `dates_in_name` | datumy nalezené v názvu, formát `YYYY-MM-DD` | | `first_seen_at` | první sken, kdy byl soubor viděn | | `last_seen_at` | poslední sken, kdy byl viděn | | `deleted_at` | nastaveno, pokud soubor v posledním skenu už nebyl nalezen | ## Datumy v názvu Skript hledá tři varianty: - `12JAN2026`, `12Jan2026` (den + 3-písm. zkratka měsíce + rok) - `2026-01-12`, `2026_01_12`, `2026.01.12` - `12-01-2026`, `12_01_2026`, `12.01.2026` Všechny se normalizují do ISO `YYYY-MM-DD` v poli `dates_in_name`. ## Inkrementální chování - `size_bytes` + `mtime` souhlasí se záznamem v DB → SHA256 se nepřepočítává, jen se aktualizuje `last_seen_at` - nový soubor → vloží se s `first_seen_at` - chybějící v aktuálním běhu → `deleted_at` se nastaví na čas běhu ## Co se ignoruje - `.dropbox*`, `Thumbs.db`, `desktop.ini`, `~$*.*` (Office locky), `.DS_Store` - adresář `.dropbox.cache` ## Spuštění ``` python U:\PythonProject\Janssen\Soubory\scan_files_v1.0.py ``` ## Index pole pro rychlé dotazy `path` (unique), `ext`, `dates_in_name`, `tokens`, `sha256` ## Plán pokračování 1. Spustit první sken → zjistit profil dat (přípony, hloubku stromů) 2. Doplnit dle potřeby (např. počet stran PDF, autor DOCX, listy XLSX) 3. Postavit `MCP_SOUBORY` server nad touto kolekcí