You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 setno 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._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/ 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.
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:
***@***.***>
Activity
github-actions commentedon Jun 27, 2026
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
pyproject.toml.requirements.txt.❌ No se encontraron archivos
.pyen el repositorio.4. Punto de Entrada
main.py,app.py, etc.).5. Ejecución
Resumen
1/6 verificaciones pasadas.
Verificación automática — los resultados son orientativos. El profesor revisará en detalle.
apiad commentedon Jul 15, 2026
🔍 Revisión de Código — Claude Code
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: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..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
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.not (fin1 < inicio2 or fin2 < inicio1)es la correcta.uno_...json) ya había un evento con Vodka reservado — o sea, ejercitaste el ciclo completo.@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
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.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.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.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.Alberto67067 commentedon Jul 17, 2026