Commit Graph

54 Commits

Author SHA1 Message Date
jpbeldomenico a7bb038b6b fix(ci): reintentar la revision con IA cuando falla el proveedor
Revisión con IA / ai-review (pull_request) Successful in 44s
El 03/08/2026 OpenRouter devolvio 502 con el modelo gratuito y el pull
request se mergeo sin revisar. Ahora revisar() reintenta hasta 3 veces con
espera creciente (30s, 60s), pero solo ante las marcas que deja una falla
al pedirle la respuesta al modelo: un 401 o un modelo que ya no existe
siguen cortando en el primer intento, porque esperar no los arregla.

De paso se saca la tuberia a tee: el codigo de salida que se evaluaba era
el de tee, siempre 0, asi que esa mitad del guard nunca hizo nada.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 21:10:32 -03:00
jpbeldomenico d74c97e532 Merge pull request 'ci: construir antes de bajar el servicio' (#2) from fix/deploy-robusto into main
Deploy / deploy (push) Successful in 4m46s
2026-08-03 20:04:35 -03:00
jpbeldomenico f1ef9da857 fix(ci): construir antes de bajar el servicio
Revisión con IA / ai-review (pull_request) Failing after 24s
El despliegue hacia "docker compose down" y recien despues
"up -d --build". Si la construccion fallaba, el taller quedaba caido hasta
que alguien lo notara: paso el 03/08/2026, cuando npm no pudo bajar las
dependencias y el sitio estuvo abajo sin que ningun paso lo avisara.

Ahora la imagen se construye primero y solo despues se recrean los
contenedores, sin bajar nada de antemano. Si la construccion falla, lo que
estaba corriendo sigue en pie.

Se agrega ademas una verificacion final: si al terminar no hay contenedores
corriendo, el despliegue falla y muestra los registros, en lugar de dar por
bueno un servicio caido.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 19:49:17 -03:00
jpbeldomenico 8d1b5da448 Merge pull request 'ci: revisar los pull requests con IA' (#1) from feat/ai-review into main
Deploy / deploy (push) Failing after 1m31s
2026-08-03 19:27:55 -03:00
jpbeldomenico 5e027d2c8c feat(ci): revisar los pull requests con IA
Revisión con IA / ai-review (pull_request) Successful in 1m58s
Replica en este repositorio la revision automatica que ya corre en
prode_app: al abrir, reabrir o actualizar un pull request, un modelo lee el
diff completo y publica comentarios pegados a cada linea mas un resumen,
firmados por el usuario ai-bot.

El modelo es gratuito y cada revision cuesta dos pedidos, porque manda todos
los archivos juntos en lugar de uno por archivo.

Los secretos se leen de Infisical al arrancar el job, asi que en el
repositorio solo quedan las credenciales de la identidad de maquina.

El prompt esta escrito sobre este proyecto en particular: turnos que se
pisan, husos horarios, autorizacion distinta para admin, jefe y cliente,
magic links tratados como credenciales, migraciones que acompañen a
schema.prisma y datos personales que no terminen en los registros.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 18:55:10 -03:00
Beldor 0792ac3767 Add jefe mecánico to client booking flow
Deploy / deploy (push) Successful in 6m52s
Cliente now picks a jefe mecánico after choosing the service so the
calendar shows that specific jefe's availability. Each jefe has its own
configurable parallel slot capacity (replacing the global SLOTS_PARALELOS
= 5). Admins manage jefes from /admin/jefes; jefes log in to /jefe to
see their daily agenda.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-29 22:28:44 -03:00
Beldor f79e5ce75c Lighten admin page titles and loading text over background image
Deploy / deploy (push) Successful in 4m2s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 17:24:10 -03:00
Beldor a1eedcf8f5 Add dark blur background to admin nav on mobile
Deploy / deploy (push) Successful in 4m0s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 17:16:07 -03:00
Beldor 7cc6456f97 Remove non-functional headers; lighten text on background image
Deploy / deploy (push) Successful in 4m2s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 16:59:02 -03:00
Beldor 457db923d2 feat: agregar logo Taller MG como fondo y favicon
Deploy / deploy (push) Successful in 4m35s
- Background fijo con tallermg.jpeg + overlay rgba(0,0,0,0.35) en globals.css
- Favicon actualizado usando src/app/icon.jpeg (convención Next.js App Router)
- Eliminado bg-gray-50 de layouts para que el fondo sea visible
- Título del sitio actualizado a "Taller MG"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-24 14:54:02 -03:00
Beldor cc299cdc11 fix: validar km máximo 1M y mostrar error si falla la reserva
Deploy / deploy (push) Successful in 4m39s
Si alguien ingresaba un km fuera del rango integer de Postgres la app
crasheaba silenciosamente — el cliente no veía ningún mensaje. Se agrega
validación de rango (1–1.000.000) en frontend y backend, y se muestra
el error de la API debajo del botón de confirmar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 11:08:11 -03:00
Beldor 0b769805f9 feat: validar que kilometraje sea número entero positivo
Deploy / deploy (push) Successful in 4m1s
Muestra error inline si el cliente ingresa letras u otros caracteres,
y bloquea el botón de confirmar hasta que el valor sea válido.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 23:52:31 -03:00
Beldor 221aace9f1 feat: agregar IKA-Renault con modelos Torino, Rambler, Jeep, Carabela
Deploy / deploy (push) Successful in 3m59s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 23:47:51 -03:00
Beldor 0497e936a4 feat: calendario mensual para reservar turnos
Deploy / deploy (push) Successful in 4m3s
- Reemplaza lista de slots por calendario cuadrado mensual
- Sábados y domingos grisados, días sin slots deshabilitados
- Click en día hábil abre modal con horarios disponibles
- Slot dot indicator en días con turnos disponibles
- Amplía búsqueda a 60 días / 500 slots para cubrir todo el mes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 23:33:29 -03:00
Beldor 4a6023f9f3 feat: historial muestra todos los turnos del auto con estado, km y comentario
Deploy / deploy (push) Successful in 3m52s
Reemplaza HistorialServicio por Turno en ambas APIs y frontends (cliente y admin).
Muestra: servicio, fecha, horario, estado (badge), km al ingreso, observaciones del jefe.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 23:19:53 -03:00
Beldor 112f4a07bb fix: quitar header azul de las tarjetas del historial
Deploy / deploy (push) Successful in 3m58s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 23:12:32 -03:00
Beldor 7b3ce1ab82 fix: google sheets append con A1 + INSERT_ROWS para evitar desplazamiento de columna
Deploy / deploy (push) Successful in 4m2s
El rango A:N confundía a la API cuando había datos manuales en K/L (GASTOS/VARIOS),
haciendo que la nueva fila empezara en columna K en vez de A.
INSERT_ROWS siempre inserta fila nueva independiente del estado del sheet.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 22:53:52 -03:00
Beldor 8167f6c901 fix: scheduling en UTC explícito para Argentina (UTC-3), sin depender del TZ del container
Deploy / deploy (push) Successful in 3m57s
getHours() en Docker devuelve UTC → slots aparecían 3hs antes (5:30 en vez de 8:30).
Ahora usa getUTCHours/getUTCMinutes + offset -180min en todas las comparaciones.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 22:42:43 -03:00
Beldor e0779bf2d4 fix: agregar GMAIL, Google Sheets y JWT al environment del docker-compose
Deploy / deploy (push) Successful in 3m55s
Variables faltantes causaban EAUTH en el login del cliente

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 22:30:57 -03:00
Beldor d6c16cb30e ci: fix deploy — git fetch + reset --hard origin/main antes del rebuild
Deploy / deploy (push) Successful in 6m49s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 22:18:56 -03:00
Beldor 146ef98563 ci: usar label 'taller' en runner para evitar conflicto con runner de inventario
Deploy / deploy (push) Failing after 0s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 22:04:51 -03:00
Beldor c2b0e39b06 feat: comentario al completar turno, Google Sheets corregido, scheduling 8:30-17 5 slots, mejoras responsive
Deploy / deploy (push) Failing after 12m35s
- Agrega campo comentario opcional al marcar turno COMPLETADO (textarea en UI, guardado en DB, escrito en col N del sheet)
- Corrige mapeo Google Sheets: email→I, telefono→J, vacíos en K-M, comentario→N
- Actualiza scheduling: inicio 8:30, fin 17:00, máx 5 turnos simultáneos
- entrypoint.sh: migrate deploy → db push para aplicar cambios de schema automáticamente
- Historial cliente: tarjetas visuales con header, fecha y observaciones destacadas
- Dashboard/turnos cliente: mejoras responsive mobile
- Fix display duración: 0.5 hs → "30 min"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 21:57:27 -03:00
Beldor e556e2f16b feat: integración Google Sheets al completar turno
Deploy / deploy (push) Failing after 11m51s
Cuando el admin marca un turno como COMPLETADO escribe una fila
en el sheet con patente, km, auto, cliente, fecha y trabajo.
Auth via service account con JWT nativo (sin googleapis).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 17:38:14 -03:00
Beldor 4d259558c6 feat: agrega km y chasis al turno/auto, combobox de marcas y modelos
Deploy / deploy (push) Failing after 13m41s
- Turno.kilometros (requerido al reservar)
- Auto.nroChasis (opcional)
- Combobox con 60 marcas mundiales y modelos precargados
- Modelo se habilita al seleccionar marca

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-22 16:01:19 -03:00
Beldor b6705239a1 fix(cliente): cargar servicios desde endpoint de cliente en vez de admin
Deploy / deploy (push) Failing after 33h14m30s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 23:20:25 -03:00
Beldor 3724669ace feat(admin): buscar clientes por patente en lugar de email
Deploy / deploy (push) Failing after 13m38s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 22:51:05 -03:00
Beldor 4554543260 fix: migrate registro email from Resend to Nodemailer+Gmail
Deploy / deploy (push) Successful in 3m6s
2026-06-19 14:55:44 -03:00
Beldor bf43c54126 ci: retry after fixing file permissions
Deploy / deploy (push) Successful in 5m16s
2026-06-19 14:38:11 -03:00
Beldor d69ac3f084 ci: add git reset --hard to ensure clean working tree on deploy
Deploy / deploy (push) Failing after 1s
2026-06-19 14:37:23 -03:00
Beldor 1e5b8911e7 ci: retry after git repo reinit
Deploy / deploy (push) Failing after 28s
2026-06-19 14:35:42 -03:00
Beldor 05dd9a4847 ci: retry after fixing git permissions
Deploy / deploy (push) Failing after 1s
2026-06-19 14:34:45 -03:00
Beldor 9253f00062 ci: fix git remote to use Gitea IP
Deploy / deploy (push) Failing after 0s
2026-06-19 14:33:27 -03:00
Beldor 50a41ce0dc fix: add resend dependency to package.json
Deploy / deploy (push) Failing after 0s
2026-06-19 14:32:27 -03:00
Beldor 346e15a6e1 ci: test native runner
Deploy / deploy (push) Failing after 0s
2026-06-19 14:25:49 -03:00
Beldor a5b684efe6 ci: fix safe.directory for git pull in runner
Deploy / deploy (push) Failing after 1s
2026-06-19 14:21:04 -03:00
Beldor 5f190b9c50 ci: add Gitea Actions deploy workflow
Deploy / deploy (push) Failing after 0s
2026-06-19 13:59:19 -03:00
Beldor 011cdb0323 feat: migrar emails de Resend a Nodemailer + Gmail SMTP
Reemplaza Resend por nodemailer con Gmail SMTP. El to: ahora usa
el email real del cliente en lugar del hardcodeado de sandbox.
Variables de entorno: GMAIL_USER y GMAIL_APP_PASSWORD.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 18:03:13 -03:00
Beldor 4db113b674 fix: redirigir emails a jpbeldomenico@gmail.com para testing con sandbox Resend
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 17:22:24 -03:00
Beldor acf4b7f053 fix: usar dominio sandbox de Resend para emails
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 17:14:19 -03:00
Beldor 4e993a95c4 feat: email de bienvenida al registrarse + fix estilos Input
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 17:05:01 -03:00
Beldor d9d2e7d429 Redirect home page to /cliente
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 15:37:52 -03:00
Beldor 080c488e3b fix: use PrismaPg adapter in seed.ts for Prisma 7 compatibility
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:23:28 -03:00
Beldor 3028bde671 fix: switch to full node_modules in runner to resolve prisma CLI dependencies
Removes standalone build to allow prisma CLI to run migrations at startup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:19:09 -03:00
Beldor fb92021bf6 fix: invoke prisma via node directly to preserve __dirname for WASM resolution
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:15:31 -03:00
Beldor 9a3ef4efc3 fix: simplify prisma.config.ts and exclude it from Next.js tsconfig
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:12:03 -03:00
Beldor 1339f42e69 fix: copy prisma.config.ts to runner stage and auto-run migrations on startup
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:09:25 -03:00
Beldor 816530724d fix: add public directory required by Dockerfile COPY step
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:04:15 -03:00
Beldor f28568906a fix: wrap useSearchParams in Suspense boundaries for Next.js 14 static build
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 13:02:00 -03:00
Beldor bb1785c737 fix: add force-dynamic to pages using useSearchParams for Next.js 14 build
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 12:59:33 -03:00
Beldor 600f80ff7f fix: remove unused COOKIE constant to fix ESLint build error
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 12:57:48 -03:00