mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 18:52:56 +00:00
143 lines
4.0 KiB
Markdown
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
|