Checklist
Checklist ke stažení: příprava, API, testy, telemetrie, bezpečnost a incident plan pro SMS OTP ve formulářích.
OTP (SMS) – Nasazení, testy, monitoring, incident plan (Checklist)
1) Příprava & právní rámec
- [ ] Definovaný účel zpracování (registrace/checkout/reset/e-forms) a právní základ (b/f).
- [ ] DPA se SMS poskytovatelem, případně SCCs (pokud data mimo EHP).
- [ ] ROPA položka „OTP verifikace“; retenční doby: OTP 5–10 min, logy 30–90 dní.
- [ ] DPIA (veřejná správa/health/rizikové scénáře) – posouzené riziko a opatření.
- [ ] Výběr SMS gateway (EU datová rezidence), fallback: voice/e-mail.
2) Backend (API)
- [ ] Endpoints: POST /api/otp/send, POST /api/otp/verify, webhook /api/otp/status (HMAC).
- [ ] OTP uložené jen jako hash + TTL (5–10 min); po ověření smazat.
- [ ] Rate-limit send (IP + phone), verify (pokusy), resend cooldown (30–60 s).
- [ ] Lock po 5 chybách (např. 10 min); jednotné chybové kódy.
- [ ] Idempotence (requestId), retry-safe volání do SMS gateway.
- [ ] Audit logy bez PII (event, intent, čas, hash IP/UA, traceId).
3) Frontend (UX/A11y)
- [ ] 1× input s auto-formatem (nebo 6 boxů s auto-advance/backspace/paste).
- [ ] inputmode="numeric", autocomplete="one-time-code", viditelný label.
- [ ] Resend s odpočtem 30–60 s; „Změnit číslo“ + fallback hovor/e-mail.
- [ ] Mikrocopy: kam posláno, co dělat když nedorazí, kdy vyprší.
- [ ] A11y: aria-live pro chyby, focus management, kontrast AA, tap target ≥ 44×44 px.
4) Testy (unit/E2E)
- [ ] Happy path: send → verify → redirect; žádný kód v logu/URL.
- [ ] INVALID_CODE, EXPIRED, TOO_MANY_ATTEMPTS, RATE_LIMIT, DELIVERY_FAILED.
- [ ] Resend cooldown a lock; změna čísla; fallback hovor/e-mail.
- [ ] Webhook HMAC validace (+ časové okno).
5) Měření & telemetry
- [ ] Eventy: otp_view/send_clicked/send_success/verify_success/fail/resend/timeout.
- [ ] otp_session_id pro jeden průchod; čas send_success a verify_success.
- [ ] Dashboard: completion rate, median/p95 verifikace, resend rate, error mix, delivery success.
- [ ] Alerty: delivery success <95 %, median >60 s, spike RATE_LIMIT/DELIVERY_FAILED.
6) Bezpečnost & provoz
- [ ] Šifrování at-rest (telefon), přístup podle role (least privilege).
- [ ] CAPTCHAs adaptivně (rizikové chování), ne plošně.
- [ ] Politika záloh a retenční doby; WORM/append-only pro audit dle potřeby.
- [ ] Incident plan: nesprávné směrování SMS, výpadek gateway, zneužití endpointu.
7) Go-live
- [ ] Postupný rollout (feature flag/A-B), sledování guardrails.
- [ ] Dokumentace pro support (FAQ k OTP, fallbacky).
- [ ] Post-mortem po 2 týdnech: learnings, úpravy limitů, textů, UX.