Files
WebWizard/docs/prompts/step04.md
2026-06-12 12:54:10 +02:00

2.8 KiB

Krok 04 - Správa používateľov a projektov (Session)

Kontext projektu

WebWizard potrebuje identifikovať používateľa (pomocou ID uloženého v prehliadači) a priradiť k nemu jeho projekty. MVP nepoužíva klasické prihlasovanie, ale user_id generované pri prvej návšteve.

Pred implementáciou si preštuduj

  • docs/architecture.md - Sekcia 5 (Projekt) a 8 (Identifikácia používateľa).
  • docs/wizard.md - Sekcia 10 (Wizard Data Schema).

Cieľ

Implementovať logiku pre inicializáciu session (vytvorenie user_id) a základnú správu projektov (vytvorenie, zoznam).

Požadované zmeny

  1. Implementácia akcie initSession v ajax.php:
    • Ak user_id chýba, vygeneruj unikátne ID (napr. u_ + hash).
    • Vytvor súbor data/users/<user_id>.json.
  2. Implementácia akcie createProject v ajax.php:
    • Vygeneruj unikátne project_id.
    • Vytvor základnú štruktúru projektu v data/projects/<project_id>.json so stavom draft.
    • Pridaj project_id do zoznamu projektov v používateľskom JSONe.
  3. Implementácia akcie listProjects v ajax.php:
    • Vráti zoznam projektov pre dané user_id so základnými metadátami (názov z identity, stav, dátum).
  4. Implementácia akcie getProjectStatus v ajax.php:
    • Vráti kompletné dáta projektu pre dané project_id.

Implementačné pravidlá

  • Používaj FileStorage službu z Kroku 02.
  • ID musia byť bezpečne generované.
  • Overuj, či projekt patrí danému user_id pri každej operácii s projektom.

Súbory ktoré je potrebné vytvoriť

  • src/Actions/ProjectActions.php (odporúčané pre logiku)

Súbory ktoré je potrebné upraviť

  • public/ajax.php (pridanie nových akcií)

API a dátové štruktúry

Šruktúra projektu (data/projects/<project_id>.json):

{
  "project_id": "...",
  "user_id": "...",
  "status": "draft",
  "current_step": 1,
  "wizard_data": {},
  "created_at": "...",
  "updated_at": "..."
}

Frontend požiadavky

Nerelevantné (implementácia backend logic).

Backend požiadavky

  • PHP 8.2.

Testovací scenár

  1. Zavolaj initSession bez X-User-ID. Dostaneš nové ID.
  2. Zavolaj createProject s novým ID. Dostaneš project_id.
  3. Over, či vznikli súbory v data/users/ a data/projects/.
  4. Zavolaj listProjects a over, či obsahuje vytvorený projekt.

Definition of Done

  • Používateľské relácie a projekty sú perzistentne uložené v JSON súboroch.
  • API akcie pre správu projektov sú funkčné.

Obmedzenia

  • Nepoužívaj PHP natívne sessions (session_start()), identifikácia je čiste cez user_id v hlavičke a perzistenciu v súboroch.

Výstup

  • zoznam vytvorených súborov
  • zoznam upravených súborov
  • stručné zhrnutie vykonaných zmien
  • prípadné otvorené problémy