Files
pagodera/docs/ITEMS_NO_VALUES.md
Evandro Fonseca Junior d3704602fd feat(items): add server field and improve item management
refactor(ai): enhance item structure generation with schema validation
feat(ai): add token usage tracking and cost calculation
fix(ui): improve item card number formatting with locale support
docs(items): add documentation for item value separation
test(items): add tests for value field validation
2025-11-11 03:04:49 -03:00

42 lines
1.9 KiB
Markdown

# 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.