Skip to content

fix(i18n): el servidor deja de devolver prosa en espanol en el portal y las notificaciones - #78

Merged
keilynrp merged 1 commit into
masterfrom
feat/i18n-portal-prose
Oct 10, 2026
Merged

keilynrp merged 1 commit into
masterfrom
feat/i18n-portal-prose

Conversation

@keilynrp

@keilynrp keilynrp commented Oct 9, 2026

Copy link
Copy Markdown
Collaborator

Resumen

Tercer paso del recorrido en inglés (tarea 12): dos sitios donde el servidor devolvía texto en español que la API no debe llevar (ADR 0014 y API_CONVENTIONS: message en inglés de desarrollador, la interfaz traduce). No eran iguales:

  • Portal (PortalActionResult.message): «Ya realizaste una acción…», «Cotización aceptada…» y «Cotización rechazada…» pasan a inglés. Ninguna pantalla los mostraba (la página del portal usa su catálogo customerPortal), así que eran prosa muerta en la API.
  • Notificaciones en vivo (esto sí lo veía el usuario): el WebSocket mandaba title desde NOTIFY_LABELS, en español, y la campana lo pintaba tal cual; un usuario en inglés veía «Cotización aceptada». Ahora el servidor manda solo event_type y la interfaz pone el texto con layout:notifications.events.<EventType> (es y en, los 14 eventos). Un evento sin entrada se muestra con su nombre. NOTIFY_LABELS y el campo title desaparecen: la única interfaz que consumía el WebSocket es la nuestra.

Tests

  • El reenvío del WebSocket se prueba ahora ejecutando notifications_ws de verdad. Antes tres tests recomponían el mensaje a mano y no ejercitaban el router. Los nuevos comprueban que no hay title y que el filtro de eventos funciona.
  • El control «todo evento notificable tiene etiqueta» pasa a mirar los catálogos del frontend (es y en), y que no sobren etiquetas de eventos que el servidor nunca manda. Se salta si el checkout no incluye el frontend.
  • Los tests e2e que dependían de NOTIFY_LABELS se adaptan.
  • Frontend: la campana en español, en inglés real y con un evento desconocido.

Verificación

  • 95 tests de backend (notificaciones, portal, e2e, barrido de claves) y 45 de frontend (layout, inglés, catálogos) pasan; typecheck y lint limpios.
  • Gobernanza y recuentos documentados (972 tests, 50 archivos) comprobados en local.
  • No se corrieron las suites completas en local (las corre CI). No hice mutación sobre el test nuevo del WebSocket; su aserción es una igualdad exacta del mensaje.

Siguiente

Discovery (asistente, blueprint y descripciones de capacidades) y el recorrido real en el navegador en inglés.

🤖 Generated with Claude Code

… y las notificaciones

Dos sitios devolvian texto en espanol que la API no debe llevar (ADR 0014,
`API_CONVENTIONS`: `message` en ingles de desarrollador, y la interfaz traduce).

- Portal (`PortalActionResult.message`): «Ya realizaste una accion...», «Cotizacion
  aceptada...» y «Cotizacion rechazada...» pasan a ingles. Ninguna pantalla los
  mostraba (la pagina del portal usa su catalogo `customerPortal`); eran prosa muerta
  en la API. El dato variable (`action`) ya viajaba en su campo.
- Notificaciones en vivo: el WebSocket mandaba `title` con `NOTIFY_LABELS`, en espanol, y
  la campana lo pintaba tal cual: un usuario en ingles veia «Cotizacion aceptada». Ahora
  el servidor manda solo `event_type` y la interfaz pone el texto con
  `layout:notifications.events.<EventType>` (es y en, 14 eventos). Un evento sin entrada
  se muestra con su nombre. `NOTIFY_LABELS` y el campo `title` desaparecen; la unica
  interfaz que consumia el WebSocket es la nuestra.
- El control «todo evento notificable tiene etiqueta» pasa a mirar los catalogos del
  frontend (y que no sobren etiquetas de eventos que el servidor nunca manda).

Tests: el reenvio del WebSocket se prueba ahora ejecutando `notifications_ws` de
verdad (antes tres tests recomponian el mensaje a mano y no ejercitaban el router),
mas el filtro de eventos; la campana en espanol, en ingles y con un evento desconocido.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-09T23:48:21.155776Z d37423e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d37423e79c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines 152 to 154
"type": "notification",
"event_type": event_type,
"title": NOTIFY_LABELS.get(event_type, event_type),
"payload": event.get("payload", {}),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the title field during the WebSocket rollout

When this backend is deployed while a browser still has the previous frontend bundle open, that client continues rendering n.title; after the backend restart its built-in reconnect succeeds, but every new payload now lacks title, leaving notification headings blank until the user reloads. Keep a compatibility field (it can temporarily contain event_type) or version/phase the protocol change so existing sessions remain usable.

Useful? React with 👍 / 👎.

@keilynrp
keilynrp merged commit 23c5b3b into master Oct 10, 2026
5 checks passed
@keilynrp
keilynrp deleted the feat/i18n-portal-prose branch October 10, 2026 00:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant