Revision_Autocritica - SamuelGJ0320/Topi-Ing-Soft_Nomy GitHub Wiki
Revisión Autocrítica del Proyecto en Django
• Usabilidad:
El proyecto cuenta con login, register y sistemas de recomendaciones lo cual personaliza la experiencia de usuario y cumple con los criterios de usabilidad. Con ayuda del formulario de autenticación se validan errores. El diseño trata de mostrar la mayor cantidad de información en una sola pestaña como es el home, donde muestra ubicación, restaurantes, información mínima y botones para registrarse e iniciar sesión. También se manejan redireccionamiento como en iniciar sesión para comentar y demás.
Para mejorar, no se esta manejando un mensaje de éxito cuando se inicia sesión o se registra, el sistema de recomendaciones podría tener un mensaje si no hay resultados relevantes (por ejemplo, si el texto no devuelve ningún restaurante). La búsqueda debería de manejar sugerencias o autocompletado
• Compatibilidad:
Es compatible con todos los navegadores modernos, ya que, no hay nada en el código que dependa de navegadores específicos, esto lo logramos con HTML y Django. No depende de sistemas operativos o entornos del cliente como Flash.
No se ha implementado diseño responsive, el campo de búsqueda no se adapta correctamente a pantallas pequeñas y no hay pruebas de compatibilidad con dispositivos móviles ni navegadores antiguos.
• Rendimiento:
El sistema no utiliza múltiples búsquedas innecesarias lo cual lo ha hecho muy rápido en tiempo de ejecución.
Cada vez que se hace una recomendación con IA, se generan embeddings. Esto puede ser costoso y lento si hay muchos usuarios muchos usuarios. No hay caché para resultados repetidos. Si dos usuarios buscan lo mismo, el embedding se calcula dos veces.
• Seguridad:
Riesgo | Análisis |
---|---|
SQL Injection | ✅ Se usa el ORM de Django (Restaurant.objects.all() ), lo que protege automáticamente. |
CSRF | ✅ Django tiene protección activa por defecto con {% csrf_token %} en los formularios HTML. |
Clickjacking | ✅ X_FRAME_OPTIONS = 'DENY' está en settings.py . |
XSS (Cross-Site Scripting) | ✅ Django escapa automáticamente contenido HTML en templates. |
Shell injection | ✅ No se usa os.system o subprocess . |
Password Security | ✅ Django encripta contraseñas y usa buenas prácticas. No se ven contraseñas guardadas manualmente. |
• Inversión de dependencias:
- La lógica de interfaz de usuario y la de negocio están muy acopladas, se podría separar la lógica del formulario en una clase aparte.
- La lógica de recomendación esta acoplada al view, esto impide hacer pruebas sin llamar a OpenAI. Es mejor crear una interfaz abstracta para las recomendaciones.