[Vineyard & Winery Elf](https://elf.intum.pl/kb/vineyard-winery-elf.md)

# [Beta Onboarding - Plan wprowadzenia nowych użytkowników](https://elf.intum.pl/kb/vineyard-winery-elf/beta-onboarding-plan-wprowadzenia-nowych-uzytkownikow-m1mVUn2d.md)

# Beta Onboarding - Plan

> Status: W przygotowaniu
> Cel: Umożliwić rejestrację beta testerów (winiarzy)

## Obecny stan

- ✅ Dashboard działa
- ✅ Pogoda z OpenMeteo działa
- ✅ Modele chorób działają
- ⬜ **Brakuje**: mechanizmu tworzenia kont dla nowych użytkowników

## Must Have (przed wpuszczeniem beta testerów)

### 1. Tworzenie kont

Opcje:
- **A) Rake task** - skrypt do ręcznego tworzenia konta
- **B) Manual** - przez Rails console (tymczasowo)

Potrzebne dane:
- Email użytkownika
- Nazwa winnicy
- Lokalizacja GPS (lat/lng)

### 2. Konfiguracja lokalizacji

Opcje:
- **A) Ekran setup** - formularz przy pierwszym logowaniu
- **B) Manual** - admin ustawia w bazie

Pola:
- Latitude (-90 do 90)
- Longitude (-180 do 180)
- Opcjonalnie: mapa z pinezką

## Should Have (znacznie poprawi UX)

### 3. Cron job - automatyczne odświeżanie prognoz

- Co 6 godzin pobiera prognozę dla wszystkich kont
- Rate limiting dla OpenMeteo
- Obsługa błędów per-konto

### 4. Email alerty

Triggery:
- Temperatura ≤2°C (ryzyko przymrozków)
- Ryzyko mączniaka >70%
- Okno opryskowe

Uwagi:
- Cooldown: max 1 alert/24h
- Nie wysyłać w nocy (chyba że PILNE)
- Link do unsubscribe

## Nice to Have (może poczekać)

- Landing page do zgłoszeń beta
- Self-registration
- Onboarding wizard

## Scenariusz minimalny

Jeśli nie ma gotowych mechanizmów:

1. Admin ręcznie tworzy konta przez Rails console
2. Wysyła email z hasłem tymczasowym
3. Ręcznie ustawia GPS w bazie

To wystarczy na test z 3-5 osobami.

## Pytania do wyjaśnienia

- Jak tworzyć Account + User + UserSetting? (jest service?)
- Jak "instalować" aplikację weather/station dla konta?
- Magic link do logowania - czy jest gotowy mechanizm?
- Cache dla OpenMeteo - czy istnieje?

## Następne kroki

1. Wyjaśnić pytania techniczne
2. Zdecydować scenariusz (pełny vs minimalny)
3. Zaimplementować minimum
4. Przetestować na 1 koncie
5. Wpuścić pierwszego beta testera