Skip to main content

Módulos de negocio (src/app/features)

Cada feature es un NgModule cargado de forma perezosa (ver Rutas). La mayoría de los CRUD siguen el mismo patrón: una página contenedora (pages/<x>-page) que compone un componente de filtro, una tabla y un modal-formulario, con las acciones protegidas por *appShowWithPermission.

FeatureRutaContenido
Chat de tickets (whaticket)whaticket/chatLista de tickets y conversación; detalle en lista, hilo, compositor, acciones del ticket, tiempo real y etiquetas
Chat internointernal-chat/conversationsChat entre agentes: lista de conversaciones, hilo, creación de chats y grupos, panel de grupo, mensajes destacados
ConexionesconnectionsCanales Web, WhatsApp QR e Instagram; detalle en Meta y conexiones
DashboarddashboardMétricas y gráficos; DashboardDataService consulta /dashboard/overview, top-contacts, top-users, top-labels, messages-timeline y tickets-by-type
ContactoscontactsContactsFilter, ContactsTable, ContactModalForm; asignación de etiquetas (assign-labels)
UsuariosusersUsersFilter, UsersTable, UserModalForm
DepartamentosdepartmentsDepartmentsFilter, DepartmentsTable, DepartmentModal; estado en NgRx
EtiquetaslabelsLabelsFilter, LabelsTable, LabelModalForm
Respuestas rápidasquick-responsesQuickResponsesFilter, QuickResponsesTable, QuickResponseModalForm
Tickets bloqueadoslocked-ticketsLockedTicketsTable; vista de administración de tickets bloqueados con "Mantener conmigo" (permiso TICKET_UNLOCK_ANY, acción force-unlock)
Mensajes programadosscheduled-messagesScheduledMessagesFilter y ScheduledMessagesTable (mis envíos programados); permiso MESSAGE_READ; no figura en el menú lateral
Perfilprofile y profile/starred-messagesPerfil del usuario (firma, avatar con recorte avatar-cropper-dialog) y página de mensajes destacados
ConfiguraciónsettingsDos pestañas (SettingsTab: general y attention): GeneralSettings, BusinessHoursPanel, AutoResolutionPanel, CsatPanel; exige AdminGuard
Control de accesoaccess-control/*Administración de RBAC: roles, permisos, módulos, roles-permisos y constructor de permisos (permissions-builder)
Autenticaciónauth/login, auth/reconnectLogin y reconexión en iframe

Patrón de una pantalla CRUD​

Ejemplo con conexiones (el patrón se repite en contactos, usuarios, etiquetas, etc.):

features/<x>/
├── <x>.module.ts, <x>-routing.module.ts
├── pages/<x>-page/ # solo compone: breadcrumb + tabla
└── components/
├── <x>-filter/ # formulario de filtro (emite filterApply / filterReset)
├── <x>-table/ # carga y paginación, acciones por fila
└── <x>-modal-form/ # alta y edición

Convenciones:

  • La página recibe el título del shared-breadcrumb con claves i18n ('connections.title' | translate).
  • Los modales se abren con NgbModal.open(Componente, { centered: true, size: 'lg' }) y devuelven resultado con closed o dismissed; la tabla recarga la lista en closed.
  • Las confirmaciones destructivas reutilizan ConfirmDialogComponent con title, message e icon.
  • Los textos y errores vienen de assets/i18n/*.json y las notificaciones de éxito del ToastrNotificationService.