🔧 PROTOCOLO DE CREACION DE NUEVOS CLIENTES

Crear Nuevo Cliente - Paso a Paso Detallado

🏫 SITUACIÓN:

Nuevo colegio quiere contratar el servicio

📋 PASO 1: OBTENER INFORMACIÓN DEL CLIENTE

📞 "Necesito la siguiente información para activar su sistema:"

  1. Nombre oficial completo del colegio
    Ejemplo: "Colegio Santa María de los Ángeles"
  2. Nombre corto para el sistema (una palabra, sin espacios)
    Ejemplo: "santamaria"
    ⚠️ IMPORTANTE: Solo letras minúsculas, sin espacios, sin tildes
  3. Contraseña que desean usar
    Ejemplo: "sm2025"
    ⚠️ IMPORTANTE: Anotar exactamente como la dicen
  4. Datos de contacto (email, teléfono)

🔑 PASO 2: GENERAR HASH DE LA CONTRASEÑA

2.1 - Abrir el archivo app.py

2.2 - Buscar la sección de hashes

if __name__ == '__main__': print("=== GENERANDO HASHES PARA CONTRASEÑAS ===") print("=== COPIA ESTOS HASHES AL DICCIONARIO CLIENTES_CONFIG ===") # Inicializar archivos para ambos colegios for colegio in CLIENTES_CONFIG.keys():

2.3 - Agregar línea temporal

DESPUÉS de la línea print("=== GENERANDO HASHES PARA CONTRASEÑAS ===") y ANTES de print("=== COPIA ESTOS HASHES...")

AGREGAR:

print(f"Hash para '[CONTRASEÑA_CLIENTE]': {generar_hash_password('[CONTRASEÑA_CLIENTE]')}")
⚠️ REEMPLAZAR [CONTRASEÑA_CLIENTE] con la contraseña real del cliente

EJEMPLO:

print(f"Hash para 'sm2025': {generar_hash_password('sm2025')}")

2.4 - Guardar archivo

2.5 - Ejecutar aplicación

2.6 - Copiar el hash

En la consola buscar la línea:

Hash para 'sm2025': $2b$12$AbC123DeF456GhI789...

📋 COPIAR TODO el hash que empieza con $2b$12$...

2.7 - IMPORTANTE: Quitar línea temporal

📝 PASO 3: AGREGAR AL DICCIONARIO CLIENTES_CONFIG

3.1 - Buscar CLIENTES_CONFIG

CLIENTES_CONFIG = { "sanjose": { "nombre": "Colegio San José", "usuarios": { "admin": "$2b$12$...", } }, "alba": { "nombre": "Colegio Alba", "usuarios": { "admin": "$2b$12$...", } }, # otros colegios... }

3.2 - Agregar nuevo colegio

ANTES del último } que cierra CLIENTES_CONFIG, agregar:

# ✅ NUEVO COLEGIO [NOMBRE_COLEGIO] "[NOMBRE_CORTO]": { "nombre": "[NOMBRE_OFICIAL_COMPLETO]", "usuarios": { "admin": "[HASH_COPIADO_DEL_PASO_2]", } },
⚠️ REEMPLAZAR:
  • [NOMBRE_CORTO]: nombre corto del paso 1
  • [NOMBRE_OFICIAL_COMPLETO]: nombre oficial del paso 1
  • [HASH_COPIADO_DEL_PASO_2]: hash copiado en paso 2.6

EJEMPLO REAL:

# ✅ NUEVO COLEGIO SANTA MARÍA "santamaria": { "nombre": "Colegio Santa María de los Ángeles", "usuarios": { "admin": "$2b$12$AbC123DeF456GhI789...", } },

3.3 - Verificar comas

3.4 - Guardar archivo

🌐 PASO 4: CREAR RUTA DE LOGIN

4.1 - Buscar otras rutas de login

4.2 - Agregar nueva ruta

DESPUÉS de cualquier ruta de login existente, agregar:

@app.route('/login/[NOMBRE_CORTO]', methods=['GET', 'POST']) def login_[NOMBRE_CORTO](): if request.method == 'POST': username = request.form.get('username') password = request.form.get('password') colegio = '[NOMBRE_CORTO]' if validar_usuario(username, password, colegio): session['user'] = username session['colegio'] = colegio return redirect(url_for('index')) else: return "Credenciales inválidas. <a href='/login/[NOMBRE_CORTO]'>Intentar de nuevo</a>" return send_file('login.html')
⚠️ REEMPLAZAR todas las apariciones de [NOMBRE_CORTO] con el nombre corto del cliente

EJEMPLO REAL:

@app.route('/login/santamaria', methods=['GET', 'POST']) def login_santamaria(): if request.method == 'POST': username = request.form.get('username') password = request.form.get('password') colegio = 'santamaria' if validar_usuario(username, password, colegio): session['user'] = username session['colegio'] = colegio return redirect(url_for('index')) else: return "Credenciales inválidas. <a href='/login/santamaria'>Intentar de nuevo</a>" return send_file('login.html')

4.3 - Guardar archivo

🚀 PASO 5: ACTIVAR EL SISTEMA

5.1 - Detener aplicación actual

5.2 - Ejecutar aplicación

5.3 - Verificar creación automática de archivos

Si NO aparecen los archivos:
  • 🚨 HAY UN ERROR en el código
  • 🔍 Revisar que CLIENTES_CONFIG esté bien escrito
  • 🔍 Verificar que no falten comas o llaves

🧪 PASO 6: PROBAR EL SISTEMA

6.1 - Probar login administrativo

6.2 - Probar formulario de profesores

Si hay errores:
  • 🚨 Revisar que las rutas estén bien escritas
  • 🚨 Verificar que no haya errores de sintaxis en el código

📄 PASO 7: DOCUMENTAR EN BÓVEDA FÍSICA

7.1 - Ir a la bóveda bancaria

7.2 - Agregar nueva entrada

En el documento físico escribir:

[Nombre Colegio]: [contraseña_elegida]

EJEMPLO:

Santa María: sm2025

📞 PASO 8: ENTREGAR CREDENCIALES AL CLIENTE

8.1 - Llamar al cliente

📞 "Su sistema ya está activo. Estas son sus credenciales:"

8.2 - Explicación básica

📞 "Los profesores usan la segunda URL para enviar cuestionarios. Usted los revisa y aprueba desde la primera URL."

✅ CHECKLIST FINAL - VERIFICAR TODO:

🚨 ERRORES COMUNES - EVITAR:

⏱️ TIEMPO TOTAL ESTIMADO: 30-45 MINUTOS

⚠️ IMPORTANTE: Seguir EXACTAMENTE este orden de pasos
📅 Versión 2.0 - Agosto 2025
✅ 100% Probado y Verificado