mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
upload
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
# Řešení problému s prázdnou navigací
|
||||
|
||||
## Problém
|
||||
Stránka Správa navigace (`/admin/navigace`) nezobrazovala žádný obsah - ani webovou navigaci, ani admin panel, ani sociální sítě.
|
||||
|
||||
## Příčina
|
||||
Databázové tabulky `navigation_items` a `social_links` existují (vytvořeny pomocí AutoMigrate), ale jsou prázdné. Výchozí data se vkládají pouze při spuštění migrací s příznakem `RUN_MIGRATIONS=true`, což uživatel pravděpodobně neudělal.
|
||||
|
||||
## Implementovaná řešení
|
||||
|
||||
### 1. Vylepšené diagnostické nástroje
|
||||
|
||||
#### Zobrazení stavu načtení dat
|
||||
- Přidán informační panel zobrazující počet načtených položek:
|
||||
- "Načteno: X webových, X admin, X sociálních"
|
||||
- Tlačítko "Obnovit data" pro ruční refresh
|
||||
|
||||
#### Rozšířené logování
|
||||
- Console.log výpisy pro sledování API odpovědí:
|
||||
```javascript
|
||||
console.log('Načtená navigace:', navData);
|
||||
console.log('Načtené sociální odkazy:', socialData);
|
||||
```
|
||||
- Lepší zobrazení chybových zpráv s detaily z API
|
||||
|
||||
### 2. Prázdné stavy (Empty States)
|
||||
|
||||
Přidány pomocné zprávy pro každou záložku, když neobsahuje data:
|
||||
|
||||
#### Webová navigace
|
||||
```
|
||||
⚠ Žádné položky navigace
|
||||
Nebyly nalezeny žádné položky navigace. Můžete vytvořit výchozí navigaci nebo přidat položky ručně.
|
||||
|
||||
[Vytvořit výchozí navigaci] [Přidat položku ručně]
|
||||
```
|
||||
|
||||
#### Admin panel
|
||||
```
|
||||
⚠ Žádné vlastní položky v admin panelu
|
||||
Použijte tlačítko "Přidat položku" pro vytvoření vlastní navigace.
|
||||
```
|
||||
|
||||
#### Sociální sítě
|
||||
```
|
||||
⚠ Žádné sociální sítě
|
||||
Nebyly nalezeny žádné odkazy na sociální sítě. Klikněte na "Přidat sociální síť" pro vytvoření odkazu.
|
||||
```
|
||||
|
||||
### 3. Automatické seedování (Hlavní řešení)
|
||||
|
||||
#### Backend - Nový endpoint
|
||||
**Soubor:** `internal/controllers/navigation_controller.go`
|
||||
|
||||
Přidána metoda `SeedDefaultNavigation`:
|
||||
- Kontroluje, zda tabulka je prázdná
|
||||
- Pokud je prázdná, vytvoří 12 výchozích navigačních položek:
|
||||
- Domů, O klubu, Kalendář, Zápasy, Aktivity, Hráči, Tabulky, Články, Videa, Fotogalerie, Sponzoři, Kontakt
|
||||
- Pokud již data existují, vrátí informaci a neudělá nic
|
||||
- Endpoint: `POST /api/v1/admin/navigation/seed`
|
||||
|
||||
#### Frontend - Funkce a UI
|
||||
**Soubor:** `frontend/src/services/navigation.ts`
|
||||
|
||||
```typescript
|
||||
export const seedDefaultNavigation = async (): Promise<{
|
||||
message: string;
|
||||
count: number;
|
||||
seeded: boolean;
|
||||
}> => {
|
||||
const response = await axios.post(`${API_BASE_URL}/admin/navigation/seed`, {}, {
|
||||
withCredentials: true,
|
||||
});
|
||||
return response.data;
|
||||
};
|
||||
```
|
||||
|
||||
**Soubor:** `frontend/src/pages/admin/NavigationAdminPage.tsx`
|
||||
|
||||
- Přidána funkce `handleSeedDefaultNavigation`
|
||||
- Tlačítko "Vytvořit výchozí navigaci" v prázdném stavu
|
||||
- Zobrazí toast notifikaci s výsledkem
|
||||
|
||||
## Jak to použít
|
||||
|
||||
### Řešení A: Použít tlačítko v admin panelu (Doporučeno)
|
||||
|
||||
1. Otevřete stránku Správa navigace (`/admin/navigace`)
|
||||
2. Pokud je navigace prázdná, uvidíte varování s tlačítkem
|
||||
3. Klikněte na **"Vytvořit výchozí navigaci"**
|
||||
4. Potvrzení dialogu
|
||||
5. Data se automaticky načtou
|
||||
|
||||
### Řešení B: Spustit migrace ručně
|
||||
|
||||
1. Zastavte backend server
|
||||
2. Spusťte s migracemi:
|
||||
```powershell
|
||||
$env:RUN_MIGRATIONS="true"
|
||||
go run main.go
|
||||
```
|
||||
3. Restartujte backend v normálním režimu
|
||||
4. Obnovte stránku správy navigace
|
||||
|
||||
### Řešení C: Přidat položky ručně
|
||||
|
||||
1. Klikněte na "Přidat hlavní položku"
|
||||
2. Vyplňte formulář
|
||||
3. Uložte
|
||||
4. Opakujte pro další položky
|
||||
|
||||
## Soubory upravené
|
||||
|
||||
### Backend
|
||||
1. `internal/controllers/navigation_controller.go` - Přidána metoda `SeedDefaultNavigation`
|
||||
2. `internal/routes/routes.go` - Přidán route `/admin/navigation/seed`
|
||||
|
||||
### Frontend
|
||||
1. `frontend/src/services/navigation.ts` - Přidána funkce `seedDefaultNavigation`
|
||||
2. `frontend/src/pages/admin/NavigationAdminPage.tsx`:
|
||||
- Přidáno zobrazení počtu načtených položek
|
||||
- Přidány prázdné stavy s pomocnými zprávami
|
||||
- Přidána funkce `handleSeedDefaultNavigation`
|
||||
- Vylepšené error handling a logging
|
||||
|
||||
### Dokumentace
|
||||
1. `NAVIGATION_TROUBLESHOOTING.md` - Kompletní průvodce řešením problémů
|
||||
2. `NAVIGATION_FIX_SUMMARY.md` - Tento dokument
|
||||
|
||||
## Testování
|
||||
|
||||
Po implementaci otestujte:
|
||||
|
||||
1. **Prázdná databáze:**
|
||||
- [ ] Zobrazí se varování "Žádné položky navigace"
|
||||
- [ ] Tlačítko "Vytvořit výchozí navigaci" funguje
|
||||
- [ ] Po seedování se zobrazí 12 položek
|
||||
|
||||
2. **Existující data:**
|
||||
- [ ] Seedování zobrazí info "Navigace již existuje"
|
||||
- [ ] Existující data zůstanou nezměněná
|
||||
|
||||
3. **API chyby:**
|
||||
- [ ] Chybové zprávy se zobrazí v toastu
|
||||
- [ ] Console.log obsahuje podrobnosti
|
||||
|
||||
4. **Všechny záložky:**
|
||||
- [ ] Webová navigace - funguje
|
||||
- [ ] Admin panel - funguje
|
||||
- [ ] Sociální sítě - funguje
|
||||
|
||||
## Poznámky pro vývojáře
|
||||
|
||||
- Seed endpoint je **idempotentní** - lze jej volat vícekrát bez problémů
|
||||
- Pokud databáze obsahuje byť jednu položku, seed neudělá nic
|
||||
- Výchozí položky mají `requires_admin = false` (jsou pro veřejný web)
|
||||
- Admin navigace musí být vytvořena ručně nebo pomocí samostatných seedů
|
||||
- Všechny změny jsou zpětně kompatibilní
|
||||
|
||||
## Další vylepšení (volitelné)
|
||||
|
||||
V budoucnu lze přidat:
|
||||
- [ ] Seed pro admin navigaci
|
||||
- [ ] Seed pro sociální sítě (Facebook, Instagram, etc.)
|
||||
- [ ] Import/export navigace do JSON
|
||||
- [ ] Šablony navigace (sportovní klub, škola, firma, etc.)
|
||||
- [ ] Duplikace položek navigace
|
||||
Reference in New Issue
Block a user