fix models routes
Browse files- app/requirements.txt +6 -0
- app/templates/asistencia.html +2 -2
- app/templates/base.html +0 -2
- app/templates/tutoria.html +13 -12
app/requirements.txt
CHANGED
|
@@ -11,3 +11,9 @@ markdown
|
|
| 11 |
resend
|
| 12 |
datasets
|
| 13 |
huggingface_hub
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
resend
|
| 12 |
datasets
|
| 13 |
huggingface_hub
|
| 14 |
+
mediapipe
|
| 15 |
+
opencv-python-headless
|
| 16 |
+
face_recognition
|
| 17 |
+
numpy
|
| 18 |
+
cmake
|
| 19 |
+
dlib
|
app/templates/asistencia.html
CHANGED
|
@@ -63,8 +63,8 @@
|
|
| 63 |
// Cargar modelos y arrancar
|
| 64 |
async function init() {
|
| 65 |
try {
|
| 66 |
-
//
|
| 67 |
-
const MODEL_URL = '
|
| 68 |
await Promise.all([
|
| 69 |
faceapi.nets.tinyFaceDetector.loadFromUri(MODEL_URL),
|
| 70 |
faceapi.nets.faceLandmark68Net.loadFromUri(MODEL_URL),
|
|
|
|
| 63 |
// Cargar modelos y arrancar
|
| 64 |
async function init() {
|
| 65 |
try {
|
| 66 |
+
// Usar modelos locales con path dinámico de Flask
|
| 67 |
+
const MODEL_URL = "{{ url_for('static', filename='models') }}";
|
| 68 |
await Promise.all([
|
| 69 |
faceapi.nets.tinyFaceDetector.loadFromUri(MODEL_URL),
|
| 70 |
faceapi.nets.faceLandmark68Net.loadFromUri(MODEL_URL),
|
app/templates/base.html
CHANGED
|
@@ -46,8 +46,6 @@
|
|
| 46 |
<div class="sidebar-links">
|
| 47 |
<a href="/" class="nav-item"><i class="fas fa-home"></i> INICIO</a>
|
| 48 |
<a href="/tutoria" class="nav-item"><i class="fas fa-book"></i> TUTORÍA</a>
|
| 49 |
-
<a href="/prestamos" class="nav-item"><i class="fas fa-tools"></i> PRÉSTAMOS</a>
|
| 50 |
-
<a href="/miembros" class="nav-item"><i class="fas fa-users"></i> MIEMBROS</a>
|
| 51 |
|
| 52 |
{% if current_user.is_authenticated %}
|
| 53 |
<div style="margin-top: auto; border-top: 1px solid rgba(255,255,255,0.1); padding-top: 1rem;">
|
|
|
|
| 46 |
<div class="sidebar-links">
|
| 47 |
<a href="/" class="nav-item"><i class="fas fa-home"></i> INICIO</a>
|
| 48 |
<a href="/tutoria" class="nav-item"><i class="fas fa-book"></i> TUTORÍA</a>
|
|
|
|
|
|
|
| 49 |
|
| 50 |
{% if current_user.is_authenticated %}
|
| 51 |
<div style="margin-top: auto; border-top: 1px solid rgba(255,255,255,0.1); padding-top: 1rem;">
|
app/templates/tutoria.html
CHANGED
|
@@ -29,11 +29,19 @@
|
|
| 29 |
<button class="btn glass">Ver Guía</button>
|
| 30 |
</li>
|
| 31 |
<li class="repo-item glass">
|
| 32 |
-
<div>
|
| 33 |
<h3>🛠 Solicitud de Herramientas</h3>
|
| 34 |
<p class="text-dim">Proceso para pedir prestada una herramienta.</p>
|
| 35 |
</div>
|
| 36 |
-
<button class="btn glass">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
</li>
|
| 38 |
</ul>
|
| 39 |
</div>
|
|
@@ -41,18 +49,11 @@
|
|
| 41 |
<div id="content-maestros" class="tab-content" style="display: none;">
|
| 42 |
<ul style="list-style: none; padding: 0;">
|
| 43 |
<li class="repo-item glass">
|
| 44 |
-
<div>
|
| 45 |
-
<h3>📋 Gestión de Asistencia</h3>
|
| 46 |
-
<p class="text-dim">Cómo usar el sistema de reconocimiento facial.</p>
|
| 47 |
-
</div>
|
| 48 |
-
<button class="btn glass">Ver Guía</button>
|
| 49 |
-
</li>
|
| 50 |
-
<li class="repo-item glass">
|
| 51 |
-
<div>
|
| 52 |
<h3>📦 Aprobación de Préstamos</h3>
|
| 53 |
-
<p class="text-dim">
|
| 54 |
</div>
|
| 55 |
-
<button class="btn glass">
|
| 56 |
</li>
|
| 57 |
</ul>
|
| 58 |
</div>
|
|
|
|
| 29 |
<button class="btn glass">Ver Guía</button>
|
| 30 |
</li>
|
| 31 |
<li class="repo-item glass">
|
| 32 |
+
<div style="flex: 1;">
|
| 33 |
<h3>🛠 Solicitud de Herramientas</h3>
|
| 34 |
<p class="text-dim">Proceso para pedir prestada una herramienta.</p>
|
| 35 |
</div>
|
| 36 |
+
<button onclick="window.location.href='/prestamos'" class="btn glass">Ir a Préstamos</button>
|
| 37 |
+
</li>
|
| 38 |
+
<li class="repo-item glass">
|
| 39 |
+
<div style="flex: 1;">
|
| 40 |
+
<h3>🤖 Asistencia (IA)</h3>
|
| 41 |
+
<p class="text-dim">Registra tu asistencia usando reconocimiento facial.</p>
|
| 42 |
+
</div>
|
| 43 |
+
<button onclick="window.location.href='/asistencia'" class="btn glass"
|
| 44 |
+
style="background: rgba(16, 185, 129, 0.2); border-color: #10b981;">Registrar</button>
|
| 45 |
</li>
|
| 46 |
</ul>
|
| 47 |
</div>
|
|
|
|
| 49 |
<div id="content-maestros" class="tab-content" style="display: none;">
|
| 50 |
<ul style="list-style: none; padding: 0;">
|
| 51 |
<li class="repo-item glass">
|
| 52 |
+
<div style="flex: 1;">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
<h3>📦 Aprobación de Préstamos</h3>
|
| 54 |
+
<p class="text-dim">Administrar solicitudes de equipo de los miembros.</p>
|
| 55 |
</div>
|
| 56 |
+
<button onclick="window.location.href='/prestamos'" class="btn glass">Administrar</button>
|
| 57 |
</li>
|
| 58 |
</ul>
|
| 59 |
</div>
|