🤖 gestionar-comentarios-pr-github

feat: nuevo dashboard de seguimiento nutricional v2

● Changes requested
MC miguel-castilla quiere hacer merge de feat/pet-dashboard-v2 main · Abierto hace 2 días · 📁 8 archivos cambiados · +312 líneas −89 líneas
6 Comentarios totales
4 Hilos inline
2 Conversación
1 Changes requested
4/6 Resueltos
2 Pendientes
~/nutripaw-web (feat/pet-dashboard-v2)
$ python3 scripts/fetch_comments.py | python3 -m json.tool # Verificando autenticación gh CLI... gh auth status: Logged in to github.com as cultivaia-bot (oauth_token) Rama actual: feat/pet-dashboard-v2 → PR #47 (nutripaw-org/nutripaw-web)   # Ejecutando GraphQL queries (paginadas)... Comentarios de conversación: 2 encontrados Reviews: 1 encontrada (state: CHANGES_REQUESTED) Hilos de revisión inline: 4 encontrados (1 resuelto, 3 pendientes)   # Output JSON completo guardado en pr_comments.json 7 elementos procesados — mostrando resumen numerado abajo...

Paso 1 — Comentarios detectados y numerados

Hilos de revisión inline 4 INLINE THREADS
#1
Thread inline RESUELTO elena-torres hace 1 día
src/components/PetDashboard/NutritionChart.tsx línea 47

El hook usePetNutrition se llama en cada render sin memoizar. Esto causa recalculaciones innecesarias cada vez que el padre re-renderiza. Envuelve el valor de retorno en useMemo.

✅ Fix aplicado — useMemo añadido con deps [petId, dateRange]
#2
Thread inline RESUELTO elena-torres hace 1 día
src/api/nutrition.ts línea 23

La función fetchNutritionData no maneja el caso de error del fetch. Si la API devuelve 500, el componente se queda cargando indefinidamente. Añade try/catch y propaga el error.

23const data = await fetch(`/api/pets/${petId}/nutrition`);
24return data.json();
23+const res = await fetch(`/api/pets/${petId}/nutrition`);
24+if (!res.ok) throw new Error(`API error: ${res.status}`);
25+return res.json();
✅ Fix aplicado — error handling añadido con throw Error
#3
Thread inline PENDIENTE elena-torres hace 18 horas
src/components/PetDashboard/WeightTracker.tsx líneas 88-95

El componente WeightTracker hace su propia llamada a la API en lugar de usar el contexto PetDataContext que ya tenemos. Esto duplica requests al backend. Refactoriza para consumir el contexto.

86 export function WeightTracker({ petId }: Props) {
87 const [weights, setWeights] = useState([]);
88 useEffect(() => { fetch(`/api/pets/${petId}/weights`).then(...) }, [petId]);
87+ const { petData } = usePetDataContext();
88+ const weights = petData?.weightHistory ?? [];
⚠️

Acción requerida: Reemplazar llamada directa a API por usePetDataContext() y eliminar el useEffect de fetch.

#4
Thread inline PENDIENTE carlos-dev hace 12 horas
src/pages/dashboard/[petId].tsx línea 12

Falta la propiedad aria-label en el botón de "Ver historial completo". Esto rompe accesibilidad para usuarios con lector de pantalla. Es un blocker de producción.

12 <button onClick={handleViewHistory}>Ver historial completo</button>
12+ <button onClick={handleViewHistory} aria-label="Ver historial nutricional completo de la mascota">
13+ Ver historial completo
14+ </button>

Acción requerida: Añadir aria-label descriptivo al botón. Blocker de accesibilidad.

Comentarios de conversación 2 CONVERSACIÓN
#5
Conversación RESUELTO elena-torres hace 2 días

Buen trabajo en general. ¿Podéis añadir tests unitarios para NutritionChart? El coverage actual de ese componente es 0%. Con la lógica de cálculo que tiene, necesitamos al menos los casos edge de mascota sin datos y rango de fechas vacío.

✅ Resuelto — Tests añadidos en NutritionChart.test.tsx (coverage 78%)
#6
Conversación INFORMATIVO product-owner-ana hace 1 día

¡El nuevo diseño del dashboard se ve muy bien! Los clientes beta de la semana pasada preguntaron específicamente por poder exportar el PDF del historial nutricional. ¿Lo ponemos en el roadmap para el siguiente sprint? No es blocker para este PR.

💬 Comentario informativo — no requiere cambios de código en este PR.
Review formal 1 CHANGES REQUESTED
🚫
CHANGES_REQUESTED — elena-torres
Enviado hace 1 día

He revisado el PR completo. Los cambios principales son sólidos, pero hay 3 problemas que deben resolverse antes del merge:

  1. Memoización del hook usePetNutrition (ver hilo #1) — ✅ Resuelto
  2. Error handling en fetchNutritionData (ver hilo #2) — ✅ Resuelto
  3. Duplicación de requests en WeightTracker (ver hilo #3) — ⏳ Pendiente

🤖 Paso 2 — Selección de comentarios a aplicar
He encontrado 6 comentarios en el PR #47. Resumen:
  • #1 — useMemo en usePetNutrition [ya resuelto]
  • #2 — Error handling en fetchNutritionData [ya resuelto]
  • #3 — Refactorizar WeightTracker para usar contexto [PENDIENTE]
  • #4 — Añadir aria-label al botón (accesibilidad) [PENDIENTE]
  • #5 — Tests para NutritionChart [ya resuelto]
  • #6 — Sugerencia de exportar PDF (no blocker, informativo)

¿Qué comentarios quieres que aplique? Escribe los números separados por comas (ej: 3,4), o todos:
Tu respuesta > 3, 4
✅ Aplicando fixes para comentarios #3 y #4...
⚙️ Paso 3 — Aplicando correcciones seleccionadas
# Fix #3 — WeightTracker: reemplazar fetch directo por contexto Editando: src/components/PetDashboard/WeightTracker.tsx - Eliminado: useState([]) + useEffect fetch + Añadido: const { petData } = usePetDataContext() + Añadido: const weights = petData?.weightHistory ?? []   # Fix #4 — Dashboard: aria-label en botón de historial Editando: src/pages/dashboard/[petId].tsx + Añadido: aria-label="Ver historial nutricional completo de la mascota"   $ git add src/components/PetDashboard/WeightTracker.tsx src/pages/dashboard/[petId].tsx $ git commit -m "fix: address PR #47 review comments #3 and #4" [feat/pet-dashboard-v2 a3f9d21] fix: address PR #47 review comments #3 and #4 2 files changed, 6 insertions(+), 4 deletions(-)

Resumen final

Comentarios resueltos 6 / 6 100% completado
Archivos modificados 2 WeightTracker.tsx, [petId].tsx
Commits creados 1 a3f9d21
Estado del PR Listo Re-request review a elena-torres
🟢

PR listo para re-revisión

Todos los comentarios de elena-torres han sido resueltos. Se recomienda hacer "Re-request review" en GitHub para notificar a la revisora y proceder con el merge a main.

Generado por gestionar-comentarios-pr-github · CULTIVA IA Arsenal · PR #47 nutripaw-org/nutripaw-web