Brokers
Corretores, seu vínculo com o tenant, hierarquia, termos com CNPJs e códigos de loja.
O corretor é global (uma party); o que o tenant conhece é tenant_brokers. Quase todas as tabelas seguintes
referenciam o par (tenant_id, broker_id) de tenant_brokers, e não brokers direto, para que o corretor seja sempre
um corretor daquele tenant.
Códigos de loja (store_codes) pertencem a exatamente um dono: a conta do grupo na IF ou o próprio corretor.
broker_store_codes diz qual código o corretor usa em cada IF, em qual regime e em qual período, sem sobreposição.
Tabelas (6)
| Tabela | Para quê |
|---|---|
brokers | Identidade global do corretor (party), com identificador público. |
tenant_brokers | O corretor dentro de um tenant, com código no tenant e desativação. |
broker_affiliations | Histórico da hierarquia entre corretores do mesmo tenant (corretor e corretor-pai), com início e fim; uma afiliação aberta por corretor. |
tenant_broker_accounts | Com quais CNPJs do grupo o corretor tem termo assinado (N:N), com vigência. |
store_codes | Registro dos códigos de loja e de seu dono: a conta do grupo na IF ou o corretor. |
broker_store_codes | Qual código de loja o corretor usa em cada IF e em qual regime, com vigência [valid_from, valid_until) sem sobreposição. |
Referência
brokers
Identidade global do corretor (party), com identificador público.
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
uid | text | não | |
party_id | bigint | não | |
created_at | timestamptz | não | padrão clock_timestamp() |
updated_at | timestamptz | não | padrão clock_timestamp() |
Chaves estrangeiras
party_id→parties.id
Referenciada por: tenant_brokers.
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| PK | brokers_pkey | PRIMARY KEY (id) |
| UNIQUE | brokers_uid_unique | UNIQUE (uid) |
Fora do banco
- Nenhuma regra registrada além das constraints acima.
tenant_brokers
O corretor dentro de um tenant, com código no tenant e desativação.
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
tenant_id | bigint | não | |
broker_id | bigint | não | |
broker_code | text | sim | |
disabled_at | timestamptz | sim | |
disabled_reason | text | sim | |
created_at | timestamptz | não | padrão clock_timestamp() |
updated_at | timestamptz | não | padrão clock_timestamp() |
Chaves estrangeiras
broker_id→brokers.idtenant_id→tenants.id
Referenciada por: access_profiles, bank_user_assignments, bank_user_transfers, broker_affiliations, broker_prospects, broker_store_codes, invitation_grants, membership_brokers, membership_portfolios, store_codes, tenant_broker_accounts.
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| PK | tenant_brokers_pkey | PRIMARY KEY (id) |
| UNIQUE | tenant_brokers_tenant_broker_key | UNIQUE (tenant_id, broker_id) |
| UNIQUE | tenant_brokers_tenant_code_key | UNIQUE (tenant_id, broker_code) |
Fora do banco
- Nenhuma regra registrada além das constraints acima.
broker_affiliations
Histórico da hierarquia entre corretores do mesmo tenant (corretor e corretor-pai), com início e fim; uma afiliação aberta por corretor.
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
uid | text | não | |
tenant_id | bigint | não | |
broker_id | bigint | não | |
parent_id | bigint | não | |
started_on | date | não | |
ended_on | date | sim | |
ended_by | bigint | sim | |
ended_reason | text | sim | |
approved_by | bigint | sim | |
created_at | timestamptz | não | padrão clock_timestamp() |
Chaves estrangeiras
(tenant_id, broker_id)→tenant_brokers (tenant_id, broker_id)(mesmo tenant)(tenant_id, parent_id)→tenant_brokers (tenant_id, broker_id)(mesmo tenant)approved_by→users.idended_by→users.id
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| PK | broker_affiliations_pkey | PRIMARY KEY (id) |
| UNIQUE | broker_affiliations_uid_unique | UNIQUE (uid) |
| UNIQUE parcial | broker_affiliations_live_key | (tenant_id, broker_id) WHERE (ended_on IS NULL) |
Fora do banco
- Ausência de ciclos na hierarquia e
ended_onposterior astarted_onnão são verificados pelo banco.
tenant_broker_accounts
Com quais CNPJs do grupo o corretor tem termo assinado (N:N), com vigência.
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
tenant_id | bigint | não | |
broker_id | bigint | não | |
tenant_account_id | bigint | não | |
signed_on | date | sim | termo assinado com esse CNPJ |
valid_from | date | não | |
valid_until | date | sim | |
created_at | timestamptz | não | padrão clock_timestamp() |
updated_at | timestamptz | não | padrão clock_timestamp() |
Chaves estrangeiras
(tenant_account_id, tenant_id)→tenant_accounts (id, tenant_id)(mesmo tenant)(tenant_id, broker_id)→tenant_brokers (tenant_id, broker_id)(mesmo tenant)
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| PK | tenant_broker_accounts_pkey | PRIMARY KEY (id) |
| UNIQUE parcial | tenant_broker_accounts_live_key | (tenant_id, broker_id, tenant_account_id) WHERE (valid_until IS NULL) |
Fora do banco
- Não há CHECK de ordem entre
valid_fromevalid_until, nem EXCLUDE de sobreposição; só um termo aberto por trio é garantido.
store_codes
Registro dos códigos de loja e de seu dono: a conta do grupo na IF ou o corretor. O código é único por (tenant, IF), preservando zeros à esquerda; pode repetir entre tenants.
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
tenant_id | bigint | não | |
financial_institution_id | bigint | não | |
code | text | não | como o banco manda; zeros à esquerda preservados |
financial_institution_account_id | bigint | sim | dono = CNPJ do grupo |
broker_id | bigint | sim | dono = corretor (código próprio) |
disabled_at | timestamptz | sim | |
created_at | timestamptz | não | padrão clock_timestamp() |
updated_at | timestamptz | não | padrão clock_timestamp() |
Chaves estrangeiras
(financial_institution_account_id, financial_institution_id, tenant_id)→financial_institution_accounts (id, financial_institution_id, tenant_id)(mesmo tenant)(tenant_id, broker_id)→tenant_brokers (tenant_id, broker_id)(mesmo tenant)financial_institution_id→financial_institutions.id
Referenciada por: bank_user_assignments, broker_store_codes.
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| CHECK | store_codes_one_owner_check | CHECK ((num_nonnulls(financial_institution_account_id, broker_id) = 1)) |
| PK | store_codes_pkey | PRIMARY KEY (id) |
| UNIQUE | store_codes_id_institution_tenant_key | UNIQUE (id, financial_institution_id, tenant_id) |
| UNIQUE | store_codes_id_tenant_institution_key | UNIQUE (id, tenant_id, financial_institution_id) |
| UNIQUE | store_codes_tenant_institution_code_key | UNIQUE (tenant_id, financial_institution_id, code) |
Fora do banco
- Nenhuma regra registrada além das constraints acima.
broker_store_codes
Qual código de loja o corretor usa em cada IF e em qual regime, com vigência [valid_from, valid_until) sem sobreposição. O sistema resolve o código a partir daqui; ele não é digitado.
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
tenant_id | bigint | não | |
broker_id | bigint | não | |
financial_institution_id | bigint | não | |
store_code_id | bigint | não | |
regime | text | não | standard | substabelecido | indicado | subzero |
valid_from | date | não | |
valid_until | date | sim | exclusivo |
assigned_by_user_id | bigint | não | |
created_at | timestamptz | não | padrão clock_timestamp() |
Chaves estrangeiras
(store_code_id, tenant_id, financial_institution_id)→store_codes (id, tenant_id, financial_institution_id)(mesmo tenant)(tenant_id, broker_id)→tenant_brokers (tenant_id, broker_id)(mesmo tenant)assigned_by_user_id→users.id
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| CHECK | broker_store_codes_period_check | CHECK (((valid_until IS NULL) OR (valid_until > valid_from))) |
| CHECK | broker_store_codes_regime_check | CHECK ((regime IN ('standard', 'substabelecido', 'indicado', 'subzero'))) |
| PK | broker_store_codes_pkey | PRIMARY KEY (id) |
| EXCLUDE | broker_store_codes_no_overlap | EXCLUDE USING gist (tenant_id WITH =, broker_id WITH =, financial_institution_id WITH =, daterange(valid_from, valid_until, '[)') WITH &&) |
Fora do banco
- Regime
standardexige código da conta do grupo; os demais regimes exigem código do próprio corretor. É regra de domínio em código (assertRegimeMatchesOwner), não constraint.