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
This commit is contained in:
1 parent
dc169f9eba
commit
d3704602fd
22 files changed
+1317
-95
No files matched your search
@@ -0,0 +1,42 @@
|
||||
# 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.
|
||||
Reference in new issue
Block a user