# 00. Spis treści i zasady pracy

## Mapa dokumentacji

| Dokument | O czym jest | Kiedy do niego wracać |
|---|---|---|
| `01-koncepcja-i-zakres.md` | Cel produktu, odbiorca, zakres MVP, świadome wykluczenia | Przy każdym pomyśle na nową funkcję |
| `02-architektura.md` | Stack, struktura katalogów, routing, warstwy, strefy czasu | Przed pisaniem nowego modułu |
| `03-model-danych.md` | Wszystkie tabele, kolumny, relacje, indeksy | Przy każdej zmianie w bazie |
| `04-uprawnienia-i-role.md` | Role, katalog uprawnień, izolacja salonów | Przy każdym nowym ekranie i akcji |
| `05-moduly-funkcjonalne.md` | Dashboard, kalendarz, klientki, wizyty, usługi, pracownicy, statystyki | W trakcie budowy ekranów |
| `06-sms.md` | Operator, kolejka, szablony, pakiety, saldo, odpowiedzi zwrotne | Etap 5 i dalej |
| `07-platnosci-i-abonament.md` | Plany, Stripe, webhooki, blokady po nieopłaceniu | Etap 6 |
| `08-rezerwacje-online.md` | Publiczny link, wyliczanie wolnych terminów, blokady | Etap 7 |
| `09-wersjonowanie-migracje-health.md` | `/version`, `/changelog`, `/admin/health`, migracje bazy | Przy każdym wydaniu |
| `10-etapy-wdrozenia.md` | Plan 10 etapów, zakres i kryteria odbioru | Na starcie i na końcu każdego etapu |
| `11-instalacja-i-srodowisko.md` | Wymagania, instalator, konfiguracja, cron, kopie zapasowe | Przy wdrożeniu na serwer |
| `12-bezpieczenstwo-i-rodo.md` | Hasła, sesje, zgody, retencja, eksport i usunięcie danych | Etap 1 i etap 10 |
| `13-standardy-kodu.md` | Konwencje nazw, struktura plików, obsługa błędów, logi | Cały czas |

## Zasady pracy nad projektem

### 1. Najpierw dokumentacja, potem kod

Żaden etap nie zaczyna się od pisania kodu. Kolejność jest zawsze taka:

1. Opis zakresu etapu w `10-etapy-wdrozenia.md` jest zaakceptowany.
2. Jeśli etap zmienia bazę, najpierw powstaje migracja i aktualizacja `03-model-danych.md`.
3. Dopiero potem kod.
4. Na koniec wpis w `CHANGELOG.md` i podbicie wersji.

### 2. Jeden etap to jedna wersja i jedna paczka ZIP

Każdy etap kończy się paczką ZIP zawierającą kod, migracje i zaktualizowaną dokumentację. Paczka nazywa się `salonio-X.Y.Z.zip`. Nie ma paczek pośrednich ani "prawie skończonych".

### 3. Baza zmienia się wyłącznie przez migracje

Nie ma ręcznych zmian w phpMyAdmin. Każda zmiana schematu to plik w `db/migrations/`, z kolejnym numerem, uruchamiany przez migrator. Równolegle aktualizowany jest pełny schemat w `db/schema/` dla instalacji od zera. Zasady w `09-wersjonowanie-migracje-health.md`.

### 4. Nic nie wychodzi bez kryteriów odbioru

Każdy etap ma listę punktów do odhaczenia. Etap jest skończony, kiedy wszystkie są odhaczone, a nie kiedy "działa u mnie".

### 5. Zakres jest zamknięty

Pomysł, który pojawia się w trakcie etapu, trafia do sekcji "Poczekalnia" w `01-koncepcja-i-zakres.md`, a nie do bieżącej pracy. Rozszerzanie zakresu w trakcie etapu jest najczęstszym powodem, dla którego takie systemy nigdy nie wychodzą z wersji beta.

### 6. Wersje mają znaczenie

- `X.0.0` duża zmiana, np. wejście rezerwacji online albo przebudowa kalendarza
- `1.Y.0` nowy moduł albo nowa funkcja
- `1.0.Z` poprawka błędu, bez zmian w bazie

## Słownik pojęć

| Pojęcie | Znaczenie w tym projekcie |
|---|---|
| Salon | Konto klienta systemu, jeden abonament, jedna przestrzeń danych. W kodzie `salon_id` |
| Operator | Właściciel systemu, czyli Ty. Ma dostęp do `/admin` |
| Właścicielka | Osoba, która założyła salon w systemie, ma pełne uprawnienia w swoim salonie |
| Pracownik | Konto w salonie z ograniczonymi uprawnieniami |
| Klientka | Osoba umawiana na wizyty, nie ma konta w systemie |
| Wizyta | Jeden wpis w kalendarzu, może zawierać kilka usług |
| Kredyt SMS | Jednostka rozliczeniowa, jeden kredyt to jedna część wiadomości |
