feat: recordatorios periódicos; supervisor invita auxiliares; owner edita usuarios; precios planes y MSI
This commit is contained in:
@@ -674,6 +674,127 @@ pm2 reload horux-web
|
||||
|
||||
---
|
||||
|
||||
## 30. Supervisor puede invitar Clientes y Auxiliares
|
||||
|
||||
**Fecha:** 2026-06-25
|
||||
|
||||
### Cambio
|
||||
Antes los supervisores solo podían invitar usuarios con rol **Cliente**. Ahora también pueden invitar **Auxiliares**, siempre asignados a su propia supervisión.
|
||||
|
||||
### Backend
|
||||
|
||||
| Archivo | Cambio |
|
||||
|---|---|
|
||||
| `apps/api/src/controllers/usuarios.controller.ts` | Permite a `supervisor` invitar `cliente` y `auxiliar`; al invitar un auxiliar se asigna a sí mismo por defecto y no permite asignar a otro supervisor |
|
||||
| `apps/api/src/routes/cartera.routes.ts` | `/carteras/supervisores` ahora acepta `owner` y `supervisor` |
|
||||
| `apps/api/src/controllers/cartera.controller.ts` | `getSupervisores` filtra para que un supervisor solo se vea a sí mismo en el dropdown |
|
||||
|
||||
### Frontend
|
||||
|
||||
| Archivo | Cambio |
|
||||
|---|---|
|
||||
| `apps/web/app/(dashboard)/usuarios/page.tsx` | El dropdown de roles para supervisor incluye **Auxiliar**; al seleccionar auxiliar se preselecciona al supervisor logueado como responsable |
|
||||
|
||||
### Deploy
|
||||
|
||||
```bash
|
||||
cd /root/HoruxDespachosNuevo
|
||||
pnpm --filter api build
|
||||
pnpm --filter web build
|
||||
pm2 reload horux-api
|
||||
pm2 reload horux-web
|
||||
```
|
||||
|
||||
**Estado:** ✅ Exitoso
|
||||
|
||||
---
|
||||
|
||||
## 31. Owner puede editar nombre y rol de usuarios
|
||||
|
||||
**Fecha:** 2026-06-25
|
||||
|
||||
### Cambio
|
||||
En la página **Configuración › Usuarios**, el **owner** ahora puede editar el **nombre** y el **rol** de cualquier usuario del tenant desde un modal.
|
||||
|
||||
### Detalles
|
||||
- Se agregó el botón **Editar** en cada fila de usuario (solo visible para `owner`).
|
||||
- El modal permite cambiar:
|
||||
- **Nombre**
|
||||
- **Rol** (los roles disponibles dependen de si es tenant despacho o legacy)
|
||||
- Un owner **no puede cambiar su propio rol** (solo su nombre).
|
||||
- El backend ya tenía el endpoint `PATCH /usuarios/:id`; se ajustó la UI para exponerlo.
|
||||
|
||||
### Archivos modificados
|
||||
|
||||
| Archivo | Cambio |
|
||||
|---|---|
|
||||
| `apps/web/app/(dashboard)/usuarios/page.tsx` | Botón Editar, modal de edición, validación de rol propio |
|
||||
|
||||
### Deploy
|
||||
|
||||
```bash
|
||||
cd /root/HoruxDespachosNuevo
|
||||
pnpm --filter web build
|
||||
pm2 reload horux-web
|
||||
```
|
||||
|
||||
**Estado:** ✅ Exitoso
|
||||
|
||||
---
|
||||
|
||||
## 32. Recordatorios periódicos en calendario
|
||||
|
||||
**Fecha:** 2026-06-25
|
||||
|
||||
### Cambio
|
||||
Los recordatorios custom del calendario ahora pueden ser **periódicos**: mensual, bimestral, trimestral o anual. Se mantienen activos indefinidamente hasta que el usuario cancele la serie.
|
||||
|
||||
### Modelo
|
||||
Se reutiliza la tabla `recordatorios` con metadatos de serie:
|
||||
- **Maestro**: `serie_id IS NULL` y `recurrencia <> 'unica'`.
|
||||
- **Instancias**: filas con `serie_id = maestro.id`, una por cada ocurrencia generada.
|
||||
|
||||
Esto permite completar una instancia sin afectar las demás, y el cron de emails de recordatorios próximos sigue funcionando sin cambios mayores.
|
||||
|
||||
### Funcionalidad
|
||||
- Al crear un recordatorio periódico se generan instancias para un horizonte de 24 meses.
|
||||
- Al **editar** una instancia se actualizan el maestro y **todas las ocurrencias futuras no completadas**.
|
||||
- Al **eliminar** una instancia periódica se **cancela toda la serie**: se desactiva el maestro y se borran las instancias futuras no completadas.
|
||||
- Un cron diario a las 6:00 AM extiende automáticamente las series activas para mantener el horizonte futuro.
|
||||
|
||||
### Frecuencias soportadas
|
||||
- `mensual`
|
||||
- `bimestral`
|
||||
- `trimestral`
|
||||
- `anual`
|
||||
|
||||
### Archivos modificados
|
||||
|
||||
| Archivo | Cambio |
|
||||
|---|---|
|
||||
| `apps/api/src/migrations/tenant/056_recordatorios_periodicos.sql` | Nuevas columnas `recurrencia`, `serie_id`, `activo`, `fecha_inicio`, `fecha_fin` e índices |
|
||||
| `apps/api/src/services/recordatorios.service.ts` | Lógica de creación, edición, eliminación y regeneración de series periódicas |
|
||||
| `apps/api/src/services/notifications.service.ts` | Excluir maestros del envío de recordatorios próximos |
|
||||
| `apps/api/src/controllers/calendario.controller.ts` | Schemas aceptan `recurrencia` y `fechaFin` |
|
||||
| `apps/api/src/jobs/recordatorios-periodicos.job.ts` | Nuevo cron de extensión de series |
|
||||
| `apps/api/src/index.ts` | Registro del nuevo cron |
|
||||
| `apps/web/app/(dashboard)/calendario/page.tsx` | Selector de recurrencia, fecha fin, indicador de serie y confirmación al cancelar |
|
||||
|
||||
### Deploy
|
||||
|
||||
```bash
|
||||
cd /root/HoruxDespachosNuevo
|
||||
pnpm --filter api build
|
||||
pnpm --filter web build
|
||||
pnpm --filter @horux/api db:migrate-tenants
|
||||
pm2 reload horux-api
|
||||
pm2 reload horux-web
|
||||
```
|
||||
|
||||
**Estado:** ✅ Exitoso
|
||||
|
||||
---
|
||||
|
||||
## Deploy histórico
|
||||
|
||||
### Preparación
|
||||
|
||||
Reference in New Issue
Block a user