// Catálogo de acciones granulares disponibles por rol. // Cada acción controla un permiso específico en la UI y el backend. export const ACCIONES_DISPONIBLES = [ { clave: 'descartar_lead', nombre: 'Descartar leads', descripcion: 'Puede descartar leads con motivo' }, { clave: 'editar_cotizacion', nombre: 'Editar cotizaciones', descripcion: 'Puede editar cotizaciones existentes' }, { clave: 'asignar_vendedor', nombre: 'Reasignar leads', descripcion: 'Puede reasignar leads a otros vendedores' }, { clave: 'ver_reportes', nombre: 'Ver reportes', descripcion: 'Puede ver dashboards y reportes' }, { clave: 'exportar_pdf', nombre: 'Exportar PDFs', descripcion: 'Puede generar y descargar PDFs' }, { clave: 'ver_precios', nombre: 'Ver precios completos', descripcion: 'Puede ver precios y descuentos en cotizador' }, { clave: 'gestionar_clientes', nombre: 'Gestionar clientes', descripcion: 'Puede gestionar fichas de clientes' }, ] as const export type AccionClave = (typeof ACCIONES_DISPONIBLES)[number]['clave'] // Acciones por defecto por rol: true = habilitado, false = deshabilitado. // 'admin' tiene todo habilitado por convención. export const ACCIONES_POR_ROL_DEFAULT: Record> = { vendedor: { descartar_lead: true, editar_cotizacion: false, asignar_vendedor: false, ver_reportes: false, exportar_pdf: true, ver_precios: true, gestionar_clientes: false, }, administracion_venta: { descartar_lead: true, editar_cotizacion: true, asignar_vendedor: false, ver_reportes: true, exportar_pdf: true, ver_precios: true, gestionar_clientes: true, }, director_ventas: { descartar_lead: true, editar_cotizacion: true, asignar_vendedor: true, ver_reportes: true, exportar_pdf: true, ver_precios: true, gestionar_clientes: true, }, escrituracion: { descartar_lead: false, editar_cotizacion: false, asignar_vendedor: false, ver_reportes: false, exportar_pdf: true, ver_precios: true, gestionar_clientes: true, }, direccion_general: { descartar_lead: false, editar_cotizacion: false, asignar_vendedor: false, ver_reportes: true, exportar_pdf: true, ver_precios: true, gestionar_clientes: false, }, admin: { descartar_lead: true, editar_cotizacion: true, asignar_vendedor: true, ver_reportes: true, exportar_pdf: true, ver_precios: true, gestionar_clientes: true, }, // manager: mismas acciones operativas que admin (no gestiona usuarios/permisos, // eso se controla por endpoint, no por acción) manager: { descartar_lead: true, editar_cotizacion: true, asignar_vendedor: true, ver_reportes: true, exportar_pdf: true, ver_precios: true, gestionar_clientes: true, }, } /** Devuelve las acciones de un rol (o vacío si el rol no existe) */ export function accionesPorRol(rol: string): Record { const clave = rol.trim().toLowerCase() return (ACCIONES_POR_ROL_DEFAULT[clave] ?? ACCIONES_POR_ROL_DEFAULT.vendedor)! }