fix: detalles del formato de telefono senalados en la revision
Revisión con IA / ai-review (pull_request) Successful in 25s

- esLocalArgentinoValido tambien rechaza los que arrancan con 15: ninguna
  caracteristica argentina empieza asi, es el viejo prefijo de celular.
- El formulario ya no reta "faltan digitos" mientras se esta tipeando; ese
  aviso espera a que el campo pierda el foco. Los errores seguros (0 o 15
  adelante) se siguen mostrando al instante.
- chat-bot.ts normalizaba el telefono para conversar pero no para /reset, asi
  que el reset no encontraba la conversacion y no borraba nada.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Beldor
2026-08-05 15:02:59 -03:00
parent ffa32a113d
commit 9e93808dc1
3 changed files with 16 additions and 5 deletions
+3 -1
View File
@@ -14,8 +14,10 @@
import { createInterface } from "readline"; import { createInterface } from "readline";
import { prisma } from "../src/lib/prisma"; import { prisma } from "../src/lib/prisma";
import { procesarMensaje } from "../src/lib/whatsapp-bot"; import { procesarMensaje } from "../src/lib/whatsapp-bot";
import { normalizarTelefono } from "../src/lib/telefono";
const telefono = process.argv[2] ?? "5493510000000"; // Normalizado igual que en el bot: si no, /reset no encuentra la conversación.
const telefono = normalizarTelefono(process.argv[2] ?? "5493510000000");
function mostrar(resp: { tipo: string; texto: string; botones?: { titulo: string }[] }[]) { function mostrar(resp: { tipo: string; texto: string; botones?: { titulo: string }[] }[]) {
for (const r of resp) { for (const r of resp) {
+10 -3
View File
@@ -23,12 +23,18 @@ export default function RegistroPage() {
function handleTelefono(e: React.ChangeEvent<HTMLInputElement>) { function handleTelefono(e: React.ChangeEvent<HTMLInputElement>) {
const soloDigitos = e.target.value.replace(/\D/g, "").slice(0, 10); const soloDigitos = e.target.value.replace(/\D/g, "").slice(0, 10);
setForm((f) => ({ ...f, telefono: soloDigitos })); setForm((f) => ({ ...f, telefono: soloDigitos }));
if (soloDigitos === "") setTelefonoError(""); // Mientras tipea sólo se avisa lo que ya es un error seguro; lo de "faltan
else if (soloDigitos.startsWith("0")) setTelefonoError("Sin el 0 de la característica"); // dígitos" espera a que salga del campo, para no retarlo por la mitad.
else if (soloDigitos.length < 10) setTelefonoError("Faltan dígitos (son 10 en total)"); if (soloDigitos.startsWith("0")) setTelefonoError("Sin el 0 de la característica");
else if (soloDigitos.startsWith("15")) setTelefonoError("Sin el 15, poné la característica");
else setTelefonoError(""); else setTelefonoError("");
} }
function handleTelefonoBlur() {
if (form.telefono && !esLocalArgentinoValido(form.telefono))
setTelefonoError("Son 10 dígitos: característica sin el 0 y número sin el 15");
}
async function handleSubmit(e: React.FormEvent) { async function handleSubmit(e: React.FormEvent) {
e.preventDefault(); e.preventDefault();
if (!esLocalArgentinoValido(form.telefono)) { if (!esLocalArgentinoValido(form.telefono)) {
@@ -76,6 +82,7 @@ export default function RegistroPage() {
error={telefonoError} error={telefonoError}
value={form.telefono} value={form.telefono}
onChange={handleTelefono} onChange={handleTelefono}
onBlur={handleTelefonoBlur}
required required
/> />
{error && <p className="text-sm text-red-500 text-center">{error}</p>} {error && <p className="text-sm text-red-500 text-center">{error}</p>}
+3 -1
View File
@@ -20,7 +20,9 @@ export const PREFIJO_WHATSAPP_AR = "549";
*/ */
export function esLocalArgentinoValido(local: string): boolean { export function esLocalArgentinoValido(local: string): boolean {
const d = normalizarTelefono(local); const d = normalizarTelefono(local);
return d.length === 10 && !d.startsWith("0"); // Ninguna característica argentina empieza con 0 (es el prefijo de larga distancia)
// ni con 15 (el viejo prefijo de celular), así que esos casos son error de tipeo.
return d.length === 10 && !d.startsWith("0") && !d.startsWith("15");
} }
/** Número local a formato WhatsApp: 1141984844 → 5491141984844. */ /** Número local a formato WhatsApp: 1141984844 → 5491141984844. */