Repository navigation
[Proyecto I] #323
Description
Activity
Verificación Automática — Proyecto I 🤖
Repositorio analizado:
https://github.com/Alberto67067/Proyecto-Programming-20261. 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.❌ No se encontraron archivos
.pyen el repositorio.4. Punto de Entrada
⚠️ No se encontró un punto de entrada claro (main.py,app.py, etc.).5. Ejecución
⚠️ Sin punto de entrada identificado — no se intentó ejecutar.Resumen
- ✅ Repositorio accesible
- ❌ report.md con ≥2000 palabras
- ❌ Archivos Python
- ❌ Configuración de dependencias
- ❌ Punto de entrada
- ❌ Ejecución
1/6 verificaciones pasadas.
Verificación automática — los resultados son orientativos. El profesor revisará en detalle.
🔍 Revisión de Código — Claude Code
Repositorio: https://github.com/Alberto67067/Proyecto-Programming-2026
Qué hace tu proyecto
Construiste un sistema de gestión para una barra móvil de eventos: un inventario de botellas e insumos con control de capacidad, usuarios con roles y contraseñas hasheadas, y un calendario de eventos que detecta dos conflictos de negocio reales — que no haya stock suficiente para un evento, y que dos eventos se solapen en fechas. Cuando reservas recursos para un evento, se restan de verdad del inventario. Es un proyecto más completo de lo que tú mismo reconoces en el informe.
Ejecución
Importante primero: la verificación automática dijo "0 archivos Python" y eso es un falso negativo. Tu código está dentro de
Proyecto2.rar, y el bot no descomprime.rar, por eso "no vio nada". Lo descomprimí y ejecuté todo de verdad. Dos detalles de entrega:- Tu punto de entrada se llama literalmente
python main.py(con espacio), así que se arranca conpython "python main.py". Casi seguro copiaste el comando de terminal como nombre del archivo sin querer. - Para la próxima, sube los
.pydirectamente al repo en vez de un.rar: así el corrector automático los ve y se puede comparar tu progreso.
Ya ejecutando:
py_compilede los 6 módulos pasa, la app de consola arranca, el loginadmin/admin123funciona (probé con terminal real, el hash SHA-256 coincide), y corrí la lógica de negocio con datos reales — todo respondió bien.Lo que está bien
- Modularización de verdad: separaste modelo (
Inventario_Obj.py,Recurso), lógica (Inventario.py,Almacen), capa interactiva (AlmacenCreate.py) y autenticación (MenuInic.py). Eso está por encima de la media de primer año. - Control de capacidad correcto: probé añadir un recurso que no cabía (30 manteles × 2 de espacio = 60 en un almacén con 50 libres) y lo rechazó con el mensaje justo.
- Detección de solapamiento de fechas funciona: creé "Boda" (1–2 ago) y luego "Fiesta" (1 ago) → detectó el conflicto y la bloqueó; "Cumple" en septiembre → sin conflicto, creada. Tu fórmula
not (fin1 < inicio2 or fin2 < inicio1)es la correcta. - La reserva resta del inventario de verdad: asigné 10 Vodka a un evento y el stock bajó de 30 a 20. Vi además que en tu calendario de prueba (
uno_...json) ya había un evento con Vodka reservado — o sea, ejercitaste el ciclo completo. - Buenas decisiones para principiante:
@dataclass, type hints,to_dict/from_dictpara guardar en JSON, y contraseñas hasheadas con SHA-256 (no en texto plano — muy bien).
Qué mejorar
- Valida las fechas al crear un evento. Probé crear un evento con
fecha_inicio="fecha-basura"y se creó sin protestar. Y hay un efecto peligroso: cuando la fecha es inválida, tuobtener_periodolanza un error, perohay_conflicto_conlo atrapa con unexcept:vacío y devuelveFalse— así que un evento con fecha inválida nunca choca con nadie y se cuela silenciosamente. Verifica el formato (datetime.fromisoformat) antes de aceptar el evento. - Cuidado con los
except:desnudos (los tienes en varios sitios). Atrapan todo y esconden bugs — justo lo que pasó con las fechas. Usaexcept ValueError:cuando sepas qué esperas. CATEGORIASyGRUPOsonset(Inventario_Obj.py:7), pero luego los indexas por número de menú conlist(CATEGORIAS)[opcion-1]. Unsetno garantiza orden, así que el número que ve el usuario puede no mapear a la categoría correcta. Cámbialos atupleolist.- Poda la lógica duplicada: tienes
reservar_recursos_para_evento,reservar_recursos_directoyasignar_recursos_automaticamentehaciendo cosas parecidas (los encabezados dicen "VERSIÓN CORREGIDA" en cada archivo — se nota la iteración). Quédate con una y borra el resto; el código queda más claro y más fácil de defender. - Detalle del modelo: tu
Almacen._usarlibera capacidad al consumir stock, así que la "capacidad disponible" sube cuando reservas. Piensa si reservar para un evento debería o no vaciar el almacén físico — hoy queda un poco inconsistente.
Sobre el informe
Tu informe es honesto y no exagera nada — más bien te vendes de menos. Describe bien el dominio, los dos conflictos (stock y fechas) y da las credenciales de prueba correctas. No encontré ninguna discrepancia entre lo que dices y lo que hace el código. Dos notas: las carpetas
clientes/yreportes/se crean pero quedan vacías (features que quedaron a medias, y el informe correctamente no las reclama), y el texto es corto — para la próxima, añade un par de ejemplos de ejecución paso a paso, que le harían justicia a un proyecto que es bastante más que "sencillo". Buen trabajo dadas las condiciones que describes.- Tu punto de entrada se llama literalmente
- Hola profe, muchas gracias por su tiempo y por revisar mi proyecto usted personalmente, lo tuve que subir en un .rar porque por archivos me estaba dando algún error, no pude saber cual, las cosas que debo mejirar ouedo editarlas normal en el repositorio que ya subi o debo crear otro? Y no me queda claro si el proyecto está aprobado o no? Muchas gracias. El mié, 15 de jul de 2026, 09:32, Alejandro Piad ***@***.***> escribió:…*apiad* left a comment (matcom/programming#323) <#323 (comment)> 🔍 Revisión de Código — Claude Code Repositorio: https://github.com/Alberto67067/Proyecto-Programming-2026 Qué hace tu proyecto Construiste un sistema de gestión para una *barra móvil de eventos*: un inventario de botellas e insumos con control de capacidad, usuarios con roles y contraseñas hasheadas, y un calendario de eventos que detecta dos conflictos de negocio reales — que no haya stock suficiente para un evento, y que dos eventos se solapen en fechas. Cuando reservas recursos para un evento, se restan de verdad del inventario. Es un proyecto *más completo de lo que tú mismo reconoces en el informe*. Ejecución Importante primero: *la verificación automática dijo "0 archivos Python" y eso es un falso negativo.* Tu código está dentro de Proyecto2.rar, y el bot no descomprime .rar, por eso "no vio nada". Lo descomprimí y ejecuté todo de verdad. Dos detalles de entrega: - Tu punto de entrada se llama literalmente python main.py (con espacio), así que se arranca con python "python main.py". Casi seguro copiaste el comando de terminal como nombre del archivo sin querer. - Para la próxima, *sube los .py directamente al repo* en vez de un .rar: así el corrector automático los ve y se puede comparar tu progreso. Ya ejecutando: py_compile de los 6 módulos pasa, la app de consola arranca, el login admin/admin123 funciona (probé con terminal real, el hash SHA-256 coincide), y corrí la lógica de negocio con datos reales — todo respondió bien. Lo que está bien - *Modularización de verdad*: separaste modelo (Inventario_Obj.py, Recurso), lógica (Inventario.py, Almacen), capa interactiva ( AlmacenCreate.py) y autenticación (MenuInic.py). Eso está por encima de la media de primer año. - *Control de capacidad correcto*: probé añadir un recurso que no cabía (30 manteles × 2 de espacio = 60 en un almacén con 50 libres) y lo *rechazó* con el mensaje justo. - *Detección de solapamiento de fechas funciona*: creé "Boda" (1–2 ago) y luego "Fiesta" (1 ago) → detectó el conflicto y la bloqueó; "Cumple" en septiembre → sin conflicto, creada. Tu fórmula not (fin1 < inicio2 or fin2 < inicio1) es la correcta. - *La reserva resta del inventario de verdad*: asigné 10 Vodka a un evento y el stock bajó de 30 a 20. Vi además que en tu calendario de prueba (uno_...json) ya había un evento con Vodka reservado — o sea, ejercitaste el ciclo completo. - Buenas decisiones para principiante: @DataClass, type hints, to_dict/ from_dict para guardar en JSON, y *contraseñas hasheadas con SHA-256* (no en texto plano — muy bien). Qué mejorar - *Valida las fechas al crear un evento.* Probé crear un evento con fecha_inicio="fecha-basura" y *se creó sin protestar*. Y hay un efecto peligroso: cuando la fecha es inválida, tu obtener_periodo lanza un error, pero hay_conflicto_con lo atrapa con un except: vacío y devuelve False — así que *un evento con fecha inválida nunca choca con nadie* y se cuela silenciosamente. Verifica el formato ( datetime.fromisoformat) antes de aceptar el evento. - *Cuidado con los except: desnudos* (los tienes en varios sitios). Atrapan *todo* y esconden bugs — justo lo que pasó con las fechas. Usa except ValueError: cuando sepas qué esperas. - *CATEGORIAS y GRUPO son set* (Inventario_Obj.py:7), pero luego los indexas por número de menú con list(CATEGORIAS)[opcion-1]. Un set *no garantiza orden*, así que el número que ve el usuario puede no mapear a la categoría correcta. Cámbialos a tuple o list. - *Poda la lógica duplicada*: tienes reservar_recursos_para_evento, reservar_recursos_directo y asignar_recursos_automaticamente haciendo cosas parecidas (los encabezados dicen "VERSIÓN CORREGIDA" en cada archivo — se nota la iteración). Quédate con una y borra el resto; el código queda más claro y más fácil de defender. - Detalle del modelo: tu Almacen._usar *libera capacidad* al consumir stock, así que la "capacidad disponible" sube cuando reservas. Piensa si reservar para un evento debería o no vaciar el almacén físico — hoy queda un poco inconsistente. Sobre el informe Tu informe es *honesto y no exagera nada* — más bien te vendes de menos. Describe bien el dominio, los dos conflictos (stock y fechas) y da las credenciales de prueba correctas. No encontré ninguna discrepancia entre lo que dices y lo que hace el código. Dos notas: las carpetas clientes/ y reportes/ se crean pero quedan vacías (features que quedaron a medias, y el informe correctamente no las reclama), y el texto es corto — para la próxima, añade un par de ejemplos de ejecución paso a paso, que le harían justicia a un proyecto que es bastante más que "sencillo". Buen trabajo dadas las condiciones que describes. — Reply to this email directly, view it on GitHub <#323?email_source=notifications&email_token=BMQDHWVOTW7R7HDFXTOMMRL5E6BU7A5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJYGEYTINZQGQ2KM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#issuecomment-4981147044>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/BMQDHWUC3VTQNYVPFH42ID35E6BU7AVCNFSNUABFKJSXA33TNF2G64TZHM2DGNZRHA4DANRUHNEXG43VMU5TINZVGYZTKMZZGY22C5QC> . Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS <https://github.com/notifications/mobile/ios/BMQDHWUYXCDV3DK72UDKB5L5E6BU7A5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJYGEYTINZQGQ2KM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KUZTPN52GK4S7NFXXG> and Android <https://github.com/notifications/mobile/android/BMQDHWRQ4R5FYXI6AOZ6QT35E6BU7A5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTIOJYGEYTINZQGQ2KM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA>. Download it today! You are receiving this because you authored the thread.Message ID: ***@***.***>
**Nombre:**Alberto Martinez Machin
**Grupo:**c-122
**Repositorio:**https://github.com/Alberto67067/Proyecto-Programming-2026
Descripción
(Añadir una breve descripción de su proyecto).