Recorrido dinamico de las 26 rutas con los 10 roles (260 visitas con navegador real) mas revision estatica de endpoints FE vs BE. Hallazgos y correcciones: - frontend.py: expedientes_recientes no tenia @http.route (el endpoint /expedientes-recientes respondia 404). Se expone con GET + lectura. - auth.py: MEDICO_BLOCKED_PREFIXES hacia match por startswith, asi que /sales_goal quedaba bloqueado para medicos (403 en consola en todas las pantallas por el widget de meta del mes). Ahora el match exige frontera de path (/sales bloquea /sales/x pero no /sales_goal). - Reportes: getCommissions (endpoint admin-only) iba dentro de un Promise.all; el 403 tumbaba todo el tab General para recepcion, gerencia, enfermeria, psicologa, farmacia y lectura. Ahora va en peticion aislada y solo se llama para admin; la seccion de comisiones del tab General solo se renderiza para admin. - Matriz de menus guardada: medico habia quedado fuera de /pacientes y /visitas (los defaults del codigo lo incluyen y los medicos lo necesitan para ver clientes e historial). Restaurado via PUT /roles/permissions (queda en skeen_config_audit). Verificado con navegador: medico entra a /pacientes y /visitas sin 403; recepcion y gerencia cargan /reportes sin error; admin sigue viendo la seccion de comisiones. Usuarios temporales de auditoria eliminados.
343 KiB
343 KiB