saveinmed/frontend/CONFIGURACAO_COLLECTION_EMPRESAS_DADOS.md
2026-03-07 07:04:27 -06:00

175 lines
No EOL
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> Nota de atualização
>
> Este documento contém referências históricas a BFF, Appwrite ou papéis legados. No fluxo ativo do frontend, a referência correta é API direta e os papéis válidos são `admin`, `owner`, `employee` e `delivery`.
# Configuração da Collection "empresas-dados" no Appwrite
## 📋 DESCRIÇÃO
A collection "empresas-dados" armazena informações detalhadas das empresas cadastradas no sistema, incluindo dados da Receita Federal e endereços.
## 🛠️ CONFIGURAÇÃO: Atributos da Collection
### 1. Acesse o Appwrite Console
- Vá para: **Database** → **Collections** → **empresas-dados**
### 2. Configure os seguintes atributos na aba "Attributes":
#### Atributo: `cnpj`
- **Tipo**: String
- **Tamanho**: 18
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: CNPJ da empresa (formato: 00.000.000/0000-00)
#### Atributo: `razao-social`
- **Tipo**: String
- **Tamanho**: 255
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Razão social da empresa
#### Atributo: `nome-fantasia`
- **Tipo**: String
- **Tamanho**: 255
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Nome fantasia da empresa
#### Atributo: `data-abertura`
- **Tipo**: String
- **Tamanho**: 10
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Data de abertura da empresa (formato: YYYY-MM-DD)
#### Atributo: `situacao`
- **Tipo**: String
- **Tamanho**: 50
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Situação da empresa (ex: "ATIVA", "BAIXADA")
#### Atributo: `natureza-juridica`
- **Tipo**: String
- **Tamanho**: 255
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Natureza jurídica da empresa
#### Atributo: `porte`
- **Tipo**: String
- **Tamanho**: 50
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Porte da empresa (ex: "MICRO", "PEQUENO", "MÉDIO", "GRANDE")
#### Atributo: `capital-social`
- **Tipo**: Float
- **Min**: 0
- **Max**: 999999999999
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Capital social da empresa (valor numérico)
#### Atributo: `telefone`
- **Tipo**: String
- **Tamanho**: 20
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Telefone de contato da empresa
#### Atributo: `email`
- **Tipo**: String
- **Tamanho**: 255
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Email de contato da empresa
#### Atributo: `atividade-principal-codigo`
- **Tipo**: String
- **Tamanho**: 20
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Código da atividade principal (CNAE)
#### Atributo: `atividade-principal-desc`
- **Tipo**: String
- **Tamanho**: 500
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Descrição da atividade principal
#### Atributo: `enderecos`
- **Tipo**: String (JSON)
- **Tamanho**: 2000
- **Required**: ✅ Sim
- **Array**: ❌ Não
- **Descrição**: Array de endereços da empresa em formato JSON
## 📝 ESTRUTURA DO CAMPO `enderecos`
O campo `enderecos` deve conter um JSON com a seguinte estrutura:
```json
[
{
"tipo": "sede",
"cep": "00000-000",
"logradouro": "Rua Exemplo",
"numero": "123",
"complemento": "Sala 1",
"bairro": "Centro",
"cidade": "São Paulo",
"estado": "SP",
"pais": "Brasil"
}
]
```
## 🔗 VARIÁVEL DE AMBIENTE
Certifique-se de que a seguinte variável esteja configurada no `.env.local`:
```env
NEXT_PUBLIC_APPWRITE_COLLECTION_EMPRESAS_DADOS_ID=empresas-dados
```
## ⚠️ CAMPOS AUTOMÁTICOS DO APPWRITE
**NÃO** configure manualmente os seguintes campos, pois são gerenciados automaticamente pelo Appwrite:
- `$id` - ID único do documento
- `$createdAt` - Data/hora de criação
- `$updatedAt` - Data/hora da última atualização
- `$permissions` - Permissões do documento
## 🔍 RELACIONAMENTOS
Esta collection se relaciona com:
- **usuarios-data**: Campo `empresas_array` contém referências às empresas
- **empresas**: Collection principal de empresas (relacionamento via razão social)
## 📊 ÍNDICES RECOMENDADOS
Para melhor performance, configure os seguintes índices:
1. **Índice por CNPJ**: `cnpj` (único)
2. **Índice por razão social**: `razao-social`
3. **Índice por situação**: `situacao`
## 🚀 EXEMPLO DE USO
```typescript
import { EmpresasDadosService } from '@/services/empresasDadosService';
// Criar empresa
const novaEmpresa = await EmpresasDadosService.criarEmpresa({
cnpj: "12.345.678/0001-90",
"razao-social": "Empresa Exemplo LTDA",
"nome-fantasia": "Empresa Exemplo",
// ... outros campos
});
// Buscar por CNPJ
const empresa = await EmpresasDadosService.buscarEmpresaPorCnpj("12.345.678/0001-90");
```