mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 02:32:57 +00:00
216 lines
8.3 KiB
Markdown
216 lines
8.3 KiB
Markdown
# Stav projektu – kontrolní seznam
|
||
|
||
Aktualizováno: 2025-11-10
|
||
|
||
Legenda:
|
||
- [x] hotovo / funguje
|
||
- [ ] k opravě / k doplnění
|
||
|
||
---
|
||
|
||
## Přehled priorit (P1 = kritické)
|
||
- [x] P1: Komentáře
|
||
- [x] Backend panic (regex v spam filtru) – odstraněny backreference v Go regex, nahrazeno kontrolou opakování
|
||
- [x] Komentáře se nezobrazují (admin i frontend)
|
||
- [x] P1: Scoreboard Remote
|
||
- [x] 415 (Unsupported Media Type) – sjednocen Content-Type pro timer endpointy
|
||
- [x] CORS pro `/api/v1/admin/scoreboard/*`
|
||
- [x] Časovač – ověřit start/stop a další akce
|
||
- [x] P1: Články
|
||
- [x] Auto-save vrací 400 (validace payloadu)
|
||
- [x] Vazba na soutěž (alias) – výběr aliasu nevrací zápasy
|
||
- [x] P1: Ankety – tvorba/napojení OK (Aktivity i Články)
|
||
- [x] P1: Frontend chyby „toLowerCase of undefined“
|
||
- [x] Admin Hráči
|
||
- [x] Admin Články
|
||
|
||
---
|
||
|
||
## Admin
|
||
- **Nástěnka**
|
||
- [x] plně funkční
|
||
|
||
- **Analytika**
|
||
- [x] plně funkční
|
||
|
||
- **Týmy**
|
||
- [x] Opravit overrides loga + zkrácené názvy s tečkami
|
||
- [x] Normalizace názvů (ignorovat tečky/mezery, např. „Frýdlant n. O.“, „Frenštát p. R.“)
|
||
- [x] Deduplikace výsledků vyhledávání FAČR (opakované položky)
|
||
- [x] Přidat/ověřit overrides v `team_logo_overrides.json`
|
||
- [x] 1. BFK Frýdlant n. O. – URL: http://logoapi.sportcreative.eu/logos/35e4f595-f2a7-4c0c-abd7-73926f33d687?format=png
|
||
- [x] SK Beskyd Frenštát p. R. – URL: http://logoapi.sportcreative.eu/logos/831702b0-cf90-4d94-9878-b1389b6a72b4?format=png
|
||
- [x] Zajistit propagaci do veřejné části (zápasy, tabule, soupisky)
|
||
|
||
- **Zápasy**
|
||
- [x] plně funkční
|
||
|
||
- **Hráči**
|
||
- [x] Odstranit národnost a věk z homepage i z /hraci
|
||
- [x] Opravit chybu „toLowerCase of undefined“ (bezpečné zacházení s prázdnými poli ve filtrech/tabulce)
|
||
|
||
- **Aliasy soutěží**
|
||
- [x] Odebrat UI „Přidat nový alias“ (pouze číst z FAČR)
|
||
|
||
- **Tabule (Scoreboard)**
|
||
- [x] Odstranit `:before` pilulku z bloku týmu (viz `<div class="chakra-stack css-whwp7v">...`)
|
||
- [x] Sjednotit vzhled overlay pro sponzory a skóre se scoreboardem
|
||
|
||
- **Scoreboard Remote**
|
||
- [x] Opravit CORS pro `/api/v1/admin/scoreboard/*`
|
||
- [x] 415 – sjednotit Content-Type (u timer endpointů povolen POST bez JSON)
|
||
- [x] Ověřit start/stop timeru a ostatní akce
|
||
|
||
- **Články**
|
||
- [x] Kategorie (soutěž) – po výběru aliasu nevrací zápasy
|
||
- [x] Rich text editor – „addRange()“/výběr; stabilizovat editaci
|
||
- [x] Auto-save 400 (validace payloadu, povolená pole, příznaky publikace)
|
||
- [x] Detail článku (veřejná část):
|
||
- [x] Pravý sloupec – nadcházející zápasy dle kategorie
|
||
- [x] Video – skrýt název (ponechat pouze video)
|
||
- [x] Galerie – zobrazit
|
||
- [x] Ankety – zobrazit
|
||
- [x] Komentáře – zobrazit
|
||
|
||
- **Aktivity**
|
||
- [x] plně funkční
|
||
|
||
- **Ankety**
|
||
- [x] Vytváření/napojení ankety (v Aktivitách i v Článcích)
|
||
- [x] Zajistit plně funkční styly/varianty a zobrazení (admin i public)
|
||
|
||
- **Kategorie**
|
||
- [x] plně funkční
|
||
|
||
- **Komentáře**
|
||
- [x] Backend panic v regex (spam filtr) – odstraněny backreference v Go regex, nahrazeno kontrolou opakování
|
||
- [x] Komentáře se nezobrazují v adminu ani na frontendu
|
||
|
||
- **Videa**
|
||
- [x] Povolit přepis názvu videa (override) – zobrazit v adminu i na frontendu
|
||
- [x] Na frontendu potlačit titulek tam, kde je požadováno (např. v detailu článku)
|
||
|
||
- **Galerie**
|
||
- [x] Přidat tlačítko pro přidání dalšího alba (napojit na fetch endpointy)
|
||
|
||
- **Soubory**
|
||
- [x] Změnit defaultní kvótu úložiště na 5 GB (z 1 GB)
|
||
|
||
- **Zprávy (Kontakty)**
|
||
- [x] /kontakt – po odeslání končí na „loading“, přitom zpráva přijde
|
||
- [x] /sponzori – duplicity zpráv; chybné označení zdroje (kontakt vs sponzoři)
|
||
- [x] Automatické přeposílání – neprobíhá; opravit trigger/retry
|
||
|
||
- **Newsletter**
|
||
- [x] Auto-aktivace všech typů newsletteru, pokud existuje alespoň 1 aktivní odběratel
|
||
- [x] Opravit 500 na `POST /api/v1/admin/newsletter/send-digest`
|
||
|
||
- **Kontakty (admin – Kontakty tab)**
|
||
- [x] „Přidat kontakt“ – dropdown Kategorie je prázdný; doplnit soutěže a aliasy (stejně jako v Článcích)
|
||
|
||
- **Sponzoři**
|
||
- [x] plně funkční
|
||
|
||
- **Bannery**
|
||
- [x] plně funkční
|
||
|
||
- **Oblečení**
|
||
- [x] plně funkční
|
||
|
||
- **Soutěže (Sweepstakes)**
|
||
- [x] „Počet výherců“ – zlepšit zadávání (volné psaní, validace), přidat rate limit na max. výherce
|
||
- [x] „Souhrn výher“ → nahradit „Přidat výhry“ s presety pro rychlé přidání položek
|
||
- [x] Odebrat „Vstupné (Kč)“ (používáme body)
|
||
- [x] Nahrání titulního obrázku – 400 při create; opravit upload a validaci
|
||
|
||
- **Odměny & Úspěchy**
|
||
- [x] Zlepšit UI/UX; na frontendu skrýt pro roli admin (ponechat pro běžné uživatele)
|
||
- [ ] Ověřit kompletní tok (uplatnění, upload avataru, dostupnost odměn)
|
||
|
||
- **Zkrácené odkazy**
|
||
- [x] plně funkční
|
||
|
||
- **Prefetch & Cache**
|
||
- [x] plně funkční
|
||
|
||
- **Nastavení**
|
||
- [x] Odebrat kartu „Monitoring“ (je automatická, ne-admin)
|
||
|
||
- **Uživatelé**
|
||
- [x] Přeložit celé UI do češtiny (lista, popup vytvoření uživatele atd.)
|
||
- [x] Role „editor“ = omezený admin bez 403 (tvorba/úprava obsahu, bez plných práv)
|
||
|
||
- **Navigace (Admin)**
|
||
- [x] Skrytá položka má zůstat viditelná v adminu pro opětovné zobrazení
|
||
- [x] Přesun mezi kategoriemi (drag & drop) – musí fungovat i napříč kategoriemi
|
||
- [x] „Upravit“ – správný cíl (neplést podkategorii/page s hlavní kategorií)
|
||
|
||
- **Dokumentace**
|
||
- [x] plně funkční
|
||
|
||
- **Odhlásit se**
|
||
- [x] plně funkční
|
||
|
||
---
|
||
|
||
## Veřejná část (frontend)
|
||
- **Homepage / Hráči**
|
||
- [x] Odebrat národnost a věk z dlaždic hráčů
|
||
|
||
- **Detail článku**
|
||
- [x] Pravý sloupec: nadcházející zápasy dle kategorie
|
||
- [x] Video bez titulku (ponechat pouze video prvek)
|
||
- [x] Galerie, Ankety, Komentáře – zobrazit, když jsou k dispozici
|
||
|
||
- **/hraci (seznam)**
|
||
- [x] Odebrat národnost ze seznamu
|
||
|
||
---
|
||
|
||
## Backend & API
|
||
- **Komentáře – chyba (fatal)**
|
||
- [x] Oprava regexu ve spam filtru: `invalid escape sequence: \1` – nahrazeno kontrolou opakování bez backreferencí (Go nepodporuje backreference)
|
||
- [x] Stabilizovat vytváření komentářů + návrat do adminu/frontendu
|
||
|
||
- **Scoreboard Remote – CORS/415**
|
||
- [x] Přidat CORS hlavičky pro admin remote endpoints
|
||
- [x] Ujednotit Content-Type (server akceptuje POST bez JSON pro timer akce)
|
||
|
||
- **Články – 400 Bad Request (auto-save)**
|
||
- [x] Zkontrolovat požadovaný payload na backendu (políčka `published`, `slug`, `youtube_*`, `attachments` atp.)
|
||
- [x] Sladit validaci se skutečným JSONem z frontendu
|
||
|
||
- **Newsletter – 500 na send-digest**
|
||
- [x] Logy, validace šablon a vstupů; graceful error + retry
|
||
- [x] Auto-aktivace typů při existenci odběratelů
|
||
|
||
- **Kontakty**
|
||
- [x] Odlišit zdroj (kontakt vs sponzoři) v uložených zprávách
|
||
- [x] Opravit duplicity a loading stav po submitu
|
||
- [x] Zajistit automatické přeposílání (resend) dle nastavení
|
||
|
||
- **Soutěže (upload)**
|
||
- [x] Opravit create 400 (multipart/form-data nebo JSON + upload pipeline)
|
||
|
||
---
|
||
|
||
## Zachycené chyby (výňatek)
|
||
- Backend fatal (POST /api/v1/comments):
|
||
- `regexp: Compile(([a-zA-Z!?.])\1{4,}): invalid escape sequence: \1` → upravit regex a ošetření
|
||
- Frontend (Admin Hráči, Admin Články):
|
||
- `Cannot read properties of undefined (reading 'toLowerCase')` → bezpečné mapování/filtrace
|
||
- Scoreboard Remote:
|
||
- CORS blokace + `415 Unsupported Media Type` při `POST /api/v1/admin/scoreboard/timer/start`
|
||
- Články – editor/autosave:
|
||
- `addRange(): The given range isn't in document.` (výběr v editoru)
|
||
- `PUT /api/v1/articles/:id` → 400 (Bad Request)
|
||
- Newsletter:
|
||
- `POST /api/v1/admin/newsletter/send-digest` → 500
|
||
|
||
---
|
||
|
||
## Poznámky k implementaci
|
||
- Úpravy názvů týmů s tečkami: vytvořit normalizační vrstvu (strip teček, diakritika, mezery) pro porovnávání i při zápisu overrides.
|
||
- UI skrytí prvků (aliasy soutěží, monitoring v Nastavení) řešit podmíněným renderem i na úrovni backend schématu/feature flagu.
|
||
- Před nasazením spustit integrační testy: komentáře, ankety, články (autosave), scoreboard remote, newsletter digest.
|