docs: update README to reflect Person model and /people migration

This commit is contained in:
2026-06-18 23:27:12 +02:00
parent fff5ce01e5
commit 1a95bf4613
+24 -9
View File
@@ -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: