Repository navigation
[Proyecto I] #329
Description
Activity
Verificación Automática — Proyecto I 🤖
Repositorio analizado:
https://github.com/kapibaradeioi/proyect1. Repositorio
✅ El repositorio es accesible y fue clonado correctamente.
2. Informe (
report.md)❌ No se encontró
report.mden el repositorio.3. Proyecto Python
⚠️ Sinpyproject.toml.
⚠️ Sinrequirements.txt.Archivos Python (12, 2,009 líneas en total):
main.pylogica/cargar_citas_logica.pylogica/ver_citas_logica.pylogica/tiempo_eventos.pylogica/crear_cita_logica.pylogica/eventos_logica.pyinterfaz/main_menu.pyinterfaz/registro.pyinterfaz/crear_cita.pyinterfaz/ver_citas.pyinterfaz/cargar_citas.pyinterfaz/eventos.py
4. Punto de Entrada
✅ Punto de entrada detectado:
main.py5. Ejecución
✅ El proyecto se ejecuta.
Traceback (most recent call last): File "/tmp/tmp5ct_nasr/repo/main.py", line 7, in <module> from kivy.app import App ModuleNotFoundError: No module named 'kivy'Resumen
- ✅ Repositorio accesible
- ❌ report.md con ≥2000 palabras
- ✅ Archivos Python
- ❌ Configuración de dependencias
- ✅ Punto de entrada
- ✅ Ejecución
4/6 verificaciones pasadas.
Verificación automática — los resultados son orientativos. El profesor revisará en detalle.
actualizado bot
🔍 Revisión de Código — Claude Code
Repositorio: https://github.com/kapibaradeioi/proyect
Qué hace tu proyecto
Construiste una aplicación gráfica (Kivy) para gestionar citas de cuidado de
mascotas: creas una cita, eliges servicios (Bañar, Peinar, Cortar pelo…), la app
descuenta los insumos del inventario, te deja programar fecha y hora en un
calendario navegable evitando choques de horario, e incluso te sugiere el hueco
libre más cercano. Es un proyecto ambicioso y bien estructurado — de los más
maduros que se ven en primer año.Ejecución
Tu proyecto corre. Como es una GUI (no consola), hice dos cosas: (1) ejecuté
toda tu lógica de negocio con los datos reales del repo, y (2) arranquémain.py
de verdad en modo headless. La app construyó su primera pantalla sin ningún error,
registró las 6 pantallas y guardó una cita en JSON. Además conduje el flujo de
"Crear Cita" a través de las pantallas reales: con campos vacíos o teléfono corto
muestra el aviso y no avanza; con datos válidos navega a Eventos y persiste la
cita. Todo el ciclo (crear → seleccionar evento → descontar inventario → programar
→ detectar colisión → buscar hueco) funcionó sin un soloTraceback.Lo que está bien
- Separación interfaz/lógica de verdad. Pude ejecutar todo
logica/sin tocar
un solo widget. Eso demuestra que la separación no es decorativa. Excelente. - Descuento de inventario correcto. Al activar "Bañar" verifiqué que bajó
Shampoo 3→2, Jabón 31→30, Esponja 27→26, Guantes 8→7, etc. Exacto. - Colisiones bien pensadas. "Cortar pelo" a las 9:10 sobre un "Bañar" de
9:00-9:30 se bloquea; a las 10:00 (sin solape) se permite. Detalle fino. - Robustez ante datos malos. JSON corrupto → devuelve lista vacía sin reventar.
Evento inexistente → lo maneja. Normalizas nombres (minúsculas/espacios) en casi
todas las comparaciones. Muy maduro. - Documentación. Docstrings en todos los módulos y casi todas las funciones.
Qué mejorar
requirements.txtno instala. La líneacleidna==3.11es un typo deidna,
y hace quepip install -r requirements.txtfalle entero (lo comprobé). Corrígelo
aidnay, ya que estás, poda las dependencias que no usas: en realidad sólo
necesitaskivyypillow. Unrequirements.txtlimpio es lo primero que
ejecuta quien clone tu repo.- Estado de sesión desincronizado al cargar una cita. Tienes dos variables
RUTA_JSONdistintas: una enlogica/crear_cita_logica.pyy otra en
logica/tiempo_eventos.py. Cuando cargas un JSON guardado,seleccionar_json_actual
sólo actualiza la primera. Verifiqué que, tras cargar, "Ver citas" apunta al
archivo cargado pero "Registro" sigue en la sesión anterior. Solución: que
seleccionar_json_actualfije ambas rutas (o mejor, guarda la sesión activa en
un solo lugar y que ambos módulos lo lean de ahí). Es el arreglo más importante. - Función duplicada.
validar_acciones_programadasestá escrita dos veces
idéntica enlogica/tiempo_eventos.py(líneas 339 y 372). La primera es código
muerto; bórrala. - Detalle menor: los mensajes de "faltan insumos" muestran los nombres en
minúscula porque_nombre_displaydevuelve la clave normalizada. Guarda también
el nombre original para mostrarlo bonito.
Sobre el informe
Tu
report.mdes honesto y fiel al código: describe la arquitectura real y nombra
funciones que existen con la firma correcta, sin inflar features. Dos matices: (1)
mencionajsons/temporales/como si viniera en el repo, pero esa carpeta se crea
al ejecutar; y (2) no menciona los dos defectos de arriba (elrequirements.txty
elRUTA_JSON). Nada grave — sólo omisiones.Buen trabajo, en serio. Tienes una base arquitectónica que muchos proyectos más
grandes envidiarían; arregla elrequirements.txty la sesión al cargar, y queda
redondo. 💪- Separación interfaz/lógica de verdad. Pude ejecutar todo
Liz Rachel Perez Almaguer
C111
https://github.com/kapibaradeioi/proyect
Descripción
Un lugar para atender a tus mascotas y agendar servicios de cuidado y limpieza