[PRC-001] PRC-009 soporte de emoji en Symbol del config (R2.7 deferido) #55

Closed
opened 2026-04-21 15:58:55 +00:00 by dmolinari · 1 comment
Owner

Actualmente el backend acepta emoji en el campo Symbol del config (NVARCHAR(4) permite 2-codepoint emojis), pero el frontend SymbolInput los bloquea. Si en PRC-009 (endpoint unificado /pricing/quote) se decide permitir emojis como símbolos cobrables → debe actualizarse el SymbolInput y extenderse EmojiDetectedException para distinguir 'emoji en texto del aviso' (rechazado) vs 'emoji configurado como Symbol'.

Actualmente el backend acepta emoji en el campo `Symbol` del config (`NVARCHAR(4)` permite 2-codepoint emojis), pero el frontend SymbolInput los bloquea. Si en PRC-009 (endpoint unificado /pricing/quote) se decide permitir emojis como símbolos cobrables → debe actualizarse el SymbolInput y extenderse `EmojiDetectedException` para distinguir 'emoji en texto del aviso' (rechazado) vs 'emoji configurado como Symbol'.
Author
Owner

Resuelto por PR #60 (commit 3e7c4bf).

Decisión negocio (2026-04-21): emojis NO se permiten en Symbol del config. No se difiere a PRC-009 — se implementa ahora.

Cambios aplicados:

  • src/api/SIGCM2.Domain/Pricing/WordCounter/WordCounterService.cs: nuevo helper público ContainsEmoji(string?) que reutiliza los rangos Unicode de IsEmojiRune (Emoticons, Pictographs, Dingbats, VS-16, ZWJ).
  • src/api/SIGCM2.Application/Pricing/ChargeableChars/Create/CreateChargeableCharConfigCommandValidator.cs: regla .Must(s => !WordCounterService.ContainsEmoji(s)) en Symbol con mensaje explicativo.
  • Tests: 5 emojis positivos + 8 plain symbols + E2E Post_WithEmojiSymbol_Returns400 (antes era _Returns201_BecauseEmojiRejectionIsDeferred).
Resuelto por PR #60 (commit `3e7c4bf`). **Decisión negocio (2026-04-21)**: emojis NO se permiten en Symbol del config. No se difiere a PRC-009 — se implementa ahora. **Cambios aplicados**: - `src/api/SIGCM2.Domain/Pricing/WordCounter/WordCounterService.cs`: nuevo helper público `ContainsEmoji(string?)` que reutiliza los rangos Unicode de `IsEmojiRune` (Emoticons, Pictographs, Dingbats, VS-16, ZWJ). - `src/api/SIGCM2.Application/Pricing/ChargeableChars/Create/CreateChargeableCharConfigCommandValidator.cs`: regla `.Must(s => !WordCounterService.ContainsEmoji(s))` en Symbol con mensaje explicativo. - Tests: 5 emojis positivos + 8 plain symbols + E2E `Post_WithEmojiSymbol_Returns400` (antes era `_Returns201_BecauseEmojiRejectionIsDeferred`).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dmolinari/SIG-CM2.0#55