# F-154 — Admin: separate customers from internal users ## Problem El panel admin muestra usuarios mezclados. `GET /users` (módulo `users`) devuelve TODOS los identity_users (clientes + backoffice) y `GET /admin/users` (módulo `security`) por defecto también devuelve todos. La página Customers llama a `/api/users` y la página Users llama a `/api/admin/users`; como ambos devuelven todo, ambos listados aparecen mezclados (conceptos de identity/storefront con backoffice en un mismo listado). ## Goal Customers muestra SOLO clientes storefront (`role = 'customer'`); Users muestra SOLO usuarios internos/backoffice (`role != 'customer'`). Separación forzada en el backend (single source of truth), no solo filtrado cliente. ## Scope IN - `project/src/modules/users` (`listCustomers` / `GET /users`): filtrar `role = 'customer'`. - `project/src/modules/security` (`GET /admin/users`): default `role != 'customer'`; `?role=admin|editor` sigue afinando dentro de internos. - `project/apps/admin/.../users/page.tsx`: quitar opción `customer` del dropdown (Users = backoffice). - Tests unitarios (mock pool, sin DB) + actualizar itest AC2/AC3. ## Scope OUT - No se crea `/customers` (el cliente ya consume `/users`). - `/users/:id`, `/users/:id/addresses` (owner-or-admin) siguen sin filtro por rol (un admin ve el perfil de cualquier usuario; un cliente ve el suyo). - No migración (identity_users.role ya existe, NOT NULL con default 'customer'). - Frontend Customer page: sin cambio (ya llama /users → ahora customer-only). ## Type fix — high priority / high risk.