177 lines
No EOL
4.6 KiB
Markdown
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=
|
|
``` |