saveinmed/saveinmed-frontend/CONFIGURACAO_COLLECTION_EMPRESAS_DADOS.md
Tiago Yamamoto b39caf0fd0 first commit
2025-12-17 13:58:26 -03:00

172 lines
No EOL
4.4 KiB
Markdown

# 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");
```