implantação da fase 2 e 3

This commit is contained in:
2026-06-10 20:12:20 -03:00
parent d37237ead2
commit 472484798f
33 changed files with 2915 additions and 430 deletions

View File

@@ -1,47 +1,78 @@
# db/seeds.rb
# Dados iniciais do sistema Gade Hospitalar
# Execute com: bundle exec rails db:seed
# Rodar com: docker-compose exec app bundle exec rails db:seed
puts "🌱 Criando dados iniciais..."
puts "🌱 Iniciando seeds..."
# ── Usuário Admin padrão ─────────────────────────────────────
admin = User.find_or_create_by!(email: 'admin@gade.com') do |u|
u.nome = 'Administrador Gade'
u.password = 'Gade@2026!'
u.role = :admin
u.ativo = true
end
puts " ✅ Admin criado: #{admin.email} / senha: Gade@2026!"
# ── Usuário Gerente de exemplo ───────────────────────────────
gerente = User.find_or_create_by!(email: 'gerente@gade.com') do |u|
u.nome = 'Gerente Gade'
u.password = 'Gade@2026!'
u.role = :gerente
u.ativo = true
end
puts " ✅ Gerente criado: #{gerente.email}"
# ── Configurações de preço padrão ────────────────────────────
# ─── Configurações de preço (Fase 1 + confirmação) ───────────────────────────
configs = [
{ chave: 'preco_entrega', valor: '15.00', descricao: 'Valor pago por entrega bem-sucedida (R$)' },
{ chave: 'preco_retirada', valor: '20.00', descricao: 'Valor pago por retirada de equipamento (R$)' },
{ chave: 'preco_bonus', valor: '10.00', descricao: 'Valor de bônus por meta/critério (R$)' },
{ chave: 'preco_desconto', valor: '15.00', descricao: 'Valor descontado por problema (R$)' },
{ chave: 'notificacao_whatsapp', valor: 'false', descricao: 'Notificações via WhatsApp (true/false)' },
{ chave: 'notificacao_email', valor: 'false', descricao: 'Notificações via e-mail (true/false)' },
{ chave: 'empresa_nome', valor: 'Gade Hospitalar', descricao: 'Nome da empresa exibido no sistema' },
{ tipo: :entrega, valor: 10.50, descricao: 'Entrega padrão para UBS, EMAD, STS, SAD' },
{ tipo: :retirada, valor: 8.00, descricao: 'Retirada de material nos pontos de origem' },
{ tipo: :bonus, valor: 5.00, descricao: 'Bônus por desempenho / entregas especiais' },
{ tipo: :desconto, valor: 2.00, descricao: 'Desconto aplicado por ocorrência' }
]
configs.each do |cfg|
Configuracao.find_or_create_by!(chave: cfg[:chave]) do |c|
c.valor = cfg[:valor]
c.descricao = cfg[:descricao]
configs.each do |c|
Configuracao.find_or_create_by!(tipo: c[:tipo]) do |cfg|
cfg.valor = c[:valor]
cfg.descricao = c[:descricao]
end
end
puts "#{Configuracao.count} configurações de preço"
# ─── Usuários ────────────────────────────────────────────────────────────────
usuarios = [
{
name: 'Admin Gade',
email: 'admin@gade.com',
password: 'Gade@2026!',
role: :admin,
ativo: true
},
{
name: 'Gerente Operações',
email: 'gerente@gade.com',
password: 'Gade@2026!',
role: :gerente,
ativo: true
},
{
name: 'Operador Entregas',
email: 'operador@gade.com',
password: 'Gade@2026!',
role: :operador,
ativo: true
},
# Motoristas com PIN
{ name: 'João Silva', role: :motorista, pin_acesso: '1234', ativo: true },
{ name: 'Maria Oliveira', role: :motorista, pin_acesso: '5678', ativo: true },
{ name: 'Carlos Santos', role: :motorista, pin_acesso: '9012', ativo: true }
]
usuarios.each do |u|
user = User.find_or_initialize_by(
u[:role] == :motorista ? { name: u[:name], role: :motorista } : { email: u[:email] }
)
user.assign_attributes(u.except(:email))
user.email = u[:email] || "#{u[:name].downcase.gsub(' ', '.')}@gade.local"
user.password = u[:password] || SecureRandom.hex(12) if user.new_record?
if user.save
puts "#{user.role.upcase}: #{user.name}"
else
puts " ⚠️ #{user.name}: #{user.errors.full_messages.join(', ')}"
end
puts " ✅ Config: #{cfg[:chave]} = #{cfg[:valor]}"
end
puts ""
puts "✅ Seeds concluídos!"
puts " Admin: admin@gade.com / Gade@2026!"
puts " ⚠️ ALTERE A SENHA DO ADMIN NO PRIMEIRO ACESSO!"
puts ""
puts "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
puts " Admin: admin@gade.com / Gade@2026!"
puts " Gerente: gerente@gade.com / Gade@2026!"
puts " Operador: operador@gade.com / Gade@2026!"
puts " Motorista João: PIN 1234"
puts " Motorista Maria: PIN 5678"
puts " Motorista Carlos: PIN 9012"
puts " ⚠️ ALTERE AS SENHAS NO PRIMEIRO ACESSO!"
puts "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"