> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devmob.app.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Domínio de tenancy: organizações, cooperativas, empresas, funcionários, memberships e convites.

## 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

<CardGroup cols={3}>
  <Card title="Organization Onboarding" icon="building" href="/domain/tenant/organization-onboarding">
    Fluxo completo de criação de organização: habilitações por tipo, role admin de ambiente e Invite do owner.
  </Card>

  <Card title="Cooperative and Company" icon="sitemap" href="/domain/tenant/cooperative-company-relationship">
    Relação 1:N entre cooperativas administradoras e empresas de transporte afiliadas.
  </Card>

  <Card title="Invitation Flow" icon="envelope" href="/domain/tenant/invitation-flow">
    Ciclo de vida do Invite: membro, motorista, ativação de conta e revogação.
  </Card>
</CardGroup>

## Entidades

| Entidade                | Descrição                                                                                                                                                          |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Organization**        | Tenant base com dados cadastrais comuns a cooperativas e empresas.                                                                                                 |
| **OrganizationAddress** | Endereço da organização (relação 1:1).                                                                                                                             |
| **Cooperative**         | Extensão de Organization para cooperativas administradoras de empresas afiliadas.                                                                                  |
| **Company**             | Extensão de Organization para empresas de transporte (dona de frota, rotas, viagens e billing).                                                                    |
| **Employee**            | Funcionário vinculado a uma Company a partir de uma Membership na Organization da empresa.                                                                         |
| **Membership**          | Vínculo entre usuário, organização e role. Roles `ENVIRONMENT` e `ORGANIZATION` usam escopo de organização; roles `INTERNAL` não.                                  |
| **Invite**              | Token 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:

| Tipo          | Descrição                                                           |
| ------------- | ------------------------------------------------------------------- |
| `COOPERATIVE` | Cooperativa administradora de empresas afiliadas.                   |
| `COMPANY`     | Empresa de transporte — possui frota, define rotas e opera viagens. |

## OrganizationStatus

| Status     | Descrição                                                          |
| ---------- | ------------------------------------------------------------------ |
| `ACTIVE`   | Organização pode operar normalmente.                               |
| `INACTIVE` | Organização inativa para novas operações.                          |
| `BLOCKED`  | Organizaçã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:

```mermaid theme={null}
erDiagram
    Organization ||--o| Cooperative : "type COOPERATIVE"
    Organization ||--o| Company : "type COMPANY"
    Cooperative ||--o{ Company : "administers"

    Organization {
        UUID organizationId
        string name
        OrganizationType type
        string document
    }

    Cooperative {
        UUID cooperativeId
        UUID organizationId
    }

    Company {
        UUID companyId
        UUID organizationId
        UUID cooperativeId
        string anttCode
    }
```

| Tipo          | Cooperative Extension | Company Extension |
| ------------- | :-------------------: | :---------------: |
| `COOPERATIVE` |          Sim          |         —         |
| `COMPANY`     |           —           |        Sim        |

<Info>
  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.
</Info>

## 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](/domain/credit-grant/overview).

Veja [Cooperative and Company Relationship](/domain/tenant/cooperative-company-relationship) para a documentação completa da cardinalidade 1:N, lifecycle, escopo de acesso e integridade desse vínculo.
