4.6 KiB
4.6 KiB
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álogodata_validade(datetime, required) - Data de validade do produtopreco_venda(double, required) - Preço de vendaobservacoes(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álogovenda_id(string, required) - ID do produto de vendaquantidade(integer, required) - Quantidade em estoquelote(string, optional) - Número do lotelocalizacao(string, optional) - Localização no estoque
Instruções para Configuração no Appwrite Console
Para produtos-venda:
- Acesse o Appwrite Console
- Navegue até Database > Collections
- Encontre a collection
produtos-venda - Vá para a aba "Attributes"
- 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:
- Acesse o Appwrite Console
- Navegue até Database > Collections
- Encontre a collection
produtos-estoque - Vá para a aba "Attributes"
- 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:
- Página de Teste Individual:
http://localhost:3000/teste-endpoints-produtos-etapas - Página de Diagnóstico:
http://localhost:3000/diagnostico-collections
Verificação Pós-Configuração
Após adicionar os atributos no Appwrite Console:
- Aguarde alguns minutos para a sincronização
- Acesse a página de diagnóstico para verificar se os atributos foram criados
- Teste cada endpoint individualmente
- 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
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=