fmatituy/selectospromanager
0
1import sqlite32import os3 4def get_db_path():5 root_db = os.path.join(os.getcwd(), 'selectos.db')6 if os.path.exists(root_db):7 return root_db8 return 'selectos.db'9 10DB_PATH = get_db_path()11 12def setup_inspecciones_tables():13 conn = sqlite3.connect(DB_PATH)14 c = conn.cursor()15 16 # 1. New Tables creation (if not exist)17 c.execute('''CREATE TABLE IF NOT EXISTS sst_inspeccion_plantillas (id INTEGER PRIMARY KEY AUTOINCREMENT, nombre TEXT, categoria TEXT, area TEXT, nivel_riesgo TEXT, fecha_creacion TEXT, estado TEXT DEFAULT 'Activo')''')18 c.execute('''CREATE TABLE IF NOT EXISTS sst_inspeccion_items (id INTEGER PRIMARY KEY AUTOINCREMENT, plantilla_id INTEGER, item_texto TEXT, categoria_item TEXT, FOREIGN KEY (plantilla_id) REFERENCES sst_inspeccion_plantillas(id))''')19 c.execute('''CREATE TABLE IF NOT EXISTS sst_inspeccion_respuestas (id INTEGER PRIMARY KEY AUTOINCREMENT, inspeccion_id INTEGER, item_id INTEGER, cumple INTEGER, observaciones TEXT, evidencia_ruta TEXT, hallazgo_id INTEGER)''')20 c.execute('''CREATE TABLE IF NOT EXISTS sst_acciones_correctivas (id INTEGER PRIMARY KEY AUTOINCREMENT, hallazgo_id INTEGER, accion_propuesta TEXT, responsable_id INTEGER, fecha_compromiso TEXT, evidencia TEXT, estado TEXT DEFAULT 'Pendiente', fecha_creacion TEXT)''')21 22 # 2. Migrations for sst_inspecciones23 for col, ctype in [('fecha', 'TEXT'), ('area', 'TEXT'), ('proceso', 'TEXT'), ('ubicacion', 'TEXT'), ('nivel_riesgo_estimado', 'TEXT')]:24 try: c.execute(f"ALTER TABLE sst_inspecciones ADD COLUMN {col} {ctype}")25 except: pass26 27 # 3. Migrations for sst_hallazgos28 for col, ctype in [29 ('inspeccion_id', 'INTEGER'), ('item_id', 'INTEGER'), ('fecha_deteccion', 'TEXT'), 30 ('tipo_hallazgo', 'TEXT'), ('area_o_ubicacion', 'TEXT'), ('descripcion', 'TEXT'), 31 ('nivel_riesgo', 'TEXT'), ('responsable_id', 'INTEGER')32 ]:33 try: c.execute(f"ALTER TABLE sst_hallazgos ADD COLUMN {col} {ctype}")34 except: pass35 36 # 4. Migrations for sst_acciones_correctivas (Conflict resolution)37 for col, ctype in [38 ('hallazgo_id', 'INTEGER'), 39 ('accion_propuesta', 'TEXT'), 40 ('responsable_id', 'INTEGER'), 41 ('fecha_compromiso', 'TEXT'), 42 ('estado', "TEXT DEFAULT 'Pendiente'")43 ]:44 try: c.execute(f"ALTER TABLE sst_acciones_correctivas ADD COLUMN {col} {ctype}")45 except: pass46 47 # Seed Mejorado48 c.execute("SELECT COUNT(*) FROM sst_inspeccion_plantillas")49 if c.fetchone()[0] == 0:50 # EXTINTORES51 c.execute("INSERT INTO sst_inspeccion_plantillas (nombre, categoria, area, nivel_riesgo, fecha_creacion) VALUES ('Inspección de Extintores', 'Emergencias', 'Todas', 'Medio', '2026-03-16')")52 tid_ext = c.lastrowid53 items_ext = [('Presión en rango verde', 'Funcionalidad'), ('Manguera sin obstrucciones', 'Físico'), ('Sello de seguridad intacto', 'Seguridad'), ('Fecha de recarga vigente', 'Cumplimiento')]54 for text, cat in items_ext:55 c.execute("INSERT INTO sst_inspeccion_items (plantilla_id, item_texto, categoria_item) VALUES (?,?,?)", (tid_ext, text, cat))56 57 # BOTIQUINES58 c.execute("INSERT INTO sst_inspeccion_plantillas (nombre, categoria, area, nivel_riesgo, fecha_creacion) VALUES ('Inspección de Botiquines', 'Emergencias', 'Todas', 'Bajo', '2026-03-16')")59 tid_bot = c.lastrowid60 items_bot = [('Inventario completo según FURAT', 'Contenido'), ('Elementos con fecha vigente', 'Cumplimiento'), ('Gasa y vendas limpias', 'Salud'), ('Caja en buen estado', 'Protección')]61 for text, cat in items_bot:62 c.execute("INSERT INTO sst_inspeccion_items (plantilla_id, item_texto, categoria_item) VALUES (?,?,?)", (tid_bot, text, cat))63 64 # ALTURAS65 c.execute("INSERT INTO sst_inspeccion_plantillas (nombre, categoria, area, nivel_riesgo, fecha_creacion) VALUES ('Checklist Alturas', 'Tareas Críticas', 'Obra', 'Alto', '2026-03-16')")66 tid_alt = c.lastrowid67 items_alt = [('Arnés sin costuras rotas', 'EPP'), ('Eslinga con absorbedor intacto', 'Seguridad'), ('Conectores sin oxidación', 'Equipo'), ('Puntos de anclaje certificados', 'Infraestructura')]68 for text, cat in items_alt:69 c.execute("INSERT INTO sst_inspeccion_items (plantilla_id, item_texto, categoria_item) VALUES (?,?,?)", (tid_alt, text, cat))70 71 # HERRAMIENTAS72 c.execute("INSERT INTO sst_inspeccion_plantillas (nombre, categoria, area, nivel_riesgo, fecha_creacion) VALUES ('Herramientas Manuales', 'Operativo', 'Taller', 'Medio', '2026-03-16')")73 tid_her = c.lastrowid74 items_her = [('Mangos sin grietas o fisuras', 'Físico'), ('Filos con protección', 'Seguridad'), ('Orden y aseo en el cajón', 'Entorno')]75 for text, cat in items_her:76 c.execute("INSERT INTO sst_inspeccion_items (plantilla_id, item_texto, categoria_item) VALUES (?,?,?)", (tid_her, text, cat))77 78 conn.commit()79 conn.close()80 print("Migración de tablas (v3) finalizada.")81 82if __name__ == '__main__':83 setup_inspecciones_tables()84 