75 lines
2.8 KiB
Markdown
75 lines
2.8 KiB
Markdown
# 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`):
|
|
```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
|