erp-core/docs/02-fase-core-business/MGN-006-settings/requerimientos/RF-SETTINGS-003.md

4.8 KiB

RF-SETTINGS-003: Preferencias de Usuario

Identificacion

Campo Valor
ID RF-SETTINGS-003
Modulo MGN-006 Settings
Titulo Preferencias de Usuario
Prioridad P1 - Alta
Estado Draft
Fecha 2025-12-05

Descripcion

El sistema debe permitir que cada usuario configure preferencias personales que afectan su experiencia en la aplicacion, como tema visual, idioma, notificaciones y configuraciones de UI.


Requisitos Funcionales

RF-SETTINGS-003.1: Estructura de Preferencias

Campo Tipo Descripcion
id UUID Identificador unico
user_id UUID FK al usuario
key VARCHAR(100) Clave de preferencia
value JSONB Valor de la preferencia
synced_at TIMESTAMPTZ Ultima sincronizacion

RF-SETTINGS-003.2: Herencia de Preferencias

Las preferencias heredan del tenant si el usuario no las define:

TENANT (base)
    │
    └── USER (personalizado)

RF-SETTINGS-003.3: Preferencias de Apariencia

Key Tipo Default Descripcion
ui.theme string light Tema (light, dark, system)
ui.density string normal Densidad (compact, normal, comfortable)
ui.sidebar_collapsed boolean false Sidebar colapsado
ui.font_size string medium Tamano de fuente
ui.accent_color string null Color de acento personal

RF-SETTINGS-003.4: Preferencias de Idioma y Formato

Key Tipo Default Descripcion
locale.language string inherit Idioma (inherit = del tenant)
locale.date_format string inherit Formato fecha
locale.number_format string inherit Formato numeros
locale.first_day_of_week number inherit Primer dia semana

RF-SETTINGS-003.5: Preferencias de Notificaciones

Key Tipo Default Descripcion
notifications.email_enabled boolean true Recibir por email
notifications.push_enabled boolean true Push notifications
notifications.sound_enabled boolean true Sonido notificaciones
notifications.digest_frequency string daily Resumen (none, daily, weekly)

RF-SETTINGS-003.6: Preferencias de Modulos

Cada modulo puede tener preferencias especificas:

// Dashboard
{
  'dashboard.default_view': 'overview' | 'analytics' | 'tasks',
  'dashboard.widgets': ['sales', 'inventory', 'tasks'],
  'dashboard.refresh_interval': 60  // segundos
}

// Listas
{
  'lists.default_page_size': 20,
  'lists.default_sort': { field: 'created_at', order: 'desc' }
}

// Editor
{
  'editor.autosave': true,
  'editor.autosave_interval': 30
}

RF-SETTINGS-003.7: Sincronizacion entre Dispositivos

Las preferencias se sincronizan automaticamente:

  • Al hacer login, se cargan preferencias del servidor
  • Cambios locales se sincronizan al servidor
  • Conflictos se resuelven por timestamp (ultima escritura gana)

Operaciones CRUD

Obtener Todas las Preferencias

GET /api/v1/settings/user

Response:
{
  "ui": {
    "theme": "dark",
    "density": "compact"
  },
  "notifications": {
    "emailEnabled": true,
    "pushEnabled": false
  }
}

Actualizar Preferencia

PATCH /api/v1/settings/user
{
  "ui.theme": "dark",
  "notifications.pushEnabled": false
}

Response:
{
  "updated": ["ui.theme", "notifications.pushEnabled"],
  "syncedAt": "2025-12-05T10:00:00Z"
}

Restaurar Preferencias por Defecto

POST /api/v1/settings/user/reset
{
  "keys": ["ui.theme", "ui.density"]  // o vacío para resetear todo
}

Exportar Preferencias

GET /api/v1/settings/user/export

Response:
{
  "version": "1.0",
  "exportedAt": "2025-12-05T10:00:00Z",
  "preferences": { ... }
}

Importar Preferencias

POST /api/v1/settings/user/import
{
  "version": "1.0",
  "preferences": { ... }
}

Reglas de Negocio

ID Regla Severidad
BR-001 Usuario solo modifica sus propias preferencias Error
BR-002 Preferencias se guardan en localStorage para offline Info
BR-003 Sincronizacion al reconectar si hay cambios offline Info
BR-004 Theme 'system' sigue preferencia del OS Info
BR-005 Import solo acepta formato valido Error

Criterios de Aceptacion

  • Preferencias aisladas por usuario
  • Herencia desde configuracion del tenant
  • Sincronizacion entre dispositivos
  • Persistencia en localStorage para offline
  • Export/Import de preferencias
  • Aplicacion inmediata de cambios en UI

Historial

Version Fecha Autor Cambios
1.0 2025-12-05 Requirements-Analyst Creacion inicial