Files
MyClub/DOCS/FILE_MANAGEMENT_ENHANCEMENTS.md
Tomáš Dvořák 12cba639b9 upload
2025-10-16 13:32:05 +02:00

143 lines
4.0 KiB
Markdown

# Vylepšení správy souborů - File Management Enhancements
## 🎯 Problém
V admin rozhraní se zobrazovalo méně souborů než bylo skutečně v `uploads` složce. Soubory na disku nebyly synchronizované s databází.
## ✅ Řešení
### Backend vylepšení (`files_controller.go`)
1. **Lepší skenování souborů**
- ✓ Přeskakování `.gitkeep` a skrytých souborů
- ✓ Cross-platform kompatibilita cest (Windows/Linux)
- ✓ Normalizace cest (backslashes → forward slashes)
- ✓ Detailní logování všech operací
- ✓ Seznam nově přidaných souborů
- ✓ Seznam osiřelých záznamů
2. **Nová data v odpovědi**
```json
{
"message": "Scan completed",
"found_files": 14,
"new_files": 5,
"orphaned_files": 0,
"skipped_files": 1,
"new_files_list": ["soubor1.jpg", "soubor2.png"],
"orphaned_list": []
}
```
### Frontend vylepšení (`FilesAdminPage.tsx`)
1. **Nový modal s výsledky skenování**
- 📊 Přehledné zobrazení statistik
- 📝 Seznam všech nově přidaných souborů
- ⚠️ Upozornění na osiřelé záznamy
- 🎨 Barevné rozlišení podle typu
2. **Lepší UX**
- 💡 Info alert při prázdné databázi
- 🔄 Automatické obnovení všech seznamů po skenu
- 📋 Detailní zpětná vazba o výsledcích
## 🚀 Jak používat
### Pro správce
1. Otevřít admin panel → **Správa souborů**
2. Kliknout na **"Skenovat soubory"**
3. Zobrazí se dialog s výsledky:
- Kolik souborů bylo nalezeno na disku
- Kolik nových souborů bylo přidáno do DB
- Jaké soubory byly přeskočeny
- Které záznamy jsou osiřelé
### Co se stane při skenování?
```
uploads/
├── 2025/
│ └── 10/
│ ├── .gitkeep ← PŘESKOČENO
│ ├── soubor1.jpg ← PŘIDÁNO DO DB
│ ├── soubor2.png ← PŘIDÁNO DO DB
│ └── soubor3.pdf ← PŘIDÁNO DO DB
```
## 📋 Technické detaily
### Normalizace cest
- Windows: `uploads\2025\10\file.jpg` → `uploads/2025/10/file.jpg`
- Linux: `uploads/2025/10/file.jpg` → `uploads/2025/10/file.jpg`
- Vše se ukládá s forward slashes pro konzistenci
### Přeskakované soubory
- `.gitkeep` - git placeholder
- Soubory začínající tečkou (`.hidden`)
- Adresáře (procházejí se, ale neukládají)
### Osiřelé záznamy
- Soubory v databázi, které neexistují na disku
- Zobrazují se s varováním
- Můžete je ručně smazat nebo nechat
## 🔧 Údržba
### Kdy spustit skenování?
- Po ručním nahrání souborů přímo na disk
- Po obnově zálohy souborů
- Po migraci dat
- Pravidelně pro kontrolu integrity
### Řešení problémů
**Problém:** Soubory se nezobrazují
**Řešení:** Kliknout na "Skenovat soubory"
**Problém:** Hodně osiřelých záznamů
**Řešení:**
1. Zkontrolovat, zda nebyly soubory omylem smazány
2. Případně obnovit ze zálohy
3. Nebo smazat osiřelé záznamy z DB
**Problém:** Duplicity souborů
**Řešení:** Použít záložku "Duplicity" pro identifikaci a smazání
## 📊 Příklad výstupu
```
Skenování dokončeno!
Nalezených souborů: 14
Nově přidaných: 8
Přeskočených: 1 (.gitkeep)
Osiřelých záznamů: 0
Nově přidané soubory:
✓ 20251012-153300-4ae40e0a8f2d07ccb77d6b3d2d304b19.jpg
✓ 20251012-153729-9de174bac53faf8b5cdb6c9ddf0a3a47.jpg
✓ 20251012-160206-5269551bcaccab0926167ebc234e5c23.jpg
...
```
## 🎨 Nové funkce UI
- **Badge s počty** - Rychlý přehled o stavu
- **Scrollovatelné seznamy** - Pro dlouhé seznamy souborů
- **Barevné kódování** - Zelená (nové), Oranžová (varování), Modrá (info)
- **Monospace font** - Pro názvy souborů
## ⚡ Performance
- Rychlé skenování i pro stovky souborů
- Batch zpracování v databázi
- Minimální paměťová náročnost
- Logování do backend logu pro debugging
## 🔐 Bezpečnost
- ✓ Pouze admin má přístup
- ✓ Validace cest (prevence directory traversal)
- ✓ Kontrola existence souborů
- ✓ Bezpečné mazání s potvrzením