Pisos Protegidos, Dependentes e Vínculos de Trabalho 🛡️
A inteligência orçamentária do Monvix não trata todos os usuários da mesma forma. O motor adapta restrições rígidas baseadas na composição familiar e na volatilidade da renda.
👨👩👧👦 Separação Rigorosa de Dependentes
No modelo de dados do Monvix, há uma distinção cirúrgica entre quem mora sob o mesmo teto e quem recebe apoio financeiro externo:
Composição Familiar
│
┌──────────────────────────┴──────────────────────────┐
▼ ▼
Dependentes que Coabitam Filhos com Pensão Externa
(residentDependents) (paysAlimony + alimonyAmount)
│ │
▼ ▼
Escala custos variáveis da casa Isolado como Obrigação Fixa
(Alimentação, Saúde, Apoio Familiar) (Blindado antes da evolução do AG)
Regras de Cálculo no Código (optimizer.py):
# Residentes afetam despesas variáveis da residência:
resident_dependents = max(0, questionnaire.residentDependents)
# Alimentação:
food = min(0.38, 0.22 + resident_dependents * 0.035)
# Saúde:
health = min(0.22, 0.08 + resident_dependents * 0.02 + (0.03 if questionnaire.age > 50 else 0))
# Apoio familiar direto:
family_support = min(0.16, resident_dependents * 0.035)
Se o usuário paga pensão alimentícia (alimonyAmount), esse valor é protegido previamente pelo módulo app/domain/obligations.py, impedindo qualquer inflação indevida no balde de alimentação da residência.
🛒 Alimentação como Piso Inviolável
Quando o usuário fornece o valor real gasto em supermercado (groceriesAmount), o sistema ativa a proteção de piso:
if details and details.paysGroceries and details.groceriesAmount > 0:
food = min(0.60, details.groceriesAmount / flexible)
food_floor = min(0.08, food)
w_food = 30.0 # Rigidez máxima na função de fitness
Essa lógica assegura que a recomendação do algoritmo nunca rebaixe o padrão nutricional da família para forçar aportes financeiros artificiais.
💼 Vínculo de Trabalho e Reserva de Emergência
A estabilidade do vínculo profissional define a magnitude e o peso relativo do balde de Reserva de Emergência:
Vínculo Empregatício (employmentType) | Meses de Reserva Alvo | Peso Relativo (em_weight) | Racional de Risco |
|---|---|---|---|
| PJ / Autônomo / Freelancer | 8 meses | 0.35 | Inexistência de FGTS, seguro-desemprego ou estabilidade. Exige colchão robusto. |
| Contrato Temporário | 7 meses | 0.30 | Risco iminente de descontinuidade contratual. |
| CLT (Carteira Assinada) | 5 meses | 0.25 | Suportado por rescisão contratual, aviso prévio, multa de 40% do FGTS e seguro. |
| Servidor Público Concursado | 3 meses | 0.18 | Altíssima previsibilidade de fluxo; permite maior alocação em investimentos de longo prazo. |
💳 Tratamento de Dívidas Críticas (Modo Avalanche)
Se questionnaire.debtLevel == "CRITICAL" ou se o modo de planejamento for DEBT_PAYOFF:
if questionnaire.debtLevel == "CRITICAL":
debt = 0.55 # 55% do saldo flexível direcionado a dívidas
investments = min(0.04, investments) # Investimentos limitados a no máx 4%
emergency = min(0.07, emergency) # Reserva mantida no mínimo preventivo
lifestyle = max(0.02, remaining - investments - emergency)
if questionnaire.planningMode == PlanningMode.DEBT_PAYOFF and questionnaire.debtLevel != "NONE":
debt = max(debt, remaining * 0.85) # 85% do saldo disponível para aniquilar juros
emergency = remaining * 0.08
investments = remaining * 0.02
lifestyle = max(0.02, remaining * 0.05)
Essa modelagem matematicamente força a supressão de ativos com rendimentos inferiores ao custo do endividamento, executando o efeito avalanche.