133 lines
3.6 KiB
Bash
133 lines
3.6 KiB
Bash
#!/bin/bash
|
|
|
|
echo "🚀 Inicializando Sistema de Checklists..."
|
|
echo ""
|
|
|
|
# Esperar a que PostgreSQL esté listo
|
|
echo "⏳ Esperando a que PostgreSQL esté listo..."
|
|
sleep 5
|
|
|
|
# Crear usuarios
|
|
echo "👥 Creando usuarios de prueba..."
|
|
|
|
docker-compose exec -T backend python << EOF
|
|
from app.core.database import SessionLocal
|
|
from app.models import User
|
|
from app.core.security import get_password_hash
|
|
|
|
db = SessionLocal()
|
|
|
|
# Crear admin
|
|
admin = User(
|
|
username='admin',
|
|
password_hash=get_password_hash('admin123'),
|
|
role='admin',
|
|
email='admin@taller.com',
|
|
full_name='Administrador Sistema'
|
|
)
|
|
db.add(admin)
|
|
|
|
# Crear mecánico
|
|
mechanic = User(
|
|
username='mecanico1',
|
|
password_hash=get_password_hash('mecanico123'),
|
|
role='mechanic',
|
|
email='mecanico@taller.com',
|
|
full_name='Juan Pérez'
|
|
)
|
|
db.add(mechanic)
|
|
|
|
db.commit()
|
|
print('✅ Usuarios creados exitosamente')
|
|
EOF
|
|
|
|
# Crear checklist de ejemplo
|
|
echo "📋 Creando checklist de ejemplo..."
|
|
|
|
docker-compose exec -T backend python << EOF
|
|
from app.core.database import SessionLocal
|
|
from app.models import Checklist, Question
|
|
|
|
db = SessionLocal()
|
|
|
|
# Crear checklist
|
|
checklist = Checklist(
|
|
name='Mantenimiento Preventivo',
|
|
description='Checklist estándar de mantenimiento preventivo',
|
|
ai_mode='assisted',
|
|
scoring_enabled=True,
|
|
is_active=True,
|
|
created_by=1
|
|
)
|
|
db.add(checklist)
|
|
db.commit()
|
|
db.refresh(checklist)
|
|
|
|
# Crear preguntas por sección
|
|
questions_data = [
|
|
# Sistema Eléctrico
|
|
('Sistema Eléctrico', 'Estado de la batería', 'good_bad', 1, True),
|
|
('Sistema Eléctrico', 'Bocina', 'pass_fail', 1, False),
|
|
('Sistema Eléctrico', 'Luces (posición, cruce, carretera)', 'pass_fail', 1, False),
|
|
('Sistema Eléctrico', 'Testigos en cuadro', 'pass_fail', 1, True),
|
|
|
|
# Frenos
|
|
('Frenos', 'Frenos (pastillas, discos)', 'pass_fail', 2, True),
|
|
('Frenos', 'Líquido de freno', 'pass_fail', 1, False),
|
|
('Frenos', 'Porcentaje de humedad', 'numeric', 1, False),
|
|
|
|
# Motor
|
|
('Motor', 'Nivel de aceite', 'pass_fail', 1, True),
|
|
('Motor', 'Fugas de aceite', 'pass_fail', 2, True),
|
|
('Motor', 'Filtro de aceite', 'status', 1, True),
|
|
('Motor', 'Fugas de refrigerante', 'pass_fail', 2, True),
|
|
|
|
# Neumáticos
|
|
('Neumáticos', 'Presión neumáticos', 'pass_fail', 1, False),
|
|
('Neumáticos', 'Banda de rodadura', 'good_bad', 1, True),
|
|
|
|
# Suspensión
|
|
('Suspensión', 'Amortiguadores', 'pass_fail', 2, True),
|
|
('Suspensión', 'Cojinetes de ruedas', 'pass_fail', 1, False),
|
|
|
|
# Varios
|
|
('Exterior', 'Estado carrocería', 'good_bad', 1, True),
|
|
('Exterior', 'Escobillas limpiaparabrisas', 'pass_fail', 1, True),
|
|
('Interior', 'Aire acondicionado', 'pass_fail', 1, False),
|
|
('Pruebas', 'Prueba dinámica del vehículo', 'pass_fail', 2, False),
|
|
]
|
|
|
|
max_score = 0
|
|
for idx, (section, text, qtype, points, photos) in enumerate(questions_data):
|
|
question = Question(
|
|
checklist_id=checklist.id,
|
|
section=section,
|
|
text=text,
|
|
type=qtype,
|
|
points=points,
|
|
order=idx + 1,
|
|
allow_photos=photos,
|
|
max_photos=3
|
|
)
|
|
db.add(question)
|
|
max_score += points
|
|
|
|
checklist.max_score = max_score
|
|
db.commit()
|
|
|
|
print(f'✅ Checklist creado con {len(questions_data)} preguntas')
|
|
print(f'✅ Puntuación máxima: {max_score}')
|
|
EOF
|
|
|
|
echo ""
|
|
echo "✅ Inicialización completada!"
|
|
echo ""
|
|
echo "🌐 Accede a la aplicación:"
|
|
echo " Frontend: http://localhost:5173"
|
|
echo " API Docs: http://localhost:8000/docs"
|
|
echo ""
|
|
echo "👥 Usuarios de prueba:"
|
|
echo " Admin: admin / admin123"
|
|
echo " Mecánico: mecanico1 / mecanico123"
|
|
echo ""
|