Skip to main content

Overview

O domínio de Tenant é responsável pela estrutura organizacional do sistema. Ele define como organizações são criadas, como se diferenciam entre cooperativas e empresas de transporte, e como usuários são vinculados a elas com roles, permissões e vínculos operacionais de funcionário. O isolamento multi-tenant do DEVMOB é baseado em Organization — todo dado de negócio pertence a uma organização, e o contexto ativo vem do Profile autenticado.

Conceitos

Organization Onboarding

Fluxo completo de criação de organização: habilitações por tipo, role admin de ambiente e Invite do owner.

Cooperative and Company

Relação 1:N entre cooperativas administradoras e empresas de transporte afiliadas.

Invitation Flow

Ciclo de vida do Invite: membro, motorista, ativação de conta e revogação.

Entidades

EntidadeDescrição
OrganizationTenant base com dados cadastrais comuns a cooperativas e empresas.
OrganizationAddressEndereço da organização (relação 1:1).
CooperativeExtensão de Organization para cooperativas administradoras de empresas afiliadas.
CompanyExtensão de Organization para empresas de transporte (dona de frota, rotas, viagens e billing).
EmployeeFuncionário vinculado a uma Company a partir de uma Membership na Organization da empresa.
MembershipVínculo entre usuário, organização e role. Roles ENVIRONMENT e ORGANIZATION usam escopo de organização; roles INTERNAL não.
InviteToken polimórfico para membro (MEMBER), motorista (DRIVER) ou ativação de conta (ACCOUNT_ACTIVATION). Convites internos e ativações não possuem organização.

OrganizationType

O tipo da organização define suas capacidades dentro do ecossistema:
TipoDescrição
COOPERATIVECooperativa administradora de empresas afiliadas.
COMPANYEmpresa de transporte — possui frota, define rotas e opera viagens.

OrganizationStatus

StatusDescrição
ACTIVEOrganização pode operar normalmente.
INACTIVEOrganização inativa para novas operações.
BLOCKEDOrganização bloqueada por regra administrativa ou de conformidade.
User.status = BLOCKED bloqueia o acesso global do usuário. Organization.status = BLOCKED bloqueia operações no contexto daquela organização.

Cooperative & Company Extensions

A Organization é uma entidade base estendida por Cooperative ou Company conforme o tipo:
TipoCooperative ExtensionCompany Extension
COOPERATIVESim
COMPANYSim
A Company adiciona o campo opcional anttCode (código de registro na ANTT — Agência Nacional de Transportes Terrestres) e é a unidade operacional e financeira do sistema. A Cooperative administra empresas, mas não participa de billing.

Employee

Employee nasce de uma Membership na Organization de uma Company. Ele representa o vínculo operacional do usuário com a empresa e pode apontar para o Customer do mesmo usuário quando esse funcionário também usa fluxos de passageiro. Créditos concedidos por regra de funcionário validam esse vínculo, mas continuam pertencendo ao Customer no domínio de Credit Grant. Veja Cooperative and Company Relationship para a documentação completa da cardinalidade 1:N, lifecycle, escopo de acesso e integridade desse vínculo.