saveinmed/frontend/CONFIGURACAO_COLLECTIONS_APPWRITE.md

177 lines
No EOL
4.6 KiB
Markdown

# Configuração das Collections no Appwrite
## Problema Identificado
Após análise dos endpoints criados e testes realizados, identificamos que as collections `produtos-venda` e `produtos-estoque` não possuem os atributos necessários configurados no Appwrite. Apenas a collection `produtos-catalogo` está funcionando corretamente.
## Collections e Atributos Necessários
### 1. produtos-catalogo ✅ (Funcionando)
**Collection ID:** `NEXT_PUBLIC_APPWRITE_COLLECTION_PRODUTOS_CATALOGO_ID`
**Atributos configurados:**
- `codigo_ean` (string, required)
- `nome` (string, required)
- `preco_base` (double, required)
- `descricao` (string, optional)
- `categoria` (string, optional)
- `laboratorio` (string, optional)
- `principio_ativo` (string, optional)
### 2. produtos-venda ❌ (Precisa Configuração)
**Collection ID:** `NEXT_PUBLIC_APPWRITE_COLLECTION_PRODUTOS_VENDA_ID`
**Status Atual:** Apenas ID, created_at, updated_at
**Atributos Necessários:**
- `catalogo_id` (string, required) - ID do produto do catálogo
- `data_validade` (datetime, required) - Data de validade do produto
- `preco_venda` (double, required) - Preço de venda
- `observacoes` (string, optional) - Observações sobre a venda
### 3. produtos-estoque ❌ (Precisa Configuração)
**Collection ID:** `NEXT_PUBLIC_APPWRITE_COLLECTION_PRODUTOS_ESTOQUE_ID`
**Status Atual:** Apenas ID, created_at, updated_at
**Atributos Necessários:**
- `catalogo_id` (string, required) - ID do produto do catálogo
- `venda_id` (string, required) - ID do produto de venda
- `quantidade` (integer, required) - Quantidade em estoque
- `lote` (string, optional) - Número do lote
- `localizacao` (string, optional) - Localização no estoque
## Instruções para Configuração no Appwrite Console
### Para produtos-venda:
1. Acesse o Appwrite Console
2. Navegue até Database > Collections
3. Encontre a collection `produtos-venda`
4. Vá para a aba "Attributes"
5. Adicione os seguintes atributos:
```
Atributo: catalogo_id
Tipo: String
Tamanho: 255
Required: Sim
Array: Não
Atributo: data_validade
Tipo: DateTime
Required: Sim
Array: Não
Atributo: preco_venda
Tipo: Double
Required: Sim
Array: Não
Atributo: observacoes
Tipo: String
Tamanho: 1000
Required: Não
Array: Não
```
### Para produtos-estoque:
1. Acesse o Appwrite Console
2. Navegue até Database > Collections
3. Encontre a collection `produtos-estoque`
4. Vá para a aba "Attributes"
5. Adicione os seguintes atributos:
```
Atributo: catalogo_id
Tipo: String
Tamanho: 255
Required: Sim
Array: Não
Atributo: venda_id
Tipo: String
Tamanho: 255
Required: Sim
Array: Não
Atributo: quantidade
Tipo: Integer
Required: Sim
Array: Não
Atributo: lote
Tipo: String
Tamanho: 255
Required: Não
Array: Não
Atributo: localizacao
Tipo: String
Tamanho: 255
Required: Não
Array: Não
```
## Fluxo de Dados Entre Collections
```
Step 1: produtos-catalogo
├── Cria produto base
└── Retorna catalogo_id
Step 2: produtos-venda
├── Recebe catalogo_id do Step 1
├── Adiciona informações de venda
└── Retorna venda_id
Step 3: produtos-estoque
├── Recebe catalogo_id do Step 1
├── Recebe venda_id do Step 2
├── Adiciona informações de estoque
└── Retorna estoque_id
```
## Endpoints Criados
- **POST** `/api/produtos/catalogo` - Cadastro de produto no catálogo
- **POST** `/api/produtos/venda` - Cadastro de informações de venda
- **POST** `/api/produtos/estoque` - Cadastro de informações de estoque
## Teste dos Endpoints
Após configurar os atributos no Appwrite, você pode testar os endpoints usando:
1. **Página de Teste Individual:** `http://localhost:3000/teste-endpoints-produtos-etapas`
2. **Página de Diagnóstico:** `http://localhost:3000/diagnostico-collections`
## Verificação Pós-Configuração
Após adicionar os atributos no Appwrite Console:
1. Aguarde alguns minutos para a sincronização
2. Acesse a página de diagnóstico para verificar se os atributos foram criados
3. Teste cada endpoint individualmente
4. Teste o fluxo completo (3 etapas sequenciais)
## Arquivos Envolvidos
- `/src/app/api/produtos/catalogo/route.ts`
- `/src/app/api/produtos/venda/route.ts`
- `/src/app/api/produtos/estoque/route.ts`
- `/src/app/teste-endpoints-produtos-etapas/page.tsx`
- `/src/app/diagnostico-collections/page.tsx`
- `/src/app/api/diagnostico-collections/route.ts`
## Variáveis de Ambiente Necessárias
```env
NEXT_PUBLIC_APPWRITE_ENDPOINT=
NEXT_PUBLIC_APPWRITE_PROJECT_ID=
NEXT_PUBLIC_APPWRITE_DATABASE_ID=
NEXT_PUBLIC_APPWRITE_COLLECTION_PRODUTOS_CATALOGO_ID=
NEXT_PUBLIC_APPWRITE_COLLECTION_PRODUTOS_VENDA_ID=
NEXT_PUBLIC_APPWRITE_COLLECTION_PRODUTOS_ESTOQUE_ID=
APPWRITE_API_KEY=
```