Sorpresas de campo
De vez en cuando, Rastrum puede mostrarte una pequeña tarjeta tras una observación: un dato curioso, un aviso de especie rara o cuántos otros observadores estuvieron activos hoy en tu región. Esta página explica exactamente cómo se decide y cómo apagarlo.
Por qué existe esto
B.J. Fogg describe en Persuasive Technology (cap. 9) que las recompensas variables ocultas — del estilo "tragamonedas" — son un patrón oscuro. Pero las recompensas variables transparentes, donde tú conoces las reglas, no son manipulación: son simple sorpresa-y-deleite. Esta página existe para mantener Rastrum del lado correcto de esa línea.
El catálogo es FIJO en el código (no se puede agregar un tipo de sorpresa sin un PR). El tope diario es FIJO. La opción está APAGADA por defecto.
El catálogo (3 tipos)
dato_curioso — dato curioso
- Cuándo se dispara: aleatorio, ~10 % de las observaciones sincronizadas que tengan una especie identificada con un dato curado disponible en tu idioma.
- Aleatoriedad: el sorteo se hace con un PRNG sembrado por el ID de la observación, así que reabrir la app no cambia el resultado.
- Datos: curados a mano por especie en src/lib/surprise-facts.ts. Cuando no tenemos un dato para esa especie usamos el pool genérico.
rarito — observación rara
- Cuándo se dispara: determinista. Si la especie identificada cae en el bucket "rare" del cálculo nocturno de rareza (top ~5 %), aparece esta tarjeta. Sin azar.
- Prioridad: rarito gana sobre los otros tipos cuando se dispara — es la información más informativa de las tres.
comunidad_activa_hoy — comunidad activa hoy
- Cuándo se dispara: determinista, máximo 1 vez al día. Solo cuando hay 2 o más observadores activos en tu país hoy.
- Cómo se calcula: la función SQL community_active_observers_today() cuenta observadores únicos con observaciones sincronizadas hoy en tu país (ISO-3166), excluyendo perfiles que se ocultaron de leaderboards.
Tope diario
Como máximo se muestra UNA sorpresa al día, sin importar cuántas observaciones registres. El tope se aplica en dos lugares: localStorage del navegador (cap rápido) y la función SQL record_surprise_event() en Postgres (a prueba de carreras entre pestañas).
Privacidad
- La tabla surprise_events tiene RLS read-own. Solo tú ves tus propias filas.
- No se envía nada a sponsors, terceros ni se publica nunca en tu perfil.
- El conteo de observadores activos se calcula con datos ya públicos (mismo origen que el directorio de la comunidad).
Cómo apagarlo
Ve a Perfil → Ajustes → Preferencias → "Sorpresas de campo" y desactiva el checkbox. El cambio surte efecto inmediatamente.
Lo que NO hace
- No es loot. No hay desbloqueables, monedas, ni "racha de sorpresas". Una sorpresa es un mensaje, no un premio canjeable.
- No reemplaza badges. Los logros y rachas siguen existiendo independientes. Las sorpresas no afectan tu karma, racha ni dex.
- No es publicidad. Ningún tipo de sorpresa promociona productos, sponsors ni un próximo evento.
Issue: #727 · Código: src/lib/surprises.ts