# Sistema de Bônus para Aniversariantes
Vou criar um sistema completo de bônus para aniversariantes que pode ser implementado em diferentes contextos (empresas, lojas, aplicativos, etc.).
## 1. Sistema de Bônus – Versão Completa
“`python
import datetime
from dataclasses import dataclass
from typing import Optional, List
import json
@dataclass
class Cliente:
id: int
nome: str
data_nascimento: datetime.date
email: str
telefone: str
data_cadastro: datetime.date
class SistemaBonusAniversariante:
def __init__(self):
self.clientes = []
self.bonus_config = {
‘desconto_percentual’: 15, # 15% de desconto
‘valor_bonus_fixo’: 20.00, # R$ 20,00 de bônus
‘validade_dias’: 30, # Válido por 30 dias
‘produtos_especiais’: True, # Inclui produtos especiais
‘frete_gratis’: True, # Frete grátis
‘mensagem_personalizada’: “Feliz Aniversário! Aproveite seu bônus especial!”
}
def cadastrar_cliente(self, nome: str, data_nascimento: str, email: str, telefone: str):
“””Cadastra um novo cliente no sistema”””
cliente_id = len(self.clientes) + 1
data_nasc = datetime.datetime.strptime(data_nascimento, “%d/%m/%Y”).date()
data_cadastro = datetime.date.today()
cliente = Cliente(
id=cliente_id,
nome=nome,
data_nascimento=data_nasc,
email=email,
telefone=telefone,
data_cadastro=data_cadastro
)
self.clientes.append(cliente)
print(f”Cliente {nome} cadastrado com sucesso! ID: {cliente_id}”)
return cliente
def verificar_aniversariantes_do_dia(self) -> List[Cliente]:
“””Retorna lista de clientes que fazem aniversário hoje”””
hoje = datetime.date.today()
aniversariantes = []
for cliente in self.clientes:
if (cliente.data_nascimento.day == hoje.day and
cliente.data_nascimento.month == hoje.month):
aniversariantes.append(cliente)
return aniversariantes
def gerar_cupom_aniversario(self, cliente: Cliente) -> dict:
“””Gera um cupom de aniversário para o cliente”””
hoje = datetime.date.today()
data_validade = hoje + datetime.timedelta(days=self.bonus_config[‘validade_dias’])
cupom = {
‘codigo’: f”ANIV{cliente.id:04d}{hoje.month:02d}{hoje.day:02d}”,
‘cliente_id’: cliente.id,
‘cliente_nome’: cliente.nome,
‘data_emissao’: hoje.strftime(“%d/%m/%Y”),
‘data_validade’: data_validade.strftime(“%d/%m/%Y”),
‘beneficios’: {
‘desconto_percentual’: f”{self.bonus_config[‘desconto_percentual’]}%”,
‘valor_bonus’: f”R$ {self.bonus_config[‘valor_bonus_fixo’]:.2f}”,
‘frete_gratis’: self.bonus_config[‘frete_gratis’],
‘produtos_especiais’: self.bonus_config[‘produtos_especiais’]
},
‘mensagem’: self.bonus_config[‘mensagem_personalizada’],
‘utilizado’: False
}
return cupom
def enviar_bonus_aniversariante(self, cliente: Cliente):
“””Envia o bônus de aniversário para o cliente”””
cupom = self.gerar_cupom_aniversario(cliente)
# Simulação do envio
print(“\n” + “=”*50)
print(“🎉 BÔNUS DE ANIVERSÁRIO ENVIADO! 🎉”)
print(“=”*50)
print(f”Para: {cliente.nome}”)
print(f”Email: {cliente.email}”)
print(f”Telefone: {cliente.telefone}”)
print(f”\nCupom: {cupom[‘codigo’]}”)
print(f”Validade: até {cupom[‘data_validade’]}”)
print(f”\nBenefícios:”)
print(f” • Desconto de {cupom[‘beneficios’][‘desconto_percentual’]}”)
print(f” • Bônus de {cupom[‘beneficios’][‘valor_bonus’]}”)
print(f” • Frete Grátis: {‘Sim’ if cupom[‘beneficios’][‘frete_gratis’] else ‘Não’}”)
print(f” • Acesso a produtos especiais: {‘Sim’ if cupom[‘beneficios’][‘produtos_especiais’] else ‘Não’}”)
print(f”\n{cupom[‘mensagem’]}”)
print(“=”*50)
return cupom
def processar_aniversariantes_diarios(self):
“””Processa todos os aniversariantes do dia”””
aniversariantes = self.verificar_aniversariantes_do_dia()
if not aniversariantes:
print(“Nenhum aniversariante hoje.”)
return []
print(f”\n🎂 {len(aniversariantes)} cliente(s) faz(em) aniversário hoje!”)
cupons_gerados = []
for cliente in aniversariantes:
cupom = self.enviar_bonus_aniversariante(cliente)
cupons_gerados.append(cupom)
return cupons_gerados
# Exemplo de uso
def exemplo_sistema_completo():
sistema = SistemaBonusAniversariante()
# Cadastrar alguns clientes
sistema.cadastrar_cliente(“João Silva”, “15/10/1990”, “[email protected]”, “(11) 99999-9999”)
sistema.cadastrar_cliente(“Maria Santos”, “15/10/1985”, “[email protected]”, “(11) 98888-8888”)
sistema.cadastrar_cliente(“Pedro Costa”, “20/11/1995”, “[email protected]”, “(11) 97777-7777”)
# Processar aniversariantes do dia (simula data atual = 15/10)
print(“\n📅 PROCESSANDO ANIVERSARIANTES DO DIA:”)
sistema.processar_aniversariantes_diarios()
# Executar exemplo
if __name__ == “__main__”:
exemplo_sistema_completo()
“`
## 2. Versão Simplificada para Lojas/Comércio
“`python
import datetime
class BonusAniversarioLoja:
@staticmethod
def calcular_bonus_aniversario(valor_compra, eh_aniversariante, cliente_fidelidade=False):
“””
Calcula bônus para aniversariantes
Args:
valor_compra: Valor total da compra
eh_aniversariante: True se é aniversário do cliente
cliente_fidelidade: True se é cliente fidelidade
Returns:
dict: Desconto aplicado e valor final
“””
desconto = 0
if eh_aniversariante:
# Desconto base para aniversariantes
desconto = 0.15 # 15%
# Bônus adicional para clientes fidelidade
if cliente_fidelidade:
desconto += 0.05 # +5%
# Bônus progressivo por valor da compra
if valor_compra > 500:
desconto += 0.05 # +5% para compras acima de R$ 500
elif valor_compra > 200:
desconto += 0.03 # +3% para compras acima de R$ 200
valor_desconto = valor_compra * desconto
valor_final = valor_compra – valor_desconto
return {
‘valor_original’: valor_compra,
‘desconto_percentual’: desconto * 100,
‘valor_desconto’: valor_desconto,
‘valor_final’: valor_final,
‘frete_gratis’: eh_aniversariante and valor_compra > 100
}
# Exemplo de uso
def exemplo_loja():
print(“🛍️ SISTEMA DE BÔNUS PARA ANIVERSARIANTES – LOJA”)
print(“-” * 50)
# Caso 1: Cliente aniversariante comum
resultado1 = BonusAniversarioLoja.calcular_bonus_aniversario(
valor_compra=300.00,
eh_aniversariante=True,
cliente_fidelidade=False
)
print(“\nCaso 1: Cliente aniversariante – Compra de R$ 300,00″)
print(f”Desconto: {resultado1[‘desconto_percentual’]:.1f}%”)
print(f”Valor do desconto: R$ {resultado1[‘valor_desconto’]:.2f}”)
print(f”Valor final: R$ {resultado1[‘valor_final’]:.2f}”)
print(f”Frete grátis: {‘Sim’ if resultado1[‘frete_gratis’] else ‘Não’}”)
# Caso 2: Cliente aniversariante fidelidade
resultado2 = BonusAniversarioLoja.calcular_bonus_aniversario(
valor_compra=600.00,
eh_aniversariante=True,
cliente_fidelidade=True
)
print(“\nCaso 2: Cliente fidelidade aniversariante – Compra de R$ 600,00″)
print(f”Desconto: {resultado2[‘desconto_percentual’]:.1f}%”)
print(f”Valor do desconto: R$ {resultado2[‘valor_desconto’]:.2f}”)
print(f”Valor final: R$ {resultado2[‘valor_final’]:.2f}”)
print(f”Frete grátis: {‘Sim’ if resultado2[‘frete_gratis’] else ‘Não’}”)
# Executar exemplo
exemplo_loja()
“`
## 3. Modelos de Bônus para Diferentes Segmentos
“`python
class ModelosBonus:
@staticmethod
def get_modelo_restaurante():
return {
‘nome’: “Restaurante/Bar”,
‘beneficios’: [
“Taça de espumante grátis”,
“Sobremesa especial cortesia”,
“20% de desconto na conta”,
“Foto com a equipe + postagem nas redes sociais”
],
‘validade’: “Dia do aniversário + 7 dias”,
‘requisitos’: “Apresentação de documento com data de nascimento”
}
@staticmethod
def get_modelo_ecommerce():
return {
‘nome’: “E-commerce”,
‘beneficios’: [
“Cupom de 15% OFF”,
“Frete grátis em qualquer compra”,
“Acesso antecipado a promoções”,
“Presente surpresa na primeira compra do mês”
],
‘validade’: “30 dias”,
‘automacao’: “Email automático 3 dias antes”
}
@staticmethod
def get_modelo_academia():
return {
‘nome’: “Academia/Espaço Fitness”,
‘beneficios’: [
“Mês grátis”,
“Aula personalizada cortesia”,
“Avaliação física gratuita”,
“Kit presente (toalha + squeeze)”
],
‘validade’: “Mês do aniversário”,
‘observacao’: “Válido para planos anuais”
}
@staticmethod
def get_modelo_salao_beleza():
return {
‘nome’: “Salão de Beleza”,
‘beneficios’: [
“Corte ou escova grátis”,
“30% OFF em qualquer serviço”,
“Kit produtos da casa”,

“Brinde especial”
],
‘validade’: “Semana do aniversário”,
‘agendamento’: “Prioridade no agendamento”
}
# Mostrar todos os modelos
print(“📋 MODELOS DE BÔNUS POR SEGMENTO”)
print(“=” * 50)
modelos = ModelosBonus()
segmentos = [
modelos.get_modelo_restaurante(),
modelos.get_modelo_ecommerce(),
modelos.get_modelo_academia(),
modelos.get_modelo_salao_beleza()
]
for segmento in segmentos:
print(f”\n🏢 {segmento[‘nome’]}”)
print(“-” * 30)
print(“Benefícios:”)
for beneficio in segmento[‘beneficios’]:
print(f” • {beneficio}”)
print(f”Validade: {segmento[‘validade’]}”)
if ‘requisitos’ in segmento:
print(f”Requisitos: {segmento[‘requisitos’]}”)
if ‘automacao’ in segmento:
print(f”Automação: {segmento[‘automacao’]}”)
if ‘agendamento’ in segmento:
print(f”Agendamento: {segmento[‘agendamento’]}”)
“`
## 4. Dashboard de Controle (Versão Web Simples)
“`html