Product Catalog
Catálogo global de produtos, a oferta de cada IF e a habilitação por vínculo CNPJ × IF.
O catálogo é global: grupos de produto (opcionais), produtos e tipos de operação. Cada IF oferta produtos
(financial_institution_products), e cada vínculo CNPJ × IF habilita algumas dessas ofertas
(financial_institution_account_products). As FKs compostas garantem que a oferta habilitada é da mesma IF do vínculo
e que o tenant é o do vínculo.
O seeder de referência carrega o catálogo inicial a cada deploy (ver Seeders).
Tabelas (5)
| Tabela | Para quê |
|---|---|
product_groups | Agrupamento opcional de produtos. |
products | Produto do catálogo global, com grupo opcional. |
operation_types | Tipos de operação, catálogo independente com código único. |
financial_institution_products | Oferta de um produto por uma IF; única por (IF, produto). |
financial_institution_account_products | Habilitação de uma oferta para um vínculo CNPJ × IF; única por (vínculo, oferta). |
Referência
product_groups
Agrupamento opcional de produtos.
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
name | text | não | |
disabled_at | timestamptz | sim | |
created_at | timestamptz | não | padrão clock_timestamp() |
updated_at | timestamptz | não | padrão clock_timestamp() |
Chaves estrangeiras
- nenhuma
Referenciada por: products.
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| PK | product_groups_pkey | PRIMARY KEY (id) |
Fora do banco
- Nenhuma regra registrada além das constraints acima.
products
Produto do catálogo global, com grupo opcional.
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
product_group_id | bigint | sim | |
name | text | não | |
disabled_at | timestamptz | sim | |
created_at | timestamptz | não | padrão clock_timestamp() |
updated_at | timestamptz | não | padrão clock_timestamp() |
Chaves estrangeiras
product_group_id→product_groups.id
Referenciada por: financial_institution_products.
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| PK | products_pkey | PRIMARY KEY (id) |
Fora do banco
- Nenhuma regra registrada além das constraints acima.
operation_types
Tipos de operação, catálogo independente com código único.
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
code | text | não | |
name | text | não | |
disabled_at | timestamptz | sim | |
created_at | timestamptz | não | padrão clock_timestamp() |
updated_at | timestamptz | não | padrão clock_timestamp() |
Chaves estrangeiras
- nenhuma
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| PK | operation_types_pkey | PRIMARY KEY (id) |
| UNIQUE | operation_types_code_unique | UNIQUE (code) |
Fora do banco
- Nenhuma regra registrada além das constraints acima.
financial_institution_products
Oferta de um produto por uma IF; única por (IF, produto).
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
financial_institution_id | bigint | não | |
product_id | bigint | não | |
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_id→financial_institutions.idproduct_id→products.id
Referenciada por: financial_institution_account_products.
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| PK | financial_institution_products_pkey | PRIMARY KEY (id) |
| UNIQUE | financial_institution_products_id_institution_key | UNIQUE (id, financial_institution_id) |
| UNIQUE | financial_institution_products_institution_product_key | UNIQUE (financial_institution_id, product_id) |
Fora do banco
- Nenhuma regra registrada além das constraints acima.
financial_institution_account_products
Habilitação de uma oferta para um vínculo CNPJ × IF; única por (vínculo, oferta).
| Coluna | Tipo | Nulo | Observação |
|---|---|---|---|
id | bigint | não | identity (GENERATED ALWAYS) |
tenant_id | bigint | não | |
financial_institution_account_id | bigint | não | |
financial_institution_id | bigint | não | |
financial_institution_product_id | bigint | não | |
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)(financial_institution_product_id, financial_institution_id)→financial_institution_products (id, financial_institution_id)
Garantido pelo banco
| Tipo | Nome | Definição |
|---|---|---|
| PK | financial_institution_account_products_pkey | PRIMARY KEY (id) |
| UNIQUE | financial_institution_account_products_account_offer_key | UNIQUE (financial_institution_account_id, financial_institution_product_id) |
Fora do banco
- A disponibilidade efetiva (catálogo ativo, vínculos ativos e permissões) é calculada na aplicação; não há trigger para isso.
updated_atnão se atualiza sozinho: nenhum trigger o mantém.