Files
MyClub/DOCS/PROJECT_STATUS.md
T
Tomas Dvorak c941313fd5 dev day #92
2025-11-14 15:53:12 +01:00

216 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.