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

4.0 KiB

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

    {
      "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.jpguploads/2025/10/file.jpg
  • Linux: uploads/2025/10/file.jpguploads/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