Base de roles avanzados y permisos por operación
Fase 1 de roles avanzados (V-3.2.0229): - Catálogo centralizado de permisos por operación (pos.sell, pos.refund, sales.view, sales.cancel, inventory.view/adjust, cash_cuts.view/download, cash_control.view/deposit_to_safe/bank_deposit/validate, reports.view, employees.manage, settings.manage). - Mapa role→permissions con roles nuevos: inventory_staff, accountant, store_manager. Roles legacy (owner, cashier, super_admin) intactos. - Helper unificado userCan() en cliente (`usePermissions`) y servidor (`requirePermission`). - Nueva tabla `employee_memberships` con scope por tienda, overrides de permisos y estados invited/active/disabled. RLS estricta por owner_id; el empleado solo lee su propia membresía. - RPCs base: getMyRoleAndPermissions, listEmployeeRolesCatalog, listEmployees, inviteEmployee, updateEmployee, disableEmployee (todas protegidas por employees.manage). - Compatibilidad total: cashier_assignments y createCashier siguen funcionando. Un cajero legacy se mapea automáticamente al permission set de cashier (mismo comportamiento que hoy). - Sin cambios visibles para owners ni cajeros existentes en esta versión. - Las RPCs operativas (POS, ventas, cash-control) NO se endurecen todavía con requirePermission — se hará en V-3.2.0230 ruta por ruta con QA por encima.
Aspectos destacados
- Catálogo central de permisos por operación
- Nuevos roles: inventory_staff, accountant, store_manager
- Tabla employee_memberships con RLS estricta
- Helper userCan en cliente y servidor
- Cero regresión para owners y cajeros actuales