Actualizar backend/main.py
This commit is contained in:
@@ -36,6 +36,21 @@ def _startup():
|
||||
# Refresco cada 4 min en segundo plano (TTL del caché es 5 min)
|
||||
start_background_refresh(services.refrescar_todo, interval=1800)
|
||||
|
||||
# Historial de estado de asesores: revisa Chatwoot cada 5 min y guarda los
|
||||
# cambios (ON/OFF) en historial_estado_asesor. Solo entre 05:00 y 23:59.
|
||||
import threading, time as _t
|
||||
from datetime import datetime as _dt
|
||||
def _loop_asesores():
|
||||
while True:
|
||||
try:
|
||||
h = _dt.now().hour
|
||||
if 5 <= h <= 23:
|
||||
services.registrar_estado_asesores()
|
||||
except Exception as e:
|
||||
print(f"[historial asesores loop] {e}")
|
||||
_t.sleep(300)
|
||||
threading.Thread(target=_loop_asesores, daemon=True).start()
|
||||
|
||||
|
||||
# ── Salud / utilidades ─────────────────────────────────────────────────────
|
||||
@app.get("/api/health")
|
||||
@@ -383,6 +398,20 @@ def post_usuario_rol(payload: dict = Body(...)):
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@app.post("/api/usuarios/email")
|
||||
def post_usuario_email(payload: dict = Body(...)):
|
||||
try:
|
||||
return services.usuarios_actualizar_email(payload.get("id",""), payload.get("email",""))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@app.post("/api/usuarios/password")
|
||||
def post_usuario_password(payload: dict = Body(...)):
|
||||
try:
|
||||
return services.usuarios_actualizar_password(payload.get("id",""), payload.get("password",""))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@app.post("/api/usuarios/eliminar")
|
||||
def post_usuario_eliminar(payload: dict = Body(...)):
|
||||
try:
|
||||
@@ -390,6 +419,34 @@ def post_usuario_eliminar(payload: dict = Body(...)):
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@app.get("/api/roles")
|
||||
def get_roles():
|
||||
try:
|
||||
return services.roles_listar()
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@app.get("/api/roles/modulos")
|
||||
def get_roles_modulos():
|
||||
try:
|
||||
return services.roles_modulos_disponibles()
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@app.post("/api/roles/guardar")
|
||||
def post_rol_guardar(payload: dict = Body(...)):
|
||||
try:
|
||||
return services.rol_guardar(payload.get("rol",""), payload.get("modulos",[]))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@app.post("/api/roles/eliminar")
|
||||
def post_rol_eliminar(payload: dict = Body(...)):
|
||||
try:
|
||||
return services.rol_eliminar(payload.get("rol",""))
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
# ── VENDEDORES MANUALES (Comisiones) ───────────────────────────────────────
|
||||
@app.get("/api/comisiones/vendedores")
|
||||
@@ -511,5 +568,20 @@ def set_asesor_estado(agent_id: int = Query(...), online: bool = Query(...)):
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
@app.get("/api/asesores/historial")
|
||||
def get_asesor_historial(email: str = Query(...)):
|
||||
try:
|
||||
return services.historial_asesor(email)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@app.post("/api/asesores/registrar")
|
||||
def post_asesor_registrar():
|
||||
try:
|
||||
return services.registrar_estado_asesores()
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=False)
|
||||
|
||||
Reference in New Issue
Block a user