Expansão de Stock Levels: very_low e very_high
Resumo
Foram adicionados dois novos níveis de estoque à tabela pricing_stock_level_factors:
- very_low: Estoque muito baixo (fator: 0.6 - reduz desconto em 40%)
- very_high: Estoque muito alto (fator: 1.5 - aumenta desconto em 50%)
Níveis de Estoque Disponíveis
| Stock Level | Fator | Ajuste | Descrição |
|---|---|---|---|
very_low |
0.600000 | -40% | Estoque muito baixo: reduz desconto em 40% para evitar esgotamento e proteger margem |
low |
0.800000 | -20% | Estoque baixo: reduz desconto em 20% para evitar esgotamento |
normal |
1.000000 | 0% | Estoque normal: sem ajuste no desconto |
high |
1.200000 | +20% | Estoque alto: aumenta desconto em 20% para escoar estoque |
very_high |
1.500000 | +50% | Estoque muito alto: aumenta desconto em 50% para escoar estoque e liberar capital |
Script SQL
Execute o script para adicionar os novos níveis:
mysql -u usuario -p csuite_pricing < csuite-pricing/sql/adicionar_very_low_very_high_stock_level.sql
Ou execute diretamente no MySQL Workbench/phpMyAdmin.
Mudanças no Código
1. Validações Atualizadas
Arquivos modificados:
- agents/pricing/repository.py - Validação em create_pricing_stock_level_factor()
- agents/pricing/engine.py - Normalização de stock_level
- csuite-pricing/sql/add_stock_level_to_sp_price_compute_v8.sql - Validação na stored procedure
Antes:
valid_levels = ['low', 'normal', 'high']
Depois:
valid_levels = ['very_low', 'low', 'normal', 'high', 'very_high']
2. Frontend (Labels e Cores)
Arquivo: agents/pricing/main.py
Labels adicionados:
const levelLabels = {
'very_low': 'Muito Baixo',
'low': 'Baixo',
'normal': 'Normal',
'high': 'Alto',
'very_high': 'Muito Alto'
};
Cores adicionadas:
const levelColors = {
'very_low': 'badge-error', // Vermelho
'low': 'badge-error', // Vermelho
'normal': 'badge-success', // Verde
'high': 'badge-warning', // Amarelo
'very_high': 'badge-warning' // Amarelo
};
Impacto no Cálculo de Preço
O fator de stock level é aplicado na fórmula final:
Desconto_Final = Desconto_Allowed × Curve_Factor × Stock_Level_Factor
Exemplos
Cenário 1: Desconto base de 10% com very_low
- Desconto base: 10%
- Stock Level Factor: 0.6
- Desconto final: 10% × 0.6 = 6% (redução de 40%)
Cenário 2: Desconto base de 10% com very_high
- Desconto base: 10%
- Stock Level Factor: 1.5
- Desconto final: 10% × 1.5 = 15% (aumento de 50%)
Mapeamento Sugerido de Estoque Real
Para mapear o estoque real para os níveis, sugere-se:
| Stock Level | Critério (Days Supply) | Critério (Estoque) |
|---|---|---|
very_low |
< 30 dias | < 5% do estoque médio |
low |
30-60 dias | 5-20% do estoque médio |
normal |
60-120 dias | 20-80% do estoque médio |
high |
120-180 dias | 80-150% do estoque médio |
very_high |
> 180 dias | > 150% do estoque médio |
Nota: Estes critérios devem ser ajustados conforme a estratégia de negócio e análise de dados históricos.
Ordem de Precedência
Do mais conservador (menor desconto) ao mais agressivo (maior desconto):
very_low (0.6) < low (0.8) < normal (1.0) < high (1.2) < very_high (1.5)
Verificação
Após executar o script SQL, verifique:
SELECT
stock_level,
factor,
ROUND((factor - 1.0) * 100, 1) AS ajuste_percentual,
description,
is_active
FROM csuite_pricing.pricing_stock_level_factors
WHERE is_active = 1
ORDER BY factor;
Deve retornar 5 níveis ativos.
Próximos Passos
- ✅ Executar script SQL para adicionar os novos níveis
- ⚠️ Atualizar lógica de cálculo de
stock_levelemproduct_classificationpara incluirvery_lowevery_high - ⚠️ Atualizar stored procedures de sincronização se necessário
- ⚠️ Testar o pricing agent com os novos níveis
- ⚠️ Monitorar impacto nos preços calculados