Feedback UAT
Activation Contract
Usá esta skill cuando un portal interno necesite capturar feedback formal de usuarios durante UAT, pilotos, pruebas operativas o validación de negocio.
Outcome
El usuario puede dejar feedback desde cualquier vista principal del portal y el comentario queda guardado en base de datos con usuario, fecha, vista y contexto suficiente para que Comercial/Producto lo revise y lo convierta en backlog.
Hard Rules
- Agregá un botón visible “Dejar feedback” en todas las vistas principales del portal.
- No guardes feedback en JSON, archivos locales, mocks,
localStorage ni fixtures.
- Persistí siempre por API/BD usando el endpoint de feedback definido por el proyecto.
- Usá como estándar común de portales:
- No crees endpoints por portal como primera opción. Sólo usalos si existe una razón de aislamiento real y documentada.
POST /api/sucursal-virtual/feedback queda como alias compatible de SV360, no como contrato nuevo.
- Enviá siempre
portal y origen para identificar claramente la aplicación; appVersion es complementario, no reemplazo del origen.
- Si vence el token o la API devuelve no autorizado, redirigí al login o iniciá el flujo de sesión expirada.
- Cuando haya comunicación operativa del feedback o resumen para seguimiento, usá el canal Slack
#feedback-sites.
- Nunca muestres stacktrace, payload técnico, headers, tokens ni mensajes internos al usuario.
- No marques la tarea como validada sin probar persistencia real en BD o endpoint de revisión.
UI Contract
El botón debe abrir un modal accesible con:
tipo: error, mejora, no entiendo el flujo, falta información, otro.
prioridad: baja, media, alta, crítica.
- checkbox: “esto me impide continuar la prueba”.
nombre de contacto: obligatorio si no puede inferirse del usuario logueado; mostrarlo editable en maquetas/UAT.
comentario: obligatorio.
El modal debe incluir:
- foco inicial y cierre por teclado;
- validación visible del comentario obligatorio;
- estado de envío/loading;
- botón enviar deshabilitado mientras se procesa;
- contraste correcto en light/dark mode;
- texto legible en hover, focus, disabled y error.
Generic API Contract
Para nuevos portales, usá este contrato base:
POST /api/feedback
Authorization: Bearer <token-del-portal>
Content-Type: application/json
Campos mínimos recomendados:
{
"portal": "nombre-corto-del-portal",
"origen": "NombreHumanoDelPortal",
"vista": "home",
"tipo": "mejora",
"severidad": "baja",
"bloqueaPrueba": false,
"comentario": "Texto ingresado por quien prueba",
"usuarioEmail": "usuario@example.com",
"usuarioNombre": "Nombre de contacto",
"clienteDocumento": "opcional",
"numeroAbonado": "opcional",
"domicilio": "opcional",
"url": "url actual",
"userAgent": "navegador",
"appVersion": "build o version"
}
Respuesta esperada de alta: 201 con id.
La API se encarga de persistir y de derivar la comunicación interna por API Comunicaciones. El frontend no debe llamar Slack ni webhooks directos.
Payload Contract
Enviar junto con el comentario:
- usuario logueado;
- nombre de contacto de quien deja el feedback;
- email;
- fecha/hora;
- vista o sección actual;
- URL actual;
- navegador/user agent;
- identificador de cliente, abonado o contrato si aplica;
- domicilio o contexto activo si aplica;
- versión del portal si está disponible;
portal y origen siempre; appVersion si está disponible;
- tipo, prioridad, bloqueo de prueba, nombre de contacto y comentario.
User Messages
Usá estos mensajes visibles:
- Éxito: “Feedback registrado. Gracias por ayudar a mejorar la prueba.”
- Error: “No pudimos registrar el feedback en este momento. Intentá nuevamente más tarde.”
Communication Contract
Cuando el flujo incluya avisos, resumen de hallazgos, reporte de UAT o coordinación posterior:
- usá Slack
#feedback-sites como canal operativo;
- no publiques datos sensibles del usuario, cliente, contrato, domicilio ni tokens;
- podés incluir el nombre de contacto sólo si es necesario para seguimiento UAT y el canal es interno;
- compartí sólo resumen accionable: portal, vista, tipo, prioridad, bloqueo, nombre de contacto, fecha y link interno de revisión si existe;
- si la prioridad es
crítica o bloquea la prueba, marcá el aviso como urgente sin exponer información privada.
Manual Contract
Actualizá el manual del portal con una sección breve para usuarios:
- dónde aparece “Dejar feedback”;
- cuándo usarlo;
- qué significa prioridad y “me impide continuar la prueba”;
- qué información se adjunta automáticamente;
- por qué se solicita nombre de contacto para poder consultar dudas de la maqueta/UAT;
- cómo se comunica internamente el seguimiento por
#feedback-sites cuando aplique;
- aclaración de que el feedback ayuda a convertir comentarios de UAT en backlog.
Validation Checklist
Antes de aprobar:
- Build OK.
- Login real OK.
- El botón aparece en todas las vistas principales.
- El comentario obligatorio se valida.
- El
POST /api/feedback devuelve 201 o, si el portal tiene excepción documentada, el endpoint acordado devuelve 201.
- Un
GET, vista de revisión, log o consulta controlada confirma que el feedback quedó guardado.
- El feedback incluye usuario, nombre de contacto, fecha, vista, URL y contexto aplicable.
- Token vencido vuelve al login sin error técnico.
- No hay mocks, JSON ni archivos locales para persistencia.
- Deploy publicado y verificado.
Reference
Implementación base conocida:
- Repo:
ggsoluciones-sucursal-virtual-360
- Frontend inicial:
43c15ff feat: add uat feedback capture
- API Gateway/Postventa inicial:
fe4345d feat: persist sv360 feedback
- Endpoint común vigente:
POST /api/feedback
- Alias compatible SV360:
POST /api/sucursal-virtual/feedback
- API Gateway genérico:
4d4505e feat: add generic feedback endpoint
- SV360 migrado al endpoint común:
ca04935 feat: use generic feedback endpoint
- Tabla:
postventa.SucursalVirtualFeedback
- Comunicación interna: API Comunicaciones hacia Slack
#feedback-sites
Tomá la referencia como contrato funcional, no como copia ciega: adaptá nombres, contexto, portal y origen al portal real. La persistencia y la comunicación deben quedar centralizadas detrás del API Gateway.
1---2name: feedback-uat3description: Trigger: feedback UAT, dejar feedback, prueba de usuario, comentarios de prueba, error de prueba, mejora, no entiendo el flujo.4license: Apache-2.05---67# Feedback UAT89## Activation Contract1011Usá esta skill cuando un portal interno necesite capturar feedback formal de usuarios durante UAT, pilotos, pruebas operativas o validación de negocio.1213## Outcome1415El usuario puede dejar feedback desde cualquier vista principal del portal y el comentario queda guardado en base de datos con usuario, fecha, vista y contexto suficiente para que Comercial/Producto lo revise y lo convierta en backlog.1617## Hard Rules1819- Agregá un botón visible **“Dejar feedback”** en todas las vistas principales del portal.20- No guardes feedback en JSON, archivos locales, mocks, `localStorage` ni fixtures.21- Persistí siempre por API/BD usando el endpoint de feedback definido por el proyecto.22- Usá como estándar común de portales:23 - `POST /api/feedback`24- No crees endpoints por portal como primera opción. Sólo usalos si existe una razón de aislamiento real y documentada.25- `POST /api/sucursal-virtual/feedback` queda como alias compatible de SV360, no como contrato nuevo.26- Enviá siempre `portal` y `origen` para identificar claramente la aplicación; `appVersion` es complementario, no reemplazo del origen.27- Si vence el token o la API devuelve no autorizado, redirigí al login o iniciá el flujo de sesión expirada.28- Cuando haya comunicación operativa del feedback o resumen para seguimiento, usá el canal Slack **`#feedback-sites`**.29- Nunca muestres stacktrace, payload técnico, headers, tokens ni mensajes internos al usuario.30- No marques la tarea como validada sin probar persistencia real en BD o endpoint de revisión.3132## UI Contract3334El botón debe abrir un modal accesible con:3536- `tipo`: `error`, `mejora`, `no entiendo el flujo`, `falta información`, `otro`.37- `prioridad`: `baja`, `media`, `alta`, `crítica`.38- checkbox: **“esto me impide continuar la prueba”**.39- `nombre de contacto`: obligatorio si no puede inferirse del usuario logueado; mostrarlo editable en maquetas/UAT.40- `comentario`: obligatorio.4142El modal debe incluir:4344- foco inicial y cierre por teclado;45- validación visible del comentario obligatorio;46- estado de envío/loading;47- botón enviar deshabilitado mientras se procesa;48- contraste correcto en light/dark mode;49- texto legible en hover, focus, disabled y error.505152## Generic API Contract5354Para nuevos portales, usá este contrato base:5556```http57POST /api/feedback58Authorization: Bearer <token-del-portal>59Content-Type: application/json60```6162Campos mínimos recomendados:6364```json65{66 "portal": "nombre-corto-del-portal",67 "origen": "NombreHumanoDelPortal",68 "vista": "home",69 "tipo": "mejora",70 "severidad": "baja",71 "bloqueaPrueba": false,72 "comentario": "Texto ingresado por quien prueba",73 "usuarioEmail": "usuario@example.com",74 "usuarioNombre": "Nombre de contacto",75 "clienteDocumento": "opcional",76 "numeroAbonado": "opcional",77 "domicilio": "opcional",78 "url": "url actual",79 "userAgent": "navegador",80 "appVersion": "build o version"81}82```8384Respuesta esperada de alta: `201` con `id`.8586La API se encarga de persistir y de derivar la comunicación interna por API Comunicaciones. El frontend no debe llamar Slack ni webhooks directos.8788## Payload Contract8990Enviar junto con el comentario:9192- usuario logueado;93- nombre de contacto de quien deja el feedback;94- email;95- fecha/hora;96- vista o sección actual;97- URL actual;98- navegador/user agent;99- identificador de cliente, abonado o contrato si aplica;100- domicilio o contexto activo si aplica;101- versión del portal si está disponible;102- `portal` y `origen` siempre; `appVersion` si está disponible;103- tipo, prioridad, bloqueo de prueba, nombre de contacto y comentario.104105## User Messages106107Usá estos mensajes visibles:108109- Éxito: **“Feedback registrado. Gracias por ayudar a mejorar la prueba.”**110- Error: **“No pudimos registrar el feedback en este momento. Intentá nuevamente más tarde.”**111112## Communication Contract113114Cuando el flujo incluya avisos, resumen de hallazgos, reporte de UAT o coordinación posterior:115116- usá Slack **`#feedback-sites`** como canal operativo;117- no publiques datos sensibles del usuario, cliente, contrato, domicilio ni tokens;118- podés incluir el nombre de contacto sólo si es necesario para seguimiento UAT y el canal es interno;119- compartí sólo resumen accionable: portal, vista, tipo, prioridad, bloqueo, nombre de contacto, fecha y link interno de revisión si existe;120- si la prioridad es `crítica` o bloquea la prueba, marcá el aviso como urgente sin exponer información privada.121122## Manual Contract123124Actualizá el manual del portal con una sección breve para usuarios:125126- dónde aparece **“Dejar feedback”**;127- cuándo usarlo;128- qué significa prioridad y “me impide continuar la prueba”;129- qué información se adjunta automáticamente;130- por qué se solicita nombre de contacto para poder consultar dudas de la maqueta/UAT;131- cómo se comunica internamente el seguimiento por **`#feedback-sites`** cuando aplique;132- aclaración de que el feedback ayuda a convertir comentarios de UAT en backlog.133134## Validation Checklist135136Antes de aprobar:1371381. Build OK.1392. Login real OK.1403. El botón aparece en todas las vistas principales.1414. El comentario obligatorio se valida.1425. El `POST /api/feedback` devuelve `201` o, si el portal tiene excepción documentada, el endpoint acordado devuelve `201`.1436. Un `GET`, vista de revisión, log o consulta controlada confirma que el feedback quedó guardado.1447. El feedback incluye usuario, nombre de contacto, fecha, vista, URL y contexto aplicable.1458. Token vencido vuelve al login sin error técnico.1469. No hay mocks, JSON ni archivos locales para persistencia.14710. Deploy publicado y verificado.148149## Reference150151Implementación base conocida:152153- Repo: `ggsoluciones-sucursal-virtual-360`154- Frontend inicial: `43c15ff feat: add uat feedback capture`155- API Gateway/Postventa inicial: `fe4345d feat: persist sv360 feedback`156- Endpoint común vigente: `POST /api/feedback`157- Alias compatible SV360: `POST /api/sucursal-virtual/feedback`158- API Gateway genérico: `4d4505e feat: add generic feedback endpoint`159- SV360 migrado al endpoint común: `ca04935 feat: use generic feedback endpoint`160- Tabla: `postventa.SucursalVirtualFeedback`161- Comunicación interna: API Comunicaciones hacia Slack `#feedback-sites`162163Tomá la referencia como contrato funcional, no como copia ciega: adaptá nombres, contexto, `portal` y `origen` al portal real. La persistencia y la comunicación deben quedar centralizadas detrás del API Gateway.