01 — Definición de proyecto — RELE
1. Identidad
| Campo | Valor |
|---|
| Nombre | RELE |
| Significado | Relé eléctrico + “releer” el contador: el consumo deja de ser opaco |
| Eslogan | ”El consumo, a la vista.” |
| Una frase | Panel de lecturas de contador del hogar (kWh por periodo) con revisión del asesor energético. |
| Sector | Energía / sostenibilidad del hogar |
| Tipo | Tool ops multi-rol JWT — Nivel 2 |
| Plataforma | Web responsive (móvil residente + desktop asesor) |
| Mercado demo | España (vivienda en València en seed) |
| Idioma | es-ES |
| Fecha caso | 2026-08-09 |
2. Problema
Principal ([HIPÓTESIS] de diseño)
Los hogares y asesores energéticos gestionan lecturas de contador por WhatsApp, Excel y capturas borrosas. El residente no tiene un historial con referencia; el asesor no tiene una cola con estado (enviada / revisada / a revisar) ni nota estructurada.
Secundarios
| Problema | Quién lo sufre | Efecto |
|---|
| “Te mando foto del contador” en hilos | Residente | No hay acuse ni código de referencia |
| Hojas sueltas / Excel local | Asesor | Difícil priorizar revisiones del mes |
| Sin periodo ni kWh estructurados | Ambos | Llamadas de ida y vuelta |
| Sin máquina de estados | Asesor | Se pierde qué ya se validó o se marcó anómalo |
Supuestos (no investigación primaria propia)
- S1 [SUPUESTO]: Hogares y asesorías pequeñas no necesitan un EMS industrial; sí un panel de lecturas con estado.
- S2 [SUPUESTO]: El residente prefiere registrar periodo + kWh en 1 pantalla a crear tickets genéricos.
- S3 [SUPUESTO]: El valor inmediato está en captura estructurada + pipeline de revisión, no en IoT ni cambio de comercializadora.
Hipótesis de producto
| ID | Hipótesis | Señal de validación (futura) |
|---|
| H1 | Un form de lectura con periodo y kWh reduce capturas ambiguas | ↓ “¿de qué mes era?” post-envío |
| H2 | Inbox con estados SUBMITTED→REVIEWED/FLAGGED acelera el cierre de revisión | Mediana tiempo SUBMITTED→REVIEWED |
| H3 | Códigos cortos RE-MMDD-XXX facilitan referencia oral | Uso del código en WhatsApp/llamada |
| H4 | Nota de asesor visible para el residente cierra el loop de confianza | % lecturas con advisorNote leída |
No se afirman estadísticas de mercado inventadas. Todo lo anterior es razonamiento de diseño etiquetado.
3. Propuesta de valor
| Para | Valor |
|---|
| Residente (Elena) | Registra kWh por periodo, ve histórico y notas del asesor. |
| Asesor (Toni) | Cola de revisiones, marca REVIEWED o FLAGGED con nota. |
| Asesoría / hogar | Canal digital mínimo viable sin marketplace ni EMS enterprise. |
No es RELE
| Excluido | Por qué |
|---|
| Marketplace de tarifas o comercializadoras | Matching multi-proveedor ≠ tool de lecturas |
| App fitness / club / lead form (VOLTA) | Dominio y patrón de producto distintos |
| Cuaderno agro / flota / legal | Dominios de otros días de la serie |
| SaaS multi-tenant con billing IoT | Complejidad L3/L4 |
| Integración contador inteligente nativa | Fuera del job “lectura a la vista” v1 |
4. Objetivos
Negocio / caso de estudio
- Demostrar vertical slice L2 energía con JWT multi-rol y dominio Reading + Home.
- Portfolio coherente: Paper + docs + app runnable.
Usuario
| Rol | Objetivo medible en demo |
|---|
| Residente | Crear lectura en < 2 min; ver código RE-… en lista |
| Asesor | Marcar REVIEWED / FLAGGED en < 3 taps desde el detalle |
No objetivos v1 (explícitos)
- Lectura automática del contador / OCPP / API distribuidora
- Comparador de tarifas con contratación
- Multi-vivienda con permisos granulares por hogar
- Chat in-app
- Export contable fiscal
5. Roles y permisos (resumen)
| Acción | Público | RESIDENT | ADVISOR |
|---|
| Ver home marketing | Sí | Sí | Sí |
| Login JWT | — | Sí | Sí |
| Listar lecturas | No | Propias | Todas (demo) |
| Ver stats summary | No | Propias | Globales |
| POST lectura | No | Sí | No (403) |
| Ver detalle | No | Si residentId propio | Sí |
| PATCH status + advisorNote | No | No (403) | Sí |
6. Métricas (modelo, no instrumentadas en v1 salvo base)
| Tipo | Métrica | Definición |
|---|
| North Star | Lecturas REVIEWED / mes | Revisiones realmente cerradas |
| Activación | 1ª lectura SUBMITTED del residente | POST create |
| Ops | % SUBMITTED revisadas en 7 días | SUBMITTED → REVIEWED/FLAGGED |
| Calidad datos | % FLAGGED / total | Señal de anomalía o tarifa |
| UX | Tiempo form complete | Mediana en analytics futuro |
7. Alcance funcional v1 (L2)
| Módulo | Incluido |
|---|
| Home pública | Hero, 3 pasos, CTAs rol, footer demo |
| Auth | POST /api/auth/login → JWT accessToken |
| Lecturas | GET list, GET stats, GET by id, POST create, PATCH status |
| UI estados | Loading implícito, empty, error de red |
| Seed | 2 users, 1 home, 5 readings |
8. Criterios de aceptación de producto
- Un residente autenticado puede crear una lectura (period + kWh) y recibir un código
RE-….
- Sin token, GET/POST/PATCH
/api/readings* responden 401.
- Un asesor puede iniciar sesión, ver la cola completa y stats (total, open, kwhTotal).
- El detalle permite al asesor transicionar a REVIEWED o FLAGGED con nota opcional.
- El residente no puede PATCH status (403); el asesor no puede POST create (403).
- La home comunica energía hogar y claridad de consumo, no marketplace ni fitness.
9. Stack y artefactos
| Capa | Detalle |
|---|
| Frontend | Angular + Tailwind · puerto 4200 |
| Backend | NestJS · puerto 3009 |
| DB | Neon PostgreSQL · Prisma · project sparkling-snow-59844541 |
| Auth | JWT (passport/strategy en API) |
| Diseño | Paper 01KZJNCCMJ1FDHHPZZ923RWDWY |
| Repo app | /Users/cristian/orca/rele-app/ · GitHub Criscode2022/rele-app |
10. Riesgos y mitigaciones
| Riesgo | Impacto | Mitigación v1 |
|---|
| Expectativa de lectura automática | Decepción | Copy “registras la lectura”; sin IoT |
| Confundir con comparador de tarifas | Expectativa marketplace | Marca panel de lecturas, no matching |
| PII + CUPS en lecturas | Privacidad | Solo JWT; doc 11; seed demo |
| kWh mal tipados | Datos basura | Validación @IsNumber() @Min(0) server |
| Confundir FLAGGED con error técnico | Ansiedad usuario | Microcopy “revisar tarifa / anomalía” en guía de contenido |