CoolFace
Apppublic

fmatituy/selectospromanager

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
db.cpython-313.pyc905 linesDownload Raw Back to __pycache__
1�

2��i���f�SSKrSSKrSSKrSSKJr Sr\"5rS\S\4SjrSrS\S	\4S3jr	g)�N)�datetimec���[R"SS5nURS5(dUS-
n[RR	[R4"5U5n[RR
U5(aU$[RR	[RR[RR[55U5nU$)N�DB_NAMEzpro_manager.dbz.db)5�os�getenv�endswith�path�join�getcwd�exists�dirname�abspath�__file__)�env_db�root_db�src_dbs   �QC:\Users\faust\.gemini\antigravity\scratch\selectos_promanager\src\database\db.py�get_db_pathrs���
�Y�Y�y�"2�
3�F��?�?�5�!�!�6�U�?�6��g�g�l�l�2�9�9�;��/�G�	�w�w�~�~�g������W�W�\�\�"�'�'�/�/�"�'�'�/�/�(�*C�D�f�
M�F��M��password�returnc�f�[R"UR55R5$)N)�hashlib�sha256�encode�	hexdigest)rs r�
hash_passwordrs!���>�>�(�/�/�+�,�6�6�8�8rc6���[R"[5nURS5 URS5 URS5 UR	5nURS5 URS5 SHup#URSUSU35 M URS	5 URS75 URS5 SHup$URS
USU35 M URS5 URS5 URS5 URS5 URS5 URS5 URS5 URS5 SHup#URSUSU35 M URS5 URS5 URS5 URS5 URS5 SHup#URSUSU35 M URS5 URS 5 URS!5 S"Hup#URS#USU35 M URS$5 URS%5 URS&5 URS'5 URS(5 URS)5 S*Hup#URS+USU35 M S,H(nS-Hup#URS.US/USU35 M! M* S0Hup#URS1USU35 M S2Hup#URS+USU35 M URS35 URS45 URS55 URS65 URS75 URS85 URS95 URS:5 URS;5 URS<5 URS=5 URS>5 URS?5 URS@5 SAHup#URSBUSU35 M URSC5 SDHup#URSEUSU35 M URSF5 SGHup#URSHUSU35 M URSI5 SJHup#URSKUSU35 M URSL5 URSM5 URSN5 SOHup#URSPUSU35 M URSQ5 URSR5 SSHup$URSTUSU35 M URSU5 URSV5 URSW5 URSX5 URSY5 URSZ5 URS[5 URS\5 URS]5 URS^5 URS_5 URS`5 URSa5 URSb5 URSc5 URSd5 URSe5 URSf5 URSg5 URSh5 URSi5 URSj5 URSk5 SlHup#URSmUSU35 M /SnQnURSoU5 SpSq/nURSrU5 /SsQnURStU5 /SuQn	URSvU	5 URSw5 URSx5 URSy5 /SzQn8U9HnURS{U45 M URS|5 UR
5S}S}:XaCURS~5 UR
5S}nURSS�[S�5US�45 UR5 UR5 g! GM=f! GM�=f! GN�=f! GNL=f! GM1=f! GN�=f! GM�=f! GM=f! GM=f! GM�=f! GM�=f! GM�=f! GN�=f! GM�=f! GM=f! GMU=f! GM+=f! GM�=f! GM�=f! GNH=f! GN?=f! GN6=f! GN�=f! GN�=f! GM,=f)�NzPRAGMA journal_mode = WALzPRAGMA synchronous = NORMALzPRAGMA cache_size = -10000z�10        CREATE TABLE IF NOT EXISTS roles (11            id INTEGER PRIMARY KEY AUTOINCREMENT,12            nombre TEXT UNIQUE13        )14    a15        CREATE TABLE IF NOT EXISTS usuarios (16            id INTEGER PRIMARY KEY AUTOINCREMENT,17            username TEXT UNIQUE,18            password TEXT,19            rol_id INTEGER,20            nombre TEXT,21            FOREIGN KEY (rol_id) REFERENCES roles(id)22        )23    ))�empleado_id�INTEGER)�activo�INTEGER DEFAULT 1��fecha_creacion�TEXTz ALTER TABLE usuarios ADD COLUMN � a�24        CREATE TABLE IF NOT EXISTS proyectos (25            id INTEGER PRIMARY KEY AUTOINCREMENT,26            nombre TEXT,27            descripcion TEXT,28            estado TEXT,29            avance INTEGER DEFAULT 0,30            fecha_inicio TEXT,31            fecha_fin TEXT,32            cliente_id INTEGER,33            cliente_nombre TEXT,34            tipo_proyecto TEXT,35            ubicacion TEXT,36            37            -- Responsables Detallados38            director_id INTEGER,39            residente_id INTEGER,40            supervisor_id INTEGER,41            sst_id INTEGER,42            logistica_id INTEGER,43            44            FOREIGN KEY (director_id) REFERENCES usuarios(id),45            FOREIGN KEY (residente_id) REFERENCES usuarios(id),46            FOREIGN KEY (supervisor_id) REFERENCES usuarios(id),47            FOREIGN KEY (sst_id) REFERENCES usuarios(id),48            FOREIGN KEY (logistica_id) REFERENCES usuarios(id),49            FOREIGN KEY (cliente_id) REFERENCES usuarios(id)50        )51    a�52        CREATE TABLE IF NOT EXISTS crm_clientes (53            id INTEGER PRIMARY KEY AUTOINCREMENT,54            nit TEXT,55            nombre TEXT NOT NULL,56            tipo TEXT,57            industria TEXT,58            contacto_principal TEXT,59            telefono TEXT,60            email TEXT,61            direccion TEXT,62            ciudad TEXT,63            estado TEXT DEFAULT 'Activo',64            notas TEXT,65            fecha_creacion TEXT66        )67    u768        CREATE TABLE IF NOT EXISTS crm_oportunidades (69            id INTEGER PRIMARY KEY AUTOINCREMENT,70            cliente_id INTEGER,71            titulo TEXT NOT NULL,72            valor REAL DEFAULT 0,73            etapa TEXT DEFAULT 'Prospección',74            fecha_cierre TEXT,75            probabilidad INTEGER DEFAULT 50,76            responsable_id INTEGER,77            notas TEXT,78            fecha_creacion TEXT,79            FOREIGN KEY (cliente_id) REFERENCES crm_clientes(id),80            FOREIGN KEY (responsable_id) REFERENCES usuarios(id)81        )82    )��descripcionr%��	fecha_finr%)�83cliente_idr )�cliente_nombrer%)�
tipo_proyector%��	ubicacionr%)�director_idr )�residente_idr )�
supervisor_idr )�sst_idr )�logistica_idr )�
token_clienter%z!ALTER TABLE proyectos ADD COLUMN a^84        CREATE TABLE IF NOT EXISTS plantillas_formatos (85            id INTEGER PRIMARY KEY AUTOINCREMENT,86            nombre TEXT,87            tipo_formato TEXT,88            version INTEGER DEFAULT 1,89            estructura_json TEXT,90            activa BOOLEAN DEFAULT 1,91            fecha_creacion TEXT,92            creado_por TEXT93        )94    z;ALTER TABLE plantillas_formatos ADD COLUMN archivo_url TEXTa95        CREATE TABLE IF NOT EXISTS formatos_sst (96            id INTEGER PRIMARY KEY AUTOINCREMENT,97            tipo_formato TEXT,98            id_plantilla INTEGER,99            datos_completados_json TEXT,100            proyecto_id INTEGER,101            fecha TEXT,102            creado_por TEXT,103            archivo_url TEXT,104            estado TEXT DEFAULT 'Pendiente',105            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id),106            FOREIGN KEY (id_plantilla) REFERENCES plantillas_formatos(id)107        )108    z?ALTER TABLE formatos_sst ADD COLUMN datos_completados_json TEXTz8ALTER TABLE formatos_sst ADD COLUMN id_plantilla INTEGERzCALTER TABLE formatos_sst ADD COLUMN estado TEXT DEFAULT 'Pendiente'a�109        CREATE TABLE IF NOT EXISTS sst_matriz_legal (110            id INTEGER PRIMARY KEY AUTOINCREMENT,111            norma TEXT, -- Ej: Decreto 1072 de 2015112            articulo TEXT,113            descripcion TEXT,114            evidencia_requerida TEXT,115            estado_cumplimiento TEXT DEFAULT 'Pendiente', -- Cumple, No Cumple, Parcial116            fecha_verificacion TEXT,117            version_norma TEXT DEFAULT 'Original',118            derogada BOOLEAN DEFAULT 0119        )120    u121        CREATE TABLE IF NOT EXISTS sst_matriz_peligros (122            id INTEGER PRIMARY KEY AUTOINCREMENT,123            proyecto_id INTEGER,124            proceso TEXT,125            subproceso TEXT,126            zona TEXT,127            actividad TEXT,128            tarea TEXT,129            peligro_descripcion TEXT,130            clasificacion TEXT, -- Físico, Químico, Biológico, Biomecánico, etc.131            efectos_posibles TEXT,132            personas_expuestas INTEGER DEFAULT 1,133            nivel_deficiencia INTEGER, -- ND134            nivel_exposicion INTEGER,   -- NE135            nivel_probabilidad INTEGER, -- NP136            nivel_consecuencia INTEGER, -- NC137            nivel_riesgo_valor INTEGER, -- NR138            interpretacion_riesgo TEXT, -- I, II, III, IV139            controles_eliminacion TEXT,140            controles_sustitucion TEXT,141            controles_ingenieria TEXT,142            controles_administrativos TEXT,143            controles_epp TEXT,144            controles_existentes TEXT, -- Legado145            controles_propuestos TEXT, -- Legado146            accion_requerida TEXT,147            responsable TEXT,148            estado TEXT DEFAULT 'Identificado',149            fecha_evaluacion TEXT,150            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id)151        )152    ))�153subprocesor%)�tarear%)�personas_expuestasr")�nivel_probabilidadr )�controles_eliminacionr%)�controles_sustitucionr%)�controles_ingenieriar%)�controles_administrativosr%)�
controles_eppr%)�accion_requeridar%��responsabler%)�estadozTEXT DEFAULT 'Identificado')�nivel_riesgo_inicialr )�nivel_riesgo_residualr z+ALTER TABLE sst_matriz_peligros ADD COLUMN a�154        CREATE TABLE IF NOT EXISTS sst_riesgo_plan_accion (155            id INTEGER PRIMARY KEY AUTOINCREMENT,156            riesgo_id INTEGER,157            accion_correctiva TEXT,158            responsable TEXT,159            fecha_inicio TEXT,160            fecha_limite TEXT,161            estado TEXT DEFAULT 'Pendiente',162            prioridad TEXT DEFAULT 'Media',163            evidencias_json TEXT,164            FOREIGN KEY (riesgo_id) REFERENCES sst_matriz_peligros(id)165        )166    zLALTER TABLE sst_riesgo_plan_accion ADD COLUMN prioridad TEXT DEFAULT 'Media'a�167        CREATE TABLE IF NOT EXISTS sst_riesgo_evidencias (168            id INTEGER PRIMARY KEY AUTOINCREMENT,169            riesgo_id INTEGER,170            archivo_nombre TEXT,171            archivo_ruta TEXT,172            tipo_evidencia TEXT,173            fecha_carga TEXT,174            usuario_id INTEGER,175            FOREIGN KEY (riesgo_id) REFERENCES sst_matriz_peligros(id)176        )177    a�178        CREATE TABLE IF NOT EXISTS sst_riesgo_historial (179            id INTEGER PRIMARY KEY AUTOINCREMENT,180            riesgo_id INTEGER,181            fecha_cambio TEXT,182            usuario_id INTEGER,183            campo_modificado TEXT,184            valor_anterior TEXT,185            valor_nuevo TEXT,186            FOREIGN KEY (riesgo_id) REFERENCES sst_matriz_peligros(id)187        )188    u^189        CREATE TABLE IF NOT EXISTS sst_plan_anual (190            id INTEGER PRIMARY KEY AUTOINCREMENT,191            anio INTEGER DEFAULT 2026,192            nombre_actividad TEXT,193            descripcion TEXT, -- NUEVO194            tipo_actividad TEXT, -- Inspección, Capacitación, Simulacro, Auditoría, Médica, Mantenimiento195            fase_phva TEXT, -- Planear, Hacer, Verificar, Actuar196            area_responsable TEXT,197            responsable_id INTEGER,198            frecuencia TEXT, -- Mensual, Trimestral, Semestral, Anual, Única199            presupuesto_estimado REAL DEFAULT 0.0,200            fecha_programada TEXT,201            hora_programada TEXT, -- NUEVO202            duracion_estimada TEXT, -- NUEVO (ej: 2h 30m)203            fecha_ejecucion TEXT,204            avance_porcentaje INTEGER DEFAULT 0,205            estado TEXT DEFAULT 'Programada', -- Programada, En ejecución, Completada, Vencida, Borrador206            207            -- Enfoque SST y Participantes208            riesgo_id INTEGER, -- Link IPVR209            tipo_capacitacion TEXT, -- Técnica, Normativa, Soft Skills, etc.210            es_obligatoria BOOLEAN DEFAULT 1,211            participantes_json TEXT, -- Lista de IDs de trabajadores asistentes212            213            -- Seguimiento y Control214            indicador_esperado TEXT,215            metodo_verificacion TEXT,216            evidencia_requerida TEXT,217            evidencia_json TEXT, -- Lista de URLs de soportes (fotos, actas, PDFs)218            219            FOREIGN KEY (responsable_id) REFERENCES usuarios(id),220            FOREIGN KEY (riesgo_id) REFERENCES sst_matriz_peligros(id)221        )222    ))�aniozINTEGER DEFAULT 2026r')�hora_programadar%��duracion_estimadar%)�	riesgo_idr )�tipo_capacitacionr%)�es_obligatoriazBOOLEAN DEFAULT 1)�participantes_jsonr%)�indicador_esperador%)�metodo_verificacionr%)�evidencia_requeridar%z&ALTER TABLE sst_plan_anual ADD COLUMN u
223        CREATE TABLE IF NOT EXISTS sst_gestion_medica (224            id INTEGER PRIMARY KEY AUTOINCREMENT,225            usuario_id INTEGER,226            tipo_examen TEXT, -- Ingreso, Periódico, Egreso227            fecha_examen TEXT,228            concepto_aptitud TEXT, -- Apto, Apto con restricciones, No Apto229            recomendaciones TEXT, -- Enmascarado/Restringido según LOPD230            vencimiento_examen TEXT,231            entidad_medica TEXT,232            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)233        )234    u235        CREATE TABLE IF NOT EXISTS sst_inspecciones (236            id INTEGER PRIMARY KEY AUTOINCREMENT,237            fecha TEXT,238            area TEXT,239            proceso TEXT,240            tipo_inspeccion TEXT, -- Puestos de trabajo, EPP, Alturas, Eléctrica241            inspector_id INTEGER,242            ubicacion TEXT,243            nivel_riesgo_estimado TEXT,244            estado TEXT DEFAULT 'En proceso', -- En proceso, Finalizada, Cerrada245            246            -- Legado / Adicionales247            proyecto_id INTEGER,248            entidad TEXT, -- Empresa o Contratista249            datos_json TEXT, -- Estructura flexible para checklist respuestas250            geolocalizacion TEXT,251            foto_evidencia_url TEXT,252            firma_inspector_url TEXT,253            firma_auditado_url TEXT,254            calificacion_final REAL DEFAULT 100.0,255            256            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id) ON DELETE CASCADE,257            FOREIGN KEY (inspector_id) REFERENCES usuarios(id) ON DELETE SET NULL258        )259    u-260        CREATE TABLE IF NOT EXISTS sst_hallazgos (261            id INTEGER PRIMARY KEY AUTOINCREMENT,262            inspeccion_id INTEGER,263            tipo_hallazgo TEXT, -- Acto Inseguro, Condición Insegura, Auditoría, Reporte Externo264            fecha_deteccion TEXT,265            area_o_ubicacion TEXT,266            proceso_o_actividad TEXT,267            usuario_reporta_id INTEGER,268            descripcion TEXT,269            causa_probable TEXT,270            categoria_hallazgo TEXT,271            nivel_riesgo TEXT, -- Bajo, Medio, Alto, Crítico272            evidencia_url TEXT,273            documentos_adjuntos_json TEXT,274            comentarios_json TEXT,275            accion_correctiva_id INTEGER, -- Link a sst_plan_accion o sst_capa276            estado TEXT DEFAULT 'Abierto', -- Abierto, En proceso, Pendiente verificación, Cerrado277            FOREIGN KEY (inspeccion_id) REFERENCES sst_inspecciones(id),278            FOREIGN KEY (usuario_reporta_id) REFERENCES usuarios(id),279            FOREIGN KEY (accion_correctiva_id) REFERENCES sst_plan_accion(id)280        )281    )282)�fecha_deteccionr%)�area_o_ubicacionr%)�proceso_o_actividadr%)�usuario_reporta_idr )�causa_probabler%)�categoria_hallazgor%)�documentos_adjuntos_jsonr%)�comentarios_jsonr%)�responsable_idr )�item_idr z%ALTER TABLE sst_hallazgos ADD COLUMN ub283        CREATE TABLE IF NOT EXISTS sst_capa (284            id INTEGER PRIMARY KEY AUTOINCREMENT,285            fuente_id INTEGER, -- ID de accidente, auditoría o inspección286            fuente_tipo TEXT, -- 'Accidente', 'Inspección', 'Auditoría'287            hallazgo TEXT,288            analisis_causa TEXT,289            accion_propuesta TEXT,290            responsable_id INTEGER,291            fecha_compromiso TEXT,292            fecha_cierre TEXT,293            estado TEXT DEFAULT 'Abierta',294            reincidencia BOOLEAN DEFAULT 0,295            FOREIGN KEY (responsable_id) REFERENCES usuarios(id)296        )297    a�298        CREATE TABLE IF NOT EXISTS sst_inspeccion_plantillas (299            id INTEGER PRIMARY KEY AUTOINCREMENT,300            nombre TEXT,301            descripcion TEXT,302            categoria TEXT, -- Seguridad General, Alturas, EPP, Maquinaria, etc.303            area TEXT,304            nivel_riesgo TEXT,305            fecha_creacion TEXT,306            estado TEXT DEFAULT 'Activo'307        )308    a+309        CREATE TABLE IF NOT EXISTS sst_inspeccion_items (310            id INTEGER PRIMARY KEY AUTOINCREMENT,311            plantilla_id INTEGER,312            item_texto TEXT,313            categoria_item TEXT,314            FOREIGN KEY (plantilla_id) REFERENCES sst_inspeccion_plantillas(id)315        )316    a:317        CREATE TABLE IF NOT EXISTS sst_inspeccion_respuestas (318            id INTEGER PRIMARY KEY AUTOINCREMENT,319            inspeccion_id INTEGER,320            item_id INTEGER,321            cumple BOOLEAN, -- 1 o 0322            observaciones TEXT,323            evidencia_ruta TEXT,324            hallazgo_id INTEGER,325            serial_equipo TEXT,326            FOREIGN KEY (inspeccion_id) REFERENCES sst_inspecciones(id),327            FOREIGN KEY (item_id) REFERENCES sst_inspeccion_items(id),328            FOREIGN KEY (hallazgo_id) REFERENCES sst_hallazgos(id)329        )330    u�331        CREATE TABLE IF NOT EXISTS sst_acciones_correctivas (332            id INTEGER PRIMARY KEY AUTOINCREMENT,333            accidente_id INTEGER, -- Para accidentes334            hallazgo_id INTEGER, -- Para hallazgos de inspección335            accion_propuesta TEXT,336            responsable_id INTEGER,337            fecha_compromiso TEXT,338            fecha_creacion TEXT,339            prioridad TEXT DEFAULT 'Media',340            estado TEXT DEFAULT 'Pendiente',341            FOREIGN KEY (accidente_id) REFERENCES accidentes_laborales(id),342            FOREIGN KEY (hallazgo_id) REFERENCES sst_hallazgos(id),343            FOREIGN KEY (responsable_id) REFERENCES usuarios(id)344        )345    a�346        CREATE TABLE IF NOT EXISTS sst_plan_accion (347            id INTEGER PRIMARY KEY AUTOINCREMENT,348            descripcion TEXT,349            prioridad TEXT,350            estado TEXT DEFAULT 'Pendiente',351            fecha_limite TEXT,352            responsable_id INTEGER,353            proyecto_id INTEGER,354            FOREIGN KEY (responsable_id) REFERENCES usuarios(id),355            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id)356        )357    ))�investigacion_idr )�	actividadr%z'ALTER TABLE sst_plan_accion ADD COLUMN )�accidentes_laborales�sst_incidentes))�etapa_flujozTEXT DEFAULT "Reportado"��	prioridadzTEXT DEFAULT "Media")�riesgo_score�INTEGER DEFAULT 0zALTER TABLE z ADD COLUMN ))�metodologia_5_porquesr%)�metodologia_ishikawar%)�arbol_causas_jsonr%)�analisis_ia_sarar%)�severidad_dias_perdidosrbz+ALTER TABLE sst_investigaciones ADD COLUMN ))�tipo_accionzTEXT DEFAULT "Correctiva"r_)�costo_estimado�REAL DEFAULT 0)�avance_progresorbaj358        CREATE TABLE IF NOT EXISTS sst_indicadores_mensuales (359            id INTEGER PRIMARY KEY AUTOINCREMENT,360            mes_anio TEXT UNIQUE, -- Ej: 2024-03361            horas_hombre_trabajadas INTEGER,362            num_trabajadores INTEGER,363            tasa_frecuencia REAL,364            indice_severidad REAL,365            tasa_mortalidad REAL366        )367    ah368        CREATE TABLE IF NOT EXISTS sst_chat_history (369            id INTEGER PRIMARY KEY AUTOINCREMENT,370            rol_nombre TEXT,371            usuario_id INTEGER,372            mensaje_usuario TEXT,373            respuesta_ia TEXT,374            timestamp TEXT DEFAULT CURRENT_TIMESTAMP,375            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)376        )377    a�378        CREATE TABLE IF NOT EXISTS sst_investigaciones (379            id INTEGER PRIMARY KEY AUTOINCREMENT,380            relacion_tipo TEXT, -- 'Accidente' o 'Incidente'381            relacion_id INTEGER,382            metodo TEXT, -- 'Arbol de Causas', '5 Porques'383            hallazgos TEXT,384            conclusiones TEXT,385            investigador_id INTEGER,386            fecha_investigacion TEXT,387            FOREIGN KEY (investigador_id) REFERENCES usuarios(id)388        )389    a�390        CREATE TABLE IF NOT EXISTS sst_audit_trail (391            id INTEGER PRIMARY KEY AUTOINCREMENT,392            usuario_id INTEGER,393            timestamp TEXT DEFAULT CURRENT_TIMESTAMP,394            modulo TEXT,395            accion TEXT,396            valor_anterior TEXT,397            valor_nuevo TEXT,398            hash_integridad TEXT -- Firmado para inmutabilidad simulada399        )400    aY401        CREATE TABLE IF NOT EXISTS sst_auditoria (402            id INTEGER PRIMARY KEY AUTOINCREMENT,403            usuario_id INTEGER,404            accion TEXT,405            modulo TEXT,406            referencia_id INTEGER,407            detalles TEXT,408            fecha TEXT,409            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)410        )411    a�412        CREATE TABLE IF NOT EXISTS accidentes_laborales (413            id INTEGER PRIMARY KEY AUTOINCREMENT,414            usuario_id INTEGER,415            proyecto_id INTEGER,416            fecha_accidente TEXT,417            lugar TEXT,418            descripcion TEXT,419            gravedad TEXT,420            testigos TEXT,421            fecha_reporte TEXT,422            estado TEXT DEFAULT 'Reportado',423            evidencia_url TEXT,424            investigador_id INTEGER,425            causa_raiz TEXT,426            tipo_lesion TEXT,427            parte_cuerpo TEXT,428            incapacidad_dias INTEGER,429            reporte_arl TEXT,430            tipo_vinculacion TEXT,431            cargo_afectado TEXT,432            mecanismo_accidente TEXT,433            agente_accidente TEXT,434            jornada_suceso TEXT,435            fecha_notificacion_arl TEXT,436            FOREIGN KEY (usuario_id) REFERENCES usuarios(id),437            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id)438        )439    zAALTER TABLE accidentes_laborales ADD COLUMN tipo_vinculacion TEXTz?ALTER TABLE accidentes_laborales ADD COLUMN cargo_afectado TEXTzDALTER TABLE accidentes_laborales ADD COLUMN mecanismo_accidente TEXTzAALTER TABLE accidentes_laborales ADD COLUMN agente_accidente TEXTz?ALTER TABLE accidentes_laborales ADD COLUMN jornada_suceso TEXTzGALTER TABLE accidentes_laborales ADD COLUMN fecha_notificacion_arl TEXTa�440        CREATE TABLE IF NOT EXISTS sst_incidentes (441            id INTEGER PRIMARY KEY AUTOINCREMENT,442            usuario_id INTEGER,443            proyecto_id INTEGER,444            fecha_incidente TEXT,445            lugar TEXT,446            descripcion TEXT,447            fecha_reporte TEXT,448            estado TEXT DEFAULT 'Reportado',449            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)450        )451    u�452        CREATE TABLE IF NOT EXISTS sst_permisos_trabajo (453            id INTEGER PRIMARY KEY AUTOINCREMENT,454            proyecto_id INTEGER,455            solicitante_id INTEGER,456            supervisor_id INTEGER,457            estado TEXT DEFAULT 'Borrador', -- Borrador, Pendiente, Aprobado, Cerrado, Cancelado458            tipo_trabajo TEXT, -- Alturas, Caliente, Eléctrico, Espacio Confinado, Izaje, etc.459            fecha_emision TEXT,460            fecha_vencimiento TEXT,461            descripcion_tarea TEXT,462            riesgos_json TEXT, -- Almacena lista de riesgos dinámicos463            medidas_json TEXT, -- Almacena medidas de control464            geolocalizacion TEXT,465            firma_autorizado TEXT,466            tenant_id TEXT DEFAULT 'default', -- Preparado para SaaS Enterprise467            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id),468            FOREIGN KEY (solicitante_id) REFERENCES usuarios(id),469            FOREIGN KEY (supervisor_id) REFERENCES usuarios(id)470        )471    )r#)�descriptionr%)�vigenciar%��personal_operativo_jsonr%)�controles_verificados_jsonr%)�aro_idr )�jsa_idr )�avalado_por_she_idr )�fecha_aval_sher%)�comentarios_sher%)�472usuario_idr z,ALTER TABLE sst_permisos_trabajo ADD COLUMN a�473        CREATE TABLE IF NOT EXISTS sst_solicitudes_permisos (474            id INTEGER PRIMARY KEY AUTOINCREMENT,475            proyecto_id INTEGER,476            solicitante_id INTEGER,477            responsable_sst_id INTEGER,478            fecha_solicitud TEXT,479            estado TEXT DEFAULT 'Pendiente',480            detalles TEXT,481            comentarios TEXT,482            consecutivo TEXT,483            actividad_id INTEGER,484            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id)485        )486    ))�consecutivor%)�actividad_idr )�solicitante_idr )�fecha_solicitudr%z0ALTER TABLE sst_solicitudes_permisos ADD COLUMN u�487        CREATE TABLE IF NOT EXISTS empleados (488            id INTEGER PRIMARY KEY AUTOINCREMENT,489            nombre TEXT NOT NULL,490            tipo_documento TEXT DEFAULT 'Cédula de Ciudadanía',491            documento TEXT NOT NULL UNIQUE,492            cargo TEXT,493            area TEXT,494            telefono TEXT,495            correo TEXT,496            fecha_ingreso TEXT,497            estado TEXT DEFAULT 'Activo',498            tipo_contrato TEXT,499            hoja_vida TEXT,500            eps TEXT,501            arl TEXT,502            fondo_pension TEXT,503            nivel_riesgo TEXT,504            ciudad TEXT,505            centro_trabajo TEXT,506            proyecto_id INTEGER,507            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id)508        )509    )	)�tipo_documentou%TEXT DEFAULT "Cédula de Ciudadanía")�epsr%)�arlr%)�
fondo_pensionr%)�nivel_riesgor%)�ciudadr%)�centro_trabajor%��proyecto_idr )�	firma_urlr%z!ALTER TABLE empleados ADD COLUMN ue510        CREATE TABLE IF NOT EXISTS sst_cursos (511            id INTEGER PRIMARY KEY AUTOINCREMENT,512            nombre TEXT NOT NULL,513            proyecto_id INTEGER,514            fecha_sesion TEXT,515            temas_tratados TEXT,516            descripcion TEXT,517            duracion TEXT, -- Ej: 40h518            tipo TEXT, -- Inducción, Reinducción, SST Obligatorio, Técnico519            periodicidad_reinduccion INTEGER DEFAULT 12, -- Meses para reinducción520            obligatorio BOOLEAN DEFAULT 1,521            entidad TEXT, -- SENA, ARL, o Empresa Propia522            instructor_interno BOOLEAN DEFAULT 0,523            personal_json TEXT, -- Lista de IDs de trabajadores asistentes524            observaciones TEXT,525            estado TEXT DEFAULT 'Activo',526            fecha_registro TEXT,527            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id)528        )529    )r�)�fecha_sesionr%)�temas_tratadosr%)�
observacionesr%z"ALTER TABLE sst_cursos ADD COLUMN a�530        CREATE TABLE IF NOT EXISTS sst_certificaciones (531            id INTEGER PRIMARY KEY AUTOINCREMENT,532            usuario_id INTEGER,533            tipo TEXT,534            fecha_emision TEXT,535            fecha_vencimiento TEXT,536            entidad TEXT,537            archivo_url TEXT,538            estado TEXT DEFAULT 'Vigente',539            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)540        )541    aZ542        CREATE TABLE IF NOT EXISTS activos_certificaciones (543            id INTEGER PRIMARY KEY AUTOINCREMENT,544            activo_id INTEGER,545            tipo TEXT,546            fecha_emision TEXT,547            fecha_vencimiento TEXT,548            entidad TEXT,549            archivo_url TEXT,550            estado TEXT DEFAULT 'Vigente'551        )552    a�553        CREATE TABLE IF NOT EXISTS inventario_herramientas (554            id INTEGER PRIMARY KEY AUTOINCREMENT,555            nombre TEXT,556            marca TEXT,557            modelo TEXT,558            serial TEXT,559            estado TEXT DEFAULT 'Disponible',560            responsable TEXT,561            ubicacion TEXT,562            fecha_compra TEXT,563            garantia TEXT,564            asignado_a_proyecto INTEGER,565            FOREIGN KEY (asignado_a_proyecto) REFERENCES proyectos(id)566        )567    )	)�marcar%)�modelor%)�serialr%r@r.)�fecha_comprar%)�garantiar%)�categoria_idr )�foto_urlr%z/ALTER TABLE inventario_herramientas ADD COLUMN z�568        CREATE TABLE IF NOT EXISTS inventario_materiales (569            id INTEGER PRIMARY KEY AUTOINCREMENT,570            nombre TEXT,571            cantidad REAL,572            unidad TEXT573        )574    uk575        CREATE TABLE IF NOT EXISTS actividades_proyecto (576            id INTEGER PRIMARY KEY AUTOINCREMENT,577            proyecto_id INTEGER,578            nombre TEXT,579            descripcion TEXT,580            tipo_actividad TEXT,581            prioridad TEXT DEFAULT 'Media', -- Baja, Media, Alta, Crítica582            duracion_estimada TEXT,583            requiere_aro BOOLEAN DEFAULT 0,584            requiere_jsa BOOLEAN DEFAULT 0,585            requiere_permiso BOOLEAN DEFAULT 0,586            fecha_inicio TEXT,587            fecha_fin TEXT,588            estado TEXT DEFAULT 'Pendiente', -- Pendiente, En proceso, Completada, Retrasada589            responsable_id INTEGER,590            responsable_sst_id INTEGER,591            personal_operativo_json TEXT, 592            tipos_permiso_json TEXT,593            hora_inicio TEXT,594            hora_fin TEXT,595            evidencias_json TEXT,596            documentos_legales_json TEXT,597            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id),598            FOREIGN KEY (responsable_id) REFERENCES usuarios(id),599            FOREIGN KEY (responsable_sst_id) REFERENCES usuarios(id)600        )601    ))�nombrer%r')r`zTEXT DEFAULT 'Media'rG)�tipo_actividadr%)�fecha_inicior%r))rBzTEXT DEFAULT 'Pendiente')�requiere_aro�BOOLEAN DEFAULT 0)�requiere_jsar�)�requiere_permisor�)�responsable_sst_idr rn)�tipos_permiso_jsonr%)�hora_inicior%)�hora_finr%z,ALTER TABLE actividades_proyecto ADD COLUMN aV602        CREATE TABLE IF NOT EXISTS equipos_externos (603            id INTEGER PRIMARY KEY AUTOINCREMENT,604            nombre TEXT NOT NULL,605            empresa_propietaria TEXT,606            tipo TEXT,607            contratista TEXT,608            numero_contrato TEXT,609            fecha_inicio TEXT,610            fecha_fin TEXT,611            valor REAL DEFAULT 0.0,612            estado TEXT DEFAULT 'Disponible',613            proyecto_actual_id INTEGER,614            responsable_actual TEXT,615            fecha_ingreso TEXT,616            FOREIGN KEY (proyecto_actual_id) REFERENCES proyectos(id)617        )618    a�619        CREATE TABLE IF NOT EXISTS movimientos_externos (620            id INTEGER PRIMARY KEY AUTOINCREMENT,621            equipo_id INTEGER,622            tipo_movimiento TEXT,623            proyecto_id INTEGER,624            usuario_id INTEGER,625            responsable TEXT,626            estado_equipo TEXT,627            notas TEXT,628            tiene_dano BOOLEAN DEFAULT 0,629            fecha_movimiento TEXT,630            firma_datos TEXT,631            FOREIGN KEY (equipo_id) REFERENCES equipos_externos(id),632            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id),633            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)634        )635    am636        CREATE TABLE IF NOT EXISTS seguimiento_obras (637            id INTEGER PRIMARY KEY AUTOINCREMENT,638            usuario_id INTEGER,639            proyecto_id INTEGER,640            actividad_id INTEGER,641            fecha TEXT,642            actividades TEXT,643            avance_registrado INTEGER,644            imagen_url TEXT,645            estado TEXT DEFAULT 'Pendiente', -- Pendiente, Aprobado, Rechazado646            FOREIGN KEY (usuario_id) REFERENCES usuarios(id),647            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id),648            FOREIGN KEY (actividad_id) REFERENCES actividades_proyecto(id)649        )650    zHALTER TABLE seguimiento_obras ADD COLUMN estado TEXT DEFAULT 'Pendiente'z=ALTER TABLE seguimiento_obras ADD COLUMN actividad_id INTEGERzOALTER TABLE actividades_proyecto ADD COLUMN avance_porcentaje INTEGER DEFAULT 0aq651        CREATE TABLE IF NOT EXISTS inv_consumo_seguimiento (652            id INTEGER PRIMARY KEY AUTOINCREMENT,653            seguimiento_id INTEGER,654            material_id INTEGER,655            cantidad REAL,656            FOREIGN KEY (seguimiento_id) REFERENCES seguimiento_obras(id),657            FOREIGN KEY (material_id) REFERENCES inv_materiales_pro(id)658        )659    a�660        CREATE TABLE IF NOT EXISTS novedades_ejecucion (661            id INTEGER PRIMARY KEY AUTOINCREMENT,662            usuario_id INTEGER,663            proyecto_id INTEGER,664            tipo TEXT,665            descripcion TEXT,666            fecha TEXT,667            impacto_dias INTEGER,668            estado TEXT DEFAULT 'Pendiente',669            evidencia_url TEXT,670            respuesta_gestion TEXT,671            gestionado_por_id INTEGER,672            fecha_gestion TEXT,673            FOREIGN KEY (usuario_id) REFERENCES usuarios(id),674            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id),675            FOREIGN KEY (gestionado_por_id) REFERENCES usuarios(id)676        )677    a678        CREATE TABLE IF NOT EXISTS material_requests (679            id INTEGER PRIMARY KEY AUTOINCREMENT,680            usuario_id INTEGER,681            proyecto_id INTEGER,682            prioridad TEXT,683            items_json TEXT,684            observaciones TEXT,685            estado TEXT DEFAULT 'Pendiente',686            respuesta_gestion TEXT,687            fecha_solicitud TEXT,688            FOREIGN KEY (usuario_id) REFERENCES usuarios(id),689            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id)690        )691    zHALTER TABLE material_requests ADD COLUMN estado TEXT DEFAULT 'Pendiente'z?ALTER TABLE material_requests ADD COLUMN respuesta_gestion TEXTa|692        CREATE TABLE IF NOT EXISTS proyectos_personal (693            id INTEGER PRIMARY KEY AUTOINCREMENT,694            proyecto_id INTEGER,695            usuario_id INTEGER,696            rol_en_proyecto TEXT,697            fecha_asignacion TEXT,698            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id),699            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)700        )701    a0702        CREATE TABLE IF NOT EXISTS proyectos_bitacora (703            id INTEGER PRIMARY KEY AUTOINCREMENT,704            proyecto_id INTEGER,705            usuario_id INTEGER,706            fecha TEXT,707            actividades_realizadas TEXT,708            personal_json TEXT,709            materiales_json TEXT,710            herramientas_json TEXT,711            clima TEXT,712            incidentes TEXT,713            fotos_json TEXT,714            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id),715            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)716        )717    a�718        CREATE TABLE IF NOT EXISTS proyectos_documentos (719            id INTEGER PRIMARY KEY AUTOINCREMENT,720            proyecto_id INTEGER,721            nombre TEXT,722            tipo TEXT, -- Plano, Contrato, Informe, Otro723            url TEXT,724            usuario_id INTEGER,725            fecha_subida TEXT,726            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id),727            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)728        )729    z�730        CREATE TABLE IF NOT EXISTS inv_categorias (731            id INTEGER PRIMARY KEY AUTOINCREMENT,732            nombre TEXT UNIQUE,733            descripcion TEXT,734            tipo_control TEXT DEFAULT 'Stock' -- Stock, Serial, Lote735        )736    z�737        CREATE TABLE IF NOT EXISTS inv_unidades (738            id INTEGER PRIMARY KEY AUTOINCREMENT,739            nombre TEXT UNIQUE, -- Unidad, Metro, Global, Kg, etc.740            abreviatura TEXT741        )742    at743        CREATE TABLE IF NOT EXISTS inv_movimientos (744            id INTEGER PRIMARY KEY AUTOINCREMENT,745            item_id INTEGER,746            item_tipo TEXT, -- 'Herramienta', 'Material', 'Equipo_Externo'747            tipo_movimiento TEXT, -- 'Entrada', 'Salida', 'Ajuste', 'Transferencia'748            cantidad REAL,749            origen TEXT, -- Bodega, Proyecto ID, Proveedor750            destino TEXT, -- Bodega, Proyecto ID, Cliente751            referencia_factura TEXT,752            usuario_id INTEGER,753            fecha TEXT,754            notas TEXT,755            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)756        )757    u#758        CREATE TABLE IF NOT EXISTS inv_hoja_vida (759            id INTEGER PRIMARY KEY AUTOINCREMENT,760            item_id INTEGER,761            item_tipo TEXT, -- 'Herramienta', 'Material', 'Equipo_Externo'762            fecha TEXT,763            evento TEXT, -- Mantenimiento, Inspección, Traslado, Asignación, Incidente, Reparación764            descripcion TEXT,765            icon TEXT DEFAULT 'event',766            color TEXT DEFAULT 'blue',767            usuario_id INTEGER,768            FOREIGN KEY (usuario_id) REFERENCES usuarios(id)769        )770    u771        CREATE TABLE IF NOT EXISTS inv_ordenes_trabajo (772            id INTEGER PRIMARY KEY AUTOINCREMENT,773            codigo_ot TEXT UNIQUE,774            proyecto_id INTEGER,775            tecnico_id INTEGER,776            estado TEXT DEFAULT 'Abierta', -- Abierta, Ejecución, Cerrada, Cancelada777            fecha_apertura TEXT,778            fecha_cierre TEXT,779            descripcion_trabajo TEXT,780            FOREIGN KEY (proyecto_id) REFERENCES proyectos(id),781            FOREIGN KEY (tecnico_id) REFERENCES usuarios(id)782        )783    a784        CREATE TABLE IF NOT EXISTS inv_asignaciones_ot (785            id INTEGER PRIMARY KEY AUTOINCREMENT,786            ot_id INTEGER,787            item_id INTEGER,788            item_tipo TEXT,789            cantidad_solicitada REAL,790            cantidad_usada REAL DEFAULT 0,791            cantidad_devuelta REAL DEFAULT 0,792            fecha_asignacion TEXT,793            estado TEXT DEFAULT 'Entregado', -- Entregado, Consumido, Devuelto794            FOREIGN KEY (ot_id) REFERENCES inv_ordenes_trabajo(id)795        )796    z�797        CREATE TABLE IF NOT EXISTS inv_tipos_material (798            id INTEGER PRIMARY KEY AUTOINCREMENT,799            nombre TEXT UNIQUE,800            estado TEXT DEFAULT 'Activo'801        )802    u803        CREATE TABLE IF NOT EXISTS inv_ubicaciones (804            id INTEGER PRIMARY KEY AUTOINCREMENT,805            nombre TEXT UNIQUE,806            tipo TEXT, -- Bodega Principal, Vehículo Técnico, Almacén Obra807            responsable TEXT,808            descripcion TEXT809        )810    aw811        CREATE TABLE IF NOT EXISTS inv_materiales_pro (812            id INTEGER PRIMARY KEY AUTOINCREMENT,813            codigo TEXT UNIQUE,814            nombre TEXT,815            tipo_id INTEGER,816            categoria_id INTEGER,817            unidad_id INTEGER,818            stock_actual REAL DEFAULT 0,819            stock_minimo REAL DEFAULT 0,820            ubicacion_id INTEGER,821            estado TEXT DEFAULT 'Activo',822            proveedor_principal TEXT,823            precio_unitario REAL DEFAULT 0,824            observaciones TEXT,825            fecha_registro TEXT,826            ultimo_movimiento TEXT,827            FOREIGN KEY (tipo_id) REFERENCES inv_tipos_material(id),828            FOREIGN KEY (categoria_id) REFERENCES inv_categorias(id),829            FOREIGN KEY (unidad_id) REFERENCES inv_unidades(id),830            FOREIGN KEY (ubicacion_id) REFERENCES inv_ubicaciones(id)831        )832    ))�tipo_idr )�stock_actualrj)�precio_unitariorjz*ALTER TABLE inv_materiales_pro ADD COLUMN ))u833Eléctrico)u	Plomería)uFerretería)�Pintura)�	Seguridad)u
Construcciónz<INSERT OR IGNORE INTO inv_tipos_material (nombre) VALUES (?))�Bodega Principalr��Admin)uCamioneta Técnica 1uVehículo Técnicou834Técnico 1zRINSERT OR IGNORE INTO inv_ubicaciones (nombre, tipo, responsable) VALUES (?, ?, ?)))�HerramientasuEquipos manuales y eléctricos�Serial)�835MaterialesuInsumos de construcción�Stock)zEquipos AlquiladoszMaquinaria de tercerosr�)�ConsumiblesuElementos de uso únicor�zYINSERT OR IGNORE INTO inv_categorias (nombre, descripcion, tipo_control) VALUES (?, ?, ?)))�Unidad�UND)�Metro�M)�	Kilogramo�KG)�Bulto�BLT)�Global�GLBzFINSERT OR IGNORE INTO inv_unidades (nombre, abreviatura) VALUES (?, ?)a.836        CREATE TABLE IF NOT EXISTS mensajes_chat (837            id INTEGER PRIMARY KEY AUTOINCREMENT,838            usuario_nombre TEXT,839            rol TEXT,840            area TEXT,841            mensaje TEXT,842            archivo_url TEXT,843            imagen_url TEXT,844            fecha TEXT845        )846    aH847        CREATE TABLE IF NOT EXISTS circulares (848            id INTEGER PRIMARY KEY AUTOINCREMENT,849            titulo TEXT,850            contenido TEXT,851            archivo_url TEXT,852            imagen_url TEXT,853            creada_por TEXT,854            fecha_publicacion TEXT,855            urgente BOOLEAN DEFAULT 0856        )857    z�858        CREATE TABLE IF NOT EXISTS lecturas_circulares (859            id INTEGER PRIMARY KEY AUTOINCREMENT,860            circular_id INTEGER,861            usuario TEXT,862            fecha_lectura TEXT863        )864    )�
Administrador�Gerente�865Supervisor�SST�	OperativouAlmacénzAsistente de Mantenimiento�Clientez/INSERT OR IGNORE INTO roles (nombre) VALUES (?)zSELECT COUNT(*) FROM usuariosrz1SELECT id FROM roles WHERE nombre='Administrador'zMINSERT INTO usuarios (username, password, rol_id, nombre) VALUES (?, ?, ?, ?)�admin�admin123zAdmin Selectos)866�sqlite3�connect�DB_PATH�execute�cursor�executemany�fetchoner�commit�close)
�conn�c�col�ctype�col_type�tbl�867tipos_init�868ubics_init�cats�unds�869roles_base�rb�admin_rol_ids
             r�init_dbr�s870���?�?�7�#�D��L�L�,�-��L�L�.�/��L�L�-�.����
�A��I�I��	��I�I�	�		�p�871��
�Y�Y�9�#��a��w�G�
H�p�872�I�I��	�>�I�I��	�$�I�I��	�$
�
��	�
�I�I�9�#��a��z�J�K�
�(�I�I��	�
�	�	�	�O�P��I�I��	� 
�	�	�	�S�T�	�	�	�L�M�	�	�	�W�X��I�I��	��I�I� � 	�F�873�� �Y�Y�D�S�E��5�'�R�
S�!�(�I�I�
�
	� 874���a�	b��I�I��	��I�I��	��I�I�"�"	�J�875���Y�Y�?��u�A�e�W�M�
N��"�I�I��	��I�I��	�8�I�I��	�2�876���Y�Y�>�s�e�1�U�G�L�
M�� �I�I��	�$�I�I��	��I�I��	��I�I��	� �I�I��	�&�I�I��	�O�877��
�Y�Y�@���Q�u�g�N�
O�O�:��V�J�C����\�#��l�3�%�q���H�I�V�:��878���Y�Y�D�S�E��5�'�R�
S���879���Y�Y�@���Q�u�g�N�
O�
��I�I�880�881	��I�I�882�883	��I�I��	��I�I��	��I�I��	��I�I��	�>
�	�	�	�U�V�	�	�	�S�T�	�	�	�X�Y�	�	�	�U�V�	�	�	�S�T�	�	�	�[�\��I�I��	��I�I��	�.�884���Y�Y�E�c�U�!�E�7�S�
T�� �I�I��	�"�885���Y�Y�I�#��a�PU�w�W�
X�
��I�I��	�2�886���Y�Y�:�3�%�q���H�
I�
��I�I��	�.D�887��
�Y�Y�;�C�5��%��I�
J�D��I�I��	��I�I��	��I�I��	�$�888���Y�Y�H���Q�u�g�V�
W�
��I�I��	��I�I��	�:�
��$�Y�Y�E�c�U�!�H�:�V�
W�%�*�I�I��	�&�I�I��	�(�I�I��	�"889���]�	^�	890���R�	S�	891���d�	e��I�I�	�		��I�I��	�(�I�I��	�892���]�	^�	893���T�	U��I�I�894�895	��I�I��	�$�I�I��	��I�I��	��I�I��	��I�I��	�$�I�I�
�
	� �I�I�
�
	� �I�I�
�
	� �I�I��	��I�I��	��I�I��	�2z�896��
�Y�Y�C�C�5��%��Q�
R�z�897w�J��M�M�P�R\�]�C�FB�C�J��M�M�f�hr�s�A�D��M�M�m�os�t�i�D��M�M�Z�\`�a��I�I��	��I�I��	��I�I��	��J���	�	�	�C�b�U�K���I�I�-�.��z�z�|�A��!��	�	�	�E�F��z�z�|�A���	�	�	�a��=��4�l�DT�U�	W�	�K�K�M��J�J�L��k&	���l	���"
���,
���P	���(�D��`	���h	���|	���
�D��	���	���\
���j	���4	���F	���6	���l	���v	���v�D���D���D��b�D���D��`	��s-�b
�b�898b�-3b'�	b/�5b8�c�c	�c�c�-c$�c-�A&c6� c>�d�d�9d�d"�d+� d4�1d<�e�e�e�;e�
b�b�b$�'b,�/b5�8b=�c�	c�c�c!�$c*�-c3�6c;�>d�d
�d�d�"d(�+d1�4d9�<e�e	�e�e�e"�username�
password_hashc���[R"[5nUR5nUR	SX45 UR5nUR
5 U(aUSUSUSUSS.$g)Nz�899        SELECT u.id, u.username, u.nombre, r.nombre as rol 900        FROM usuarios u 901        JOIN roles r ON u.rol_id = r.id 902        WHERE u.username = ? AND u.password = ?903    r���)�idr�r��rol)r�r�r�r�r�r�r�)r�r�r�r��users     r�get_userr�
sp���?�?�7�#�D����
�A��I�I��904�	"�$�
�:�:�<�D��J�J�L���1�g�4��7�d�1�g�d�ST�g�V�V�r)905r�rrrrr��strrr�r��rr�<module>r�sL����	����-��9�C�9�C�9�s�j'
�s�
�3�
r