# Start TROPO — lista kontrolna

Wszystko, co trzeba zrobić na serwerze i w buildach przy publicznym starcie (stan na 2.10.2026). Wdrożenie wykonuje właściciel ręcznie.

## 1. Przed dniem startu

- [ ] **Prawnik** przejrzał politykę prywatności 1.1 (już na stronie: `templates/legal/privacy.html.twig`; pytania w `docs/legal/2026-10-02-polityka-prywatnosci-projekt-zmian.md`, pkt 3) i Regulamin 1.2.
- [ ] **Przelewy24 — produkcja**: `P24_MERCHANT_ID`, `P24_POS_ID`, `P24_CRC_KEY`, `P24_API_KEY`, `P24_SANDBOX=false`. W panelu P24 adres powiadomień: `https://tropo.city/api/p24/notify`.
- [ ] **Test zakupu w sandboxie P24** (przed przełączeniem na produkcję): zakup → strona powrotu pokazuje kod → mail z kodem dochodzi → aktywacja w aplikacji.
  Cała ścieżka jest pokryta testem automatycznym z udawanym P24 (`tests/Controller/PurchaseFlowTest.php`, w tym podpis powiadomienia i kwota) — sandbox potwierdza już tylko prawdziwe klucze i format podpisu po stronie P24.
- [ ] **Maile** (Resend): `MAILER_DSN=resend+api://…`, `MAILER_FROM` z domeny zweryfikowanej w Resend (np. `kontakt@tropo.city`). Wyślij testowy mail z panelu: Admin → Zamówienia → „Wyślij kod”.
- [ ] **Cloudflare Turnstile**: produkcyjne `CLOUDFLARE_TURNSTILE_SITE_KEY` / `…_SECRET_KEY`.
- [ ] **Google Analytics** (opcjonalnie): `GOOGLE_ANALYTICS_ID` — działa dopiero po zgodzie na cookies.
- [ ] **Geoapify** (opcjonalnie): `GEOAPIFY_API_KEY` — bez niego trasy liczy publiczny FOSSGIS (z zapamiętywaniem).
- [ ] **Logo w wektorze** (SVG lub ≥1024 px) — podmiana ikon aplikacji na ostrzejsze (`tropo-pwa/public/icons/`).

## 2. Wdrożenie backendu (tropo.city) — Capistrano

Capistrano wdraża gałąź **`main`** (`config/deploy.rb`), więc najpierw scal `feat/pwa-launch-readiness` do `main` i wypchnij. Potem:

```
cap production deploy
```

Po `deploy:updated` Capistrano sam uruchamia (`lib/capistrano/tasks/symfony.rake`): `importmap:install` → `tailwind:build --minify` → `asset-map:compile` → `doctrine:migrations:migrate` → `cache:clear`. Ręcznie nic z tego nie trzeba.

- Migracje z 1–2.10.2026 wykonają się przy tym deployu, w tym wgranie ok. 140 tys. miejsc do Przygody (plik `migrations/data/…csv.gz` jedzie w repo) — ten deploy potrwa dłużej niż zwykle.
- Jeśli treść misji idzie importem zamiast bazy lokalnej: `php bin/console app:import-missions <missions.json>` na serwerze.
- Klucze produkcyjne wpisz w `.env.local` na serwerze (plik współdzielony między wydaniami: `shared/.env.local`).

Zmienne: `PWA_ACCESS_CODE` (kod bety; po starcie może zostać — publiczny build go nie używa), `APP_SECRET` (podpis tokenów i statystyk — nie zmieniać po starcie).

**Zadania okresowe — w panelu admina, bez cronów:**
- Admin → **Ustawienia → Porządki danych**: raz w miesiącu (panel podświetla, gdy minęło 30 dni). Usuwa dane po okresach z polityki prywatności.
- Admin → **Miejsca → Import OpenStreetMap**: przycisk „Odśwież” przy województwie (najstarsze na górze, podświetlone po 35 dniach).

Te same operacje są też w konsoli: `app:data-retention`, `app:import-osm-places`.

## 3. Wdrożenie aplikacji (tropo.app)

- [ ] Publiczny build bez bramki bety: `VITE_BETA_GATE=false npm run build` (bez tej zmiennej build ma bramkę z kodem).
- [ ] `public/missions.json` wygenerowany z bazy: `php bin/console app:export-missions …/tropo-pwa/public/missions.json`.

## 4. Dzień startu

- [ ] Admin → Ustawienia: **wyłączyć tryb przerwy technicznej** (maintenance), monetyzacja włączona.
- [ ] Sprawdzić na telefonie (iPhone + Android): instalacja z ikoną kompasu, otwiera się gra (nie strona), pierwsza misja „Zasady TROPO”, Przygoda generuje trasę.
- [ ] Zakup jednego pakietu prawdziwą płatnością i zwrot (test produkcyjny).
- [ ] Admin → Tracking → Lejek PWA: pojawiają się zdarzenia `app_open`.

## 5. Pierwszy tydzień — gdzie patrzeć

- Admin → **Zamówienia**: płatności, ponowna wysyłka kodu, odblokowanie kodu po zmianie telefonu.
- Admin → **Lejek PWA**: ile osób kończy pierwszą misję, ile otwiera ekran TROPO+, ile kupuje.
- Admin → **Miejsca**: ukrywanie miejsc zgłoszonych jako niebezpieczne, odświeżanie województw.
- Admin → **Ustawienia → Porządki danych**: raz w miesiącu.
- Logi: błędy wysyłki maili (`Purchase e-mail not sent`), błędy importu miejsc.
