diff --git a/README.md b/README.md index 9397094..d02e5e7 100644 --- a/README.md +++ b/README.md @@ -24,10 +24,10 @@ Stock Manager permite gestionar: - **Ítems genéricos**: productos gestionados por cantidad de stock. - **Activos serializados**: equipos individuales con número de serie único. - **Categorías**: clasificación de ítems y activos. -- **Destinatarios**: personas o departamentos que reciben asignaciones. +- **Personas**: personas o departamentos que reciben asignaciones. Cada persona puede tener un usuario del sistema vinculado o existir sin credenciales. - **Asignaciones**: entrega y devolución de ítems o activos. - **Movimientos**: historial auditable de entradas, salidas, asignaciones, devoluciones y ajustes. -- **Usuarios admin**: gestión de usuarios, roles, estado activo y reseteo de contraseña. +- **Usuarios del sistema**: gestión unificada con personas, roles, estado activo y reseteo de contraseña. - **Importación CSV**: flujo legacy de importación masiva, mantenido estructuralmente pero pendiente de rediseño. ## Stack técnico @@ -53,8 +53,8 @@ Superficies localizadas: - **Login** y navbar compartida con selector de idioma compacto. - **Shell común**: sidebar, navegación, search, paginación, botón submit, página de acceso denegado. -- **Inventario**: categorías, ítems, activos, destinatarios, asignaciones, movimientos. -- **Admin**: gestión de usuarios, roles y estado. +- **Inventario**: categorías, ítems, activos, personas, asignaciones, movimientos. +- **Personas**: gestión unificada de personas y usuarios del sistema. La arquitectura i18n sigue un patrón consistente: @@ -233,7 +233,7 @@ src/ ├── actions/ # Server Actions finas ├── app/ # Next.js App Router │ ├── (auth)/ # Login -│ ├── (dashboard)/ # Dashboard, inventario, asignaciones, importación, admin +│ ├── (dashboard)/ # Dashboard, inventario, asignaciones, importación, people │ ├── api/ # API routes │ └── forbidden/ # Página de acceso denegado ├── components/ # Componentes compartidos y UI @@ -258,7 +258,7 @@ prisma/ - Login con NextAuth credentials. - Passwords hasheadas con `bcryptjs`. - Roles soportados: `ADMIN`, `MANAGER`, `STAFF`, `VIEWER`. -- `/admin/*` requiere rol `ADMIN`. +- `/people/*` requiere rol `ADMIN` para operaciones de gestión. - Usuarios inactivos no pueden iniciar sesión. Helpers relevantes: @@ -275,8 +275,8 @@ Entidades principales: | Entidad | Descripción | |---------|-------------| -| `User` | Usuarios del sistema y roles | -| `Recipient` | Destinatarios de asignaciones | +| `User` | Usuarios del sistema, roles y estados de ciclo de vida | +| `Person` | Personas del organigrama; pueden vincularse a un `User` | | `Category` | Categorías de inventario | | `Item` | Ítems genéricos con stock | | `Asset` | Activos serializados | @@ -311,11 +311,26 @@ prisma/schema.prisma ### Usuarios -- Sólo `ADMIN` puede gestionar usuarios. +- Sólo `ADMIN` puede gestionar personas y usuarios. - No se puede quitar el propio acceso admin. - No se puede dejar el sistema sin admin activo. - La protección de último admin usa transacción serializable con retry de conflictos Prisma `P2034`. +## Transición de arquitectura + +La aplicación está migrando de un modelo separado de usuarios y destinatarios hacia una gestión unificada de personas: + +| Antes | Después | +|-------|---------| +| `Recipient` | `Person` | +| Gestión en `/admin/users` | Gestión en `/people` | +| Usuarios y personas desvinculados | Persona puede vincularse a un `User` opcional | + +Estado actual: + +- El schema Prisma y la migración inicial reflejan el nuevo modelo. +- Las rutas y componentes de UI ya fueron migrados a `/people`. + ## Testing El proyecto tiene una base inicial de tests en tres niveles: