GoWeBaKnowledge Center

Espacio Personal

Contexto y objetivo del Addendum

Este documento es el primer addendum a la Biblia de Operaciones GoWeBa (versión 1.0, publicada el 06 de mayo de 2026). Documenta todas las modificaciones realizadas por el proyecto « Espacio Personal », desplegado en tres fases entre el 06 y el 07 de mayo de 2026. El Espacio Personal es una funcionalidad estructurante que introduce la noción de organización personal en GoWeBa, permitiendo a cada usuario separar sus actividades personales de sus actividades profesionales, teniendo acceso a ambas desde una sola interfaz.

Alcance del Addendum

Este addendum cubre:

  • La creación automática de un Espacio Personal para cada usuario (Fase 1)
  • La composición de emails cross-organización y las pestañas de filtrado de contactos (Fase 2)
  • La agregación de mensajes Webabox a través de todas las organizaciones del usuario (Fase 3)
  • Las modificaciones al esquema de datos (enum OrgType, campo orgType)
  • Los nuevos endpoints API introducidos
  • Las nuevas claves de traducción (i18n) en francés, inglés y español
  • El impacto en los módulos existentes del Guía Operacional

Convenciones del documento

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Vista general — Concepto de Espacio Personal

El Espacio Personal es un espacio privado creado automáticamente para cada usuario de GoWeBa. Funciona como una organización completa, pero dedicada a las actividades personales del usuario.

¿Por qué un Espacio Personal?

Antes de la introducción del Espacio Personal, un usuario GoWeBa solo podía pertenecer a organizaciones profesionales (empresas, equipos). Esto generaba varios problemas:

  • Mezcla de contactos personales y profesionales
  • Imposibilidad de recibir emails personales sin compartirlos con el equipo
  • Sin separación entre datos privados y datos de empresa
  • Confusión al alternar entre varios mandatos/clientes El Espacio Personal resuelve estos problemas creando una separación natural mientras permite una vista unificada cuando el usuario lo desee.

Organización PERSONAL vs STANDARD

💡 El Espacio Personal es invisible para los demás miembros de tus organizaciones profesionales. Tus datos personales permanecen estrictamente privados.

Esquema visual del concepto

Estructura multi-organización de un usuario GoWeBa: ┌─────────────────────────────────────────────────────┐ │ Usuario GoWeBa │ │ │ │ 🏠 Espacio Personal (PERSONAL) │ │ ├── Mis contactos personales │ │ ├── Mi bandeja de email personal │ │ └── Mi Webabox personal │ │ │ │ 🏢 Organización A — GoWeBa.com (STANDARD) │ │ ├── Contactos del equipo │ │ ├── Bandeja de email compartida │ │ └── Webabox del equipo │ │ │ │ 🏢 Organización B — AlainBessette.com (STANDARD) │ │ ├── Contactos del equipo │ │ ├── Bandeja de email compartida │ │ └── Webabox del equipo │ │ │ │ ◀═══ Selector de organización (switcher) ═══▶ │ └─────────────────────────────────────────────────────┘

Fase 1 — Arquitectura y creación automática

La Fase 1 establece las bases del Espacio Personal: el tipo de organización (OrgType), la creación automática al registrarse y el selector de organización actualizado.

Modificación del esquema de datos

Un nuevo enum OrgType fue añadido al esquema Prisma:

Definición del enum en el esquema: enum OrgType { PERSONAL STANDARD } Campo en el modelo Organization: orgType OrgType @default(STANDARD) ⚠️ La migración es aditiva y compatible con los datos existentes. Todas las organizaciones creadas antes de la Fase 1 conservan automáticamente el tipo STANDARD.

Creación automática del Espacio Personal

Al registrarse un nuevo usuario, el sistema crea automáticamente:

  1. Una cuenta de usuario — email, contraseña, nombre
  2. Una organización personal — con orgType = PERSONAL
  3. Una membresía — rol OWNER, vinculando al usuario con su espacio personal Reglas de nomenclatura de la organización personal:
💡 El Espacio Personal se crea en la misma transacción que la cuenta de usuario. Si la creación de la cuenta falla, el espacio personal no se crea (y viceversa).

Tratamiento de usuarios existentes

Para los usuarios que existían antes de la Fase 1, se ejecutó un script de migración para crear retroactivamente un Espacio Personal para cada uno de ellos. Usuarios afectados durante el despliegue inicial:

Selector de organización (Org Switcher)

El selector de organización en la barra lateral fue actualizado para mostrar dos secciones distintas:

Comportamiento del selector:

  1. Haz clic en el selector de organización en la barra lateral izquierda
  2. La lista desplegable se muestra con dos secciones separadas
  3. La sección 🏠 (Espacio Personal) aparece primero
  4. La sección 🏢 (Organizaciones) muestra tus organizaciones profesionales
  5. Haz clic en una organización para cambiar a ella
  6. La interfaz se actualiza instantáneamente para reflejar la organización seleccionada 💡 El selector muestra un separador visual entre las dos secciones para una distinción clara. ✅ El selector de organización está funcional y desplegado en producción.

Archivos modificados — Fase 1

Fase 2 — Composición cross-org y pestañas Contactos

La Fase 2 introduce dos funcionalidades clave: la posibilidad de componer emails desde cualquier organización, y el filtrado de contactos por organización.

Composición cross-organización

Antes de la Fase 2, un usuario solo podía enviar emails con las cuentas de email de la organización activa. Con la Fase 2, el modal de composición muestra todas las cuentas de email de todas las organizaciones del usuario, agrupadas por organización. Funcionamiento:

  1. Haz clic en « Componer » en la Webabox
  2. El modal de composición se abre
  3. En el selector « De » (remitente), las cuentas están agrupadas por organización
  4. Cada grupo muestra el nombre de la organización con su icono (🏠 o 🏢)
  5. Selecciona la cuenta de email desde la cual quieres enviar
  6. Redacta tu email normalmente
  7. Haz clic en « Enviar » Ejemplo de agrupación en el selector « De »:
💡 La cuenta predeterminada es la de la organización activa. Puedes cambiar de remitente sin cambiar de organización. ⚠️ El email será enviado desde la cuenta seleccionada, no desde la organización activa. Verifica bien el remitente antes de enviar.

Nuevo endpoint API — Cuentas cross-org

Un nuevo endpoint API fue creado para obtener las cuentas de email de todas las organizaciones del usuario:

Estructura de la respuesta: { "accounts": [ { "id": "...", "emailAddress": "alain@goweba.com", "displayName": "Alain Bessette", "type": "PERSONAL_EMAIL", "status": "active", "isDefault": true, "organizationId": "...", "organizationName": "Alain Bessette", "orgType": "PERSONAL" } ] }

Pestañas de filtrado — Módulo Contactos

El módulo Contactos fue enriquecido con pestañas que permiten filtrar los contactos por organización:

Funcionamiento de las pestañas:

  1. Abre el módulo Contactos desde el menú lateral
  2. Las pestañas de filtrado aparecen encima de la lista de contactos
  3. Por defecto, la pestaña « Todas las organizaciones » está seleccionada
  4. Haz clic en « Organización actual » para filtrar por la organización activa
  5. La lista de contactos se actualiza instantáneamente
  6. El contador de contactos refleja el filtro activo 💡 Las pestañas de contactos son particularmente útiles cuando tienes muchos contactos repartidos entre tu espacio personal y tus organizaciones profesionales.

Archivos modificados — Fase 2

Fase 3 — Agregación Webabox cross-org

La Fase 3 es la de mayor impacto: permite a la Webabox (bandeja de entrada unificada) mostrar los mensajes de todas las organizaciones del usuario simultáneamente, con un sistema de pestañas para filtrar por organización.

Concepto — Vista unificada multi-organización

Antes de la Fase 3, la Webabox solo mostraba los mensajes de la organización activa. El usuario debía cambiar de organización para ver sus otros mensajes. Con la Fase 3, un sistema de « scope » permite mostrar:

Pestañas de la Webabox

La Webabox ahora muestra una barra de pestañas encima de la lista de mensajes: Ejemplo para un usuario con 3 organizaciones:

Comportamiento de las pestañas:

  1. Por defecto, la pestaña « Todas » está seleccionada (scope=all)
  2. Haz clic en una pestaña para filtrar los mensajes de esa organización
  3. Los mensajes, los contadores y las estadísticas se actualizan en tiempo real
  4. El scope se transmite a todas las llamadas API (threads, snapshot, búsqueda)
  5. El cambio de pestaña NO cambia la organización activa — solo filtra la vista ⚠️ El cambio de pestaña en la Webabox NO es lo mismo que el cambio de organización en el selector. La pestaña filtra la vista, mientras que el selector cambia el contexto global de la aplicación.

Función resolveOrgIds — Resolución del scope

Una nueva función utilitaria resolveOrgIds fue añadida a los endpoints API de la Webabox. Resuelve el parámetro scope en una lista de identificadores de organización: Lógica de resolución:

💡 La función resolveOrgIds siempre verifica que el usuario tenga acceso a la organización solicitada. Si el acceso es denegado, recurre silenciosamente a la organización activa.

Endpoints API modificados — Fase 3

Dos endpoints existentes fueron modificados para soportar el parámetro scope:

Ejemplo de llamada API con scope: GET /api/inbox/threads?tab=inbox&scope=all&page=1&limit=20 GET /api/inbox/snapshot?scope=all

Componentes UI modificados — Fase 3

Varios componentes de la Webabox fueron modificados para soportar la agregación cross-org:

Archivos modificados — Fase 3

✅ La Fase 3 está completamente desplegada y funcional en producción en goweba.com.

Impacto en los módulos existentes

La introducción del Espacio Personal modifica el comportamiento de varios módulos documentados en la Biblia de Operaciones. A continuación, el detalle de los impactos por módulo:

Módulo 02 — Contactos & CRM

Impacto: MODERADO

  • Adición de pestañas de filtrado « Todas las organizaciones » y « Organización actual »
  • Los contactos ahora están separados por organización
  • Un contacto creado en el Espacio Personal es privado e invisible para las organizaciones profesionales
  • La búsqueda de contactos puede abarcar todas las organizaciones (pestaña « Todas ») Sección del módulo 02 a actualizar:
  • Sección 3 (Interfaz) — Mencionar las pestañas de filtrado
  • Sección 4 (Funcionalidades) — Añadir el comportamiento cross-org

Módulo 03 — Webabox / Bandeja de Entrada

Impacto: MAYOR

  • La Webabox ahora muestra pestañas de organización encima de la lista de mensajes
  • El scope (all, current, orgId) se transmite a todas las llamadas API
  • La composición de email utiliza un selector de remitente agrupado por organización
  • Los contadores (insignia de mensajes no leídos) reflejan el scope activo Secciones del módulo 03 a actualizar:
  • Sección 3 (Interfaz) — Añadir las pestañas de organización
  • Sección 4.1 (Componer un email) — Documentar el selector cross-org
  • Sección 5 (Casos de uso) — Añadir el caso multi-organización

Módulo 00 — Perímetro funcional

Impacto: MENOR

  • Añadir el Espacio Personal a la lista de módulos/funcionalidades
  • Actualizar el esquema de arquitectura para incluir el tipo PERSONAL

Módulo 20 — Administración del sistema

Impacto: MENOR

  • Documentar el nuevo tipo de organización PERSONAL
  • Los administradores del sistema ven los dos tipos en el panel de administración
  • Las organizaciones personales no pueden ser eliminadas por el administrador

Módulos NO impactados

Los siguientes módulos no están impactados por el Espacio Personal:

Referencia técnica completa

Modificaciones del esquema de datos

Nuevos endpoints API

Endpoints modificados

Archivos creados

Archivos modificados

Dependencias añadidas

Claves de traducción (i18n)

Las siguientes claves de traducción fueron añadidas para soportar el Espacio Personal en los tres idiomas de GoWeBa:

Claves — Fase 1 (Espacio Personal)

Claves — Fase 2 (Cross-org + Contactos)

💡 Las claves de traducción se cargan dinámicamente según el idioma del usuario configurado en los parámetros de su perfil.

Guía de solución de problemas

A continuación, los problemas más frecuentes relacionados con el Espacio Personal y sus soluciones:

⚠️ En caso de problema persistente, contactar al administrador del sistema o consultar el Módulo 20 (Administración del sistema) del Guía Operacional.

Historial de versiones

Próximas actualizaciones previstas:

  • Integración de funcionalidades de telefonía avanzada
  • Mejoras del pipeline de ventas
  • Nuevas automatizaciones basadas en IA

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

GoWeBa — Biblia de Operaciones — Addendum 01 Espacio Personal — Fases 1, 2 y 3

#SecciónPágina
1Contexto y objetivo del Addendum3
2Vista general — Concepto de Espacio Personal3
3Fase 1 — Arquitectura y creación automática4
4Fase 2 — Composición cross-org y pestañas Contactos6
5Fase 3 — Agregación Webabox cross-org8
6Impacto en los módulos existentes10
7Referencia técnica completa11
8Claves de traducción (i18n)13
9Guía de solución de problemas14
10Historial de versiones15
ConvenciónSignificado
💡Consejo o truco para un mejor uso
⚠️Advertencia — punto de atención importante
Confirmación — funcionalidad operativa
🏠Icono que identifica el Espacio Personal en la interfaz
🏢Icono que identifica una organización profesional
Texto en cianNumeración de pasos y elementos técnicos
CaracterísticaPERSONAL (Espacio Personal)STANDARD (Organización clásica)
CreaciónAutomática al registrarseManual por un administrador
NombreNombre Apellido (del usuario)Nombre de la empresa/equipo
Slugnombre-apellido-personalslug-de-la-empresa
PropietarioEl usuario (único miembro)Uno o varios administradores
MiembrosUno solo (el propietario)Varios miembros posibles
ContactosContactos personales privadosContactos compartidos del equipo
EmailsBandeja personal privadaBandeja compartida del equipo
Icono🏠 Casa🏢 Edificio
EliminaciónNo eliminableEliminable por el admin
Campo orgTypePERSONALSTANDARD
ElementoDetalleImpacto
Enum OrgTypePERSONALSTANDARD
Campo orgTypeEn el modelo OrganizationValor predeterminado: STANDARD
MigraciónAditiva (compatible)Sin pérdida de datos
PropiedadValorEjemplo
NombreNombre Apellido (del usuario)Alain Bessette
Slugnombre-apellido-personalalain-bessette-personal
OrgTypePERSONAL
PropietarioEl propio usuario
UsuarioEmailEspacio Personal creado
Alain Bessettealain@goweba.com✅ alain-bessette-personal
Mathieu Villeneuvemathieu@goweba.com✅ mathieu-villeneuve-personal
Mariève Émondmarieve@goweba.com✅ marieve-emond-personal
John Smithjohn@goweba.com✅ john-smith-personal
SecciónIconoContenidoPosición
Espacio Personal🏠La organización personal del usuarioArriba
Organizaciones🏢Las organizaciones profesionalesDebajo
ArchivoTipo de modificación
prisma/schema.prismaAdición enum OrgType, campo orgType en Organization
app/api/auth/signup/route.tsCreación automática de la org personal al registrarse
components/layouts/org-switcher.tsxSecciones 🏠/🏢, filtrado por OrgType
scripts/seed.tsCreación de espacios personales para usuarios existentes
lib/i18n/locales/fr.jsonClaves de traducción para el Espacio Personal
lib/i18n/locales/en.jsonClaves de traducción (inglés)
lib/i18n/locales/es.jsonClaves de traducción (español)
OrganizaciónIconoCuentas disponibles
Alain Bessette (Personal)🏠alain@goweba.com
GoWeBa.com🏢support@goweba.com, info@goweba.com
AlainBessette.com🏢alain@alainbessette.com
PropiedadDetalle
MétodoGET
URL/api/inbox/accounts/all
AutenticaciónRequerida (sesión de usuario)
DescripciónDevuelve todas las cuentas de email de todas las organizaciones del usuario
ParámetrosNinguno — las organizaciones se resuelven a partir de la sesión
PestañaComportamientoUso
Todas las organizacionesMuestra los contactos de todas tus organizacionesVista global
Organización actualMuestra únicamente los contactos de la organización activaVista filtrada
ArchivoTipo de modificación
app/api/inbox/accounts/all/route.tsNUEVO — Endpoint cross-org accounts
app/(app)/inbox/compose-modal.tsxSelector « De » agrupado por organización
app/(app)/contacts/page.tsxSoporte de pestañas de filtrado por org
app/(app)/contacts/contacts-table.tsxBarra de pestañas UI en la tabla
lib/i18n/locales/fr.jsonClaves contacts.allOrgs, contacts.currentOrg, inbox.compose.defaultOrg
lib/i18n/locales/en.jsonMismas claves (inglés)
lib/i18n/locales/es.jsonMismas claves (español)
ScopeComportamientoCaso de uso
allMuestra los mensajes de todas las organizacionesVista panorámica de todos tus mensajes
currentMuestra únicamente los mensajes de la org activaTrabajo enfocado en una organización
<orgId>Muestra los mensajes de una organización específicaConsulta dirigida de una org
PestañaIconoScope enviado a la API
Todasscope=all
Alain Bessette (Personal)🏠scope=<orgId_personnel>
GoWeBa.com🏢scope=<orgId_goweba>
AlainBessette.com🏢scope=<orgId_alain>
Scope recibidoResoluciónOrganizaciones devueltas
null / "current"Organización activa del usuario[currentOrgId]
"all"Todas las organizaciones del usuario[orgId1, orgId2, ...]
"<orgId>"Verifica el acceso, devuelve la org específica[orgId] o [currentOrgId] si no hay acceso
EndpointParámetro añadidoComportamiento
GET /api/inbox/threadsscope=allcurrent
GET /api/inbox/snapshotscope=allcurrent
ComponenteModificaciónRol
inbox/page.tsxCarga las organizaciones del usuario al iniciarInyección de datos de org
inbox/inbox-shell.tsxAcepta las props userOrgs y activeOrgIdTransmisión a componentes hijos
inbox/webabox-client.tsxGestión del state orgScope, barra de pestañas, scope en llamadas APIInterfaz de usuario principal
ArchivoTipo de modificación
app/api/inbox/threads/route.tsAdición param scope + función resolveOrgIds
app/api/inbox/snapshot/route.tsAdición param scope + función resolveOrgIds
app/(app)/inbox/page.tsxCarga de las orgs del usuario (server-side)
app/(app)/inbox/inbox-shell.tsxProps userOrgs + activeOrgId
app/(app)/inbox/webabox-client.tsxState orgScope, pestañas, scope en API calls
MóduloRazón
OG_01 — Primeros pasosNingún cambio en el proceso de registro visible
OG_04 — WEBA Asistente IALa IA funciona independientemente de la organización
OG_05 — Pipeline de ventasEl pipeline permanece vinculado a la organización activa
OG_06 — FormulariosLos formularios permanecen vinculados a la organización activa
OG_07 — AutomatizacionesLas automatizaciones permanecen vinculadas a la organización activa
OG_08 — TelefoníaLa telefonía permanece vinculada a la cuenta SIP activa
OG_09 — ReportesLos reportes se generan por organización activa
OG_10 — FacturaciónLa facturación es por organización
OG_11 — WEBA CommComunicación independiente del tipo de org
OG_12 — IntegracionesLas integraciones son por organización
OG_13 — SMS MarketingEl marketing SMS es por organización
OG_14 — TemplatesLos templates son por organización
OG_15 — CalendarioEl calendario es por organización
OG_16 — TareasLas tareas son por organización
OG_17 — Sitios WebLos sitios son por organización
OG_18 — ReputaciónLa reputación es por organización
OG_19 — Redes SocialesLas redes sociales son por organización
ElementoTipoValoresModeloMigración
enum OrgTypeEnumPERSONALSTANDARD
orgTypeCampoOrgType @default(STANDARD)OrganizationAditiva
EndpointMétodoDescripciónFase
/api/inbox/accounts/allGETCuentas de email de todas las orgs del usuarioFase 2
EndpointParámetro añadidoValoresFase
GET /api/inbox/threadsscopeallcurrent
GET /api/inbox/snapshotscopeallcurrent
ArchivoDescripciónFase
app/api/inbox/accounts/all/route.tsEndpoint cross-org accountsFase 2
ArchivoDescripciónFase
prisma/schema.prismaEnum OrgType + campo orgTypeFase 1
app/api/auth/signup/route.tsCreación automática org personalFase 1
components/layouts/org-switcher.tsxSecciones 🏠/🏢Fase 1
scripts/seed.tsEspacios personales existentesFase 1
app/(app)/inbox/compose-modal.tsxSelector cross-orgFase 2
app/(app)/contacts/page.tsxPestañas de filtradoFase 2
app/(app)/contacts/contacts-table.tsxBarra de pestañas UIFase 2
app/api/inbox/threads/route.tsParam scope + resolveOrgIdsFase 3
app/api/inbox/snapshot/route.tsParam scope + resolveOrgIdsFase 3
app/(app)/inbox/page.tsxCarga orgs del usuarioFase 3
app/(app)/inbox/inbox-shell.tsxProps userOrgs/activeOrgIdFase 3
app/(app)/inbox/webabox-client.tsxState orgScope, pestañas, API scopeFase 3
lib/i18n/locales/fr.jsonClaves i18n (FR)Fases 1-2
lib/i18n/locales/en.jsonClaves i18n (EN)Fases 1-2
lib/i18n/locales/es.jsonClaves i18n (ES)Fases 1-2
PaqueteVersiónRazónFase
@dnd-kit/utilities^3.2.2Dependencia faltante (drag & drop inbox)Fase 3
pdfjs-dist^4.4.168Dependencia faltante (vista previa PDF)Fase 3
react-markdown^9.0.1Dependencia faltante (renderizado markdown)Fase 3
ClaveFRENES
org.personalSpaceEspace PersonnelPersonal SpaceEspacio Personal
org.organizationsOrganisationsOrganizationsOrganizaciones
org.personalOrgMon Espace PersonnelMy Personal SpaceMi Espacio Personal
ClaveFRENES
contacts.allOrgsToutes les organisationsAll organizationsTodas las organizaciones
contacts.currentOrgOrganisation couranteCurrent organizationOrganización actual
inbox.compose.defaultOrgOrganisation par défautDefault organizationOrganización predeterminada
ProblemaCausa probableSolución
Mi Espacio Personal no aparece en el selectorError durante la creación de la cuentaContactar al administrador para verificar la presencia de la org PERSONAL en la base de datos
No veo las cuentas de email de mis otras organizaciones en el compositorLas cuentas de email no están configuradas en las otras organizacionesVerificar la configuración de las cuentas de email en cada organización vía Configuración > Email
La pestaña « Todas » en la Webabox es lentaGran cantidad de mensajes a través de varias organizacionesUsar las pestañas por organización para una vista más dirigida y rápida
Los contactos de mi Espacio Personal aparecen en mi organización profesionalLa pestaña « Todas las organizaciones » está seleccionadaCambiar a la pestaña « Organización actual » para filtrar por org activa
No puedo eliminar mi Espacio PersonalComportamiento normal — por diseñoEl Espacio Personal es permanente y no puede ser eliminado. Contactar al administrador si es necesario
La insignia de mensajes no leídos no refleja todos mis mensajesLa insignia muestra el scope activo (no necesariamente « Todas »)Cambiar la pestaña a « Todas » para ver el contador global
VersiónFechaDescripciónAutor
1.006 mayo 2026Publicación inicial de la Biblia de Operaciones (20 módulos)GoWeBa
1.107 mayo 2026Addendum 01 — Espacio Personal (Fases 1, 2 y 3)GoWeBa

© 2024–2026 GOWEBA INC. — Make it Simple, Make it Possible, Make it Real.