64 lines
2.4 KiB
Markdown
64 lines
2.4 KiB
Markdown
# 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í
|