# Itens sem valores associados Esta entidade (`Item`) foi projetada para armazenar somente dados estáticos do item (nome, categoria, atributos e metadados) e **não** deve conter qualquer informação de preço/valor. Valores de compra, venda, lance, histórico de preços e afins pertencem ao modelo `Listing`. ## Estrutura do Item (obrigatórios e opcionais) - `item_name` (obrigatório): Nome do item. - `category` (obrigatório): Categoria normalizada (ex.: `weapon`, `armor`, `helmet`, `accessory`, etc.). - `image_local_path` (opcional) - `image_url` (opcional) - `rarity` (opcional) - `level` (opcional) - `weight` (opcional) - `slots` (opcional) - `skill` (opcional) - `metadata` (opcional): Campos dinâmicos e específicos do item (atributos, servidores, tags, descrição). **Nunca inclua campos de valor aqui.** ## Validação contra campos de valor Qualquer tentativa de incluir campos de valor/preço no `metadata` do item é **rejeitada** pela validação no servidor. Chaves bloqueadas (exemplos): - `price`, `prices`, `valor`, `value`, `sell_value`, `sellPrice`, `buy`, `buy_price` - Chaves de `Listing`: `price_pix`, `price_tibia_coins`, `price_gold_coins`, `initial_price_*`, `current_bid_amount` Mensagem retornada: _"Itens não possuem campos de valor/preço no cadastro. Use listings para preços."_ ## Por que separar? - Consistência: O mesmo item pode ter múltiplos anúncios com preços diferentes. - Integridade: Evita confusão e mistura de responsabilidades entre `Item` e `Listing`. - Evolução: Permite histórico de preços e leilões sem alterar o cadastro estático do item. ## Fluxo recomendado 1. **Cadastre o Item** com seus atributos e metadados (sem preços). 2. **Crie Listings** para anunciar o item com preço, quantidade, leilão, etc. --- Documentação criada para clarificar que `Item` é livre de valores associados e que as funções de criação/atualização validam esse contrato.