CoolFace
Apppublic

fmatituy/selectospromanager

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

2cE�i$E����SSKJr SSKrSSKJr SSKJrJr SSKJr SSK	J3r4 SSKJrJ
r
 SS	KJrJr S5rSrSr\R("S
5\S55r\R("S5\S\4Sj55rg)�)�uiN)�datetime)�require_auth�get_current_user)�SelectosLayout)�DB_PATH)�6db_execute�
get_all_roles�)�registrar_auditoria�update_event_stagez#1e40afz#fafafaz#e2e8f0�/sst/plan_accionc
�~^^^
^�[5n[S5 [R"S5R	S[735 [R"5RS5 [R"5RS5 [R"5RS5 [R"S5RS5 [R"S	5RS85 [R"S5RS5 SSS5 [R"S
SSS9RS5RS5 SSS5 [R"[5n[RUlUR#5nUR%S5 UR'5Vs/sHn[)U5PM nnUR+5 U(dj[R"5RS5 [R,"SSSS9 [R"S5RS5 SSS5 GO�SSSSS.SS SSS.S!S"S!SS.S#S$S#SS.S%S&S%S'.S(S)S(S*S.S+S,SS-S./n/mUH<nUS.S/:�aUS0US.-S1-OS/nTR/0UES([1U50E5 M> [3[5[7TVs/sHo3S!PM	 sn555n[3[5[7TVs/sHo3SPM	 sn555n[R"5RS25 [R,"S3S4S5S69 [R8"S7S89RS95RS:5n	[R:"S;5RS<5 [R<"S=/U-S=S>9RS?5RS@5m[R<"SA/U-SAS>9RS?5RSB5m
SSS5 UUU
U4SCjn9TR?SDU105 T
R?SDU115 [R@"5RSE5 [RB"UTSSFSG9RSH5RSI5mTREW	SJ5 TRGSKSL5 TRGSMSN5 TRGSOSP5 TR?SQSR5 SSS5 SSS5 SSS5 g!,(df   GN=f!,(df   GN�=fs snf!,(df   NH=fs snfs snf!,(df   GNN=f!,(df   Nu=f!,(df   N~=f!,(df   g=f)SNu#Gestión de Medidas Correctivas SST�body�background-color: z)w-full max-w-7xl mx-auto p-4 md:p-8 gap-6z#w-full items-center justify-between�gap-0zMEJORA CONTINUA Y PHVAz?text-[9px] font-black text-slate-400 tracking-[0.3em] uppercaseuPlanes de Acción Correctivaz0text-2xl font-bold text-slate-800 tracking-tightuCRegistro de actividades para mitigación de riesgos y causas raíz.z&text-[11px] text-slate-400 font-mediumzVOLVER AL CENTRO DE CONTROL�	grid_viewc�@�[RRS5$)N�/sst/eventos-hub�r�navigate�to���]C:\Users\faust\.gemini\antigravity\scratch\selectos_promanager\src\modules\sst\plan_accion.py�<lambda>�*sst_plan_accion_hub_page.<locals>.<lambda>s��\^�\g�\g�\j�\j�k}�\~r��icon�on_clickzflat no-capsz`bg-white border border-slate-200 text-slate-600 font-bold px-6 py-2 rounded-lg text-xs shadow-sma�12                SELECT i.id, i.relacion_tipo, i.fecha_investigacion,13                       u.nombre as investigador_nombre,14                       (SELECT COUNT(*) FROM sst_plan_accion WHERE investigacion_id = i.id) as total_items,15                       (SELECT COUNT(*) FROM sst_plan_accion WHERE investigacion_id = i.id AND estado = 'Cumplido') as completed_items,16                       CASE 17                         WHEN i.relacion_tipo = 'Accidente' THEN (SELECT p.nombre FROM accidentes_laborales a JOIN proyectos p ON a.proyecto_id = p.id WHERE a.id = i.relacion_id)18                         WHEN i.relacion_tipo = 'Incidente' THEN (SELECT p.nombre FROM sst_incidentes s JOIN proyectos p ON s.proyecto_id = p.id WHERE s.id = i.relacion_id)19                         ELSE 'N/A'20                       END as proyecto_nombre21                FROM sst_investigaciones i22                LEFT JOIN usuarios u ON i.investigador_id = u.id23                ORDER BY i.id DESC24            zSw-full items-center py-20 bg-white rounded-lg border border-dashed border-slate-200�assignment_late�48pxz	slate-200)�size�coloru%No hay planes de acción programados.zCtext-[10px] font-bold text-slate-300 uppercase tracking-widest mt-4�idzID PLAN�left��name�label�field�align�
relacion_tipo�TIPO�proyecto_nombre�PROYECTO�investigador_nombre�INVESTIGADOR�fecha_investigacionzFECHA ANALISIS)r(r)r*�progresozCUMPLIMIENTO (%)�center�action��right�total_itemsr�completed_items�dzSw-full items-center gap-4 bg-white p-4 rounded-xl border border-slate-100 shadow-sm�searchz	slate-300�20px)r$r#z	Buscar...)�placeholderzborderless dense clearablezflex-1 text-sm�divzw-px h-6 bg-slate-100�TODOS LOS PROYECTOS��valuezborderless densez%text-xs font-bold text-slate-500 w-48�TODOS LOS TIPOSz%text-xs font-bold text-slate-500 w-32c�>�TnTRS:wa&UVs/sHoSTR:XdMUPM nnTRS:wa&UVs/sHoSTR:XdMUPM nnUTlgs snfs snf)Nr?r.rBr,)rA�rows)�res�r�p_filt�	rows_data�t_filt�tables  ����r�
apply_filters�/sst_plan_accion_hub_page.<locals>.apply_filtersZsw���#�C��|�|�'<�<�*-�V�#�Q�3D�1E����1U�q�#��V��|�|�'8�8�*-�T�#�Q�?�1C�v�|�|�1S�q�#��T�!$�E�J��W��Ts�A8�A8�A=�(A=zupdate:model-valuez@w-full p-2 rounded-lg bg-white border border-slate-200 shadow-sm�25)�columnsrD�row_key�26pagination�w-full shadow-nonezfflat bordered header-class="bg-slate-50 text-slate-500 font-bold text-[9px] tracking-widest uppercase"rAzbody-cell-relacion_tipoa27                        <q-td :props="props">28                            <span class="text-[9px] font-bold text-slate-500 border border-slate-100 px-2 py-0.5 rounded">{{ props.value.toUpperCase() }}</span>29                        </q-td>30                    zbody-cell-progresoa�31                        <q-td :props="props">32                            <div class="row items-center justify-center gap-2">33                                <q-linear-progress :value="props.value / 100" color="blue-8" size="4px" style="width: 60px" />34                                <span class="text-[9px] font-bold text-slate-400">{{ props.value }}%</span>35                            </div>36                        </q-td>37                    zbody-cell-actiona38                        <q-td :props="props">39                            <q-btn flat no-caps icon="arrow_forward" size="sm" color="blue-8" @click="() => $parent.$emit('manage', props.row.id)" label="Gestionar" />40                        </q-td>41                    �managec�Z�[RRSUR35$)Nz/sst/plan-accion/)rrr�args)�msgs rrr�s!��2�;�;�>�>�DU�VY�V^�V^�U_�B`�3ar)$rrr�query�style�COLOR_BG�column�classes�rowr)�button�props�sqlite3�connectr�Row�row_factory�cursor�execute�fetchall�dict�closer�append�int�sorted�list�set�input�element�select�on�cardrJ�bind_filter_from�add_slot)�user�conn�crFrDrN�prog�proyectos_lista�tipos_lista�search_fieldrKrGrHrIrJs           @@@@r�sst_plan_accion_hub_pagerzs�����D�	�=�	>�42�������!3�H�:�>�?�
�Y�Y�[�
 �
 �!L�
M�����!�!�"G�H��Y�Y�[�(�(��1��H�H�5�6�>�>�@A�B��H�H�;�<�D�D�Ew�x��H�H�b�c�k�k�mU�V�2�43�	�	�7�k�T~���U�>�*�7�7�4V�,W�I��?�?�7�+�D�&�{�{�D�����
�A�
�I�I�
�

�&'�Z�Z�\�2�\��D��G�\�D�2��J�J�L���Y�Y�[�(�(�)~���G�G�-�F�+�N��H�H�D�E�M�M�OT�U�@��44"�I��v�V�,�v��bh�i�.��N_�jp�q�2�^�Vk�v|�}�2�=M�Xm�n�'�2D�z�dl�m�%��T�G�T����	��A�NO�P]�N^�ab�Nb�A�/�0�1�]�3C�C�c�I�hi�D��$�$�&��&�"�C��I�&���#)��c�QZ�2[�QZ�A�5F�3G�QZ�2[�.\�)]�"^��$�T�#�9�.U�9�a��/A�9�.U�*V�%W�X���V�V�X�%�%�&{�|��G�G�H�K�f�E�#%�8�8��#D�#J�#J�Kg�#h�#p�#p�rB�$C�L��J�J�u�%�-�-�.E�F��Y�Y�(=�'>��'P�Xm�n�t�t�vH�I�Q�Q�Ry�z�F��Y�Y�(9�':�[�'H�Pa�b�h�h�i{�|�E�E�Fm�n�F�}�%�%��	�	�.�
�>��	�	�.�
�>��W�W�Y�&�&�'i�j��H�H�W�9�d�_a�b�j�j�k�A��� H�I���*�*�<��A��N�N�#<�?���N�N�#7�:���N�N�#5�8���H�H�X�'a�b�7k�]N�45?�	>�2�1��I�H��63�@���,3\��.U�|�|��(k�j��]N�
M��46?�	>�s��AV.�+%V�%U�5A0T6	�%=U�"A*V�U�!=V�<U�BV�&U0�4"V�U5�$3V�CU:�3AV�BV�V�%V.�647U
�U�48U�
V�49U-�)V�:50V	�V�51V�V�52V+	�'V.�.53V<z/sst/plan-accion/{inv_id}�inv_idc��
^^^^
^^^^^^^�[5m[R"[5n[RUlUR
5nURST45 UR5nU(d5UR5 [R"S5RS5$[U5nUR5 [RUUUU4Sj5mU4SjmUU
UUUUUU4SjnU4SjmU4Sjn[S	T35 [R "S545R#S[$35 [R&"5RS5 [R("5RS
5 [R&"5RS5 [R"S5RS5 [R"SUS35RS5 [R"SUSSUS35RS5 SSS5 [R*"SSUS9R-S5RS5 SSS5 [R("5RS5 [R&"5RS5 [R"S 5RS!5 /S"Qn[R."US#S$9R-S%5RS&5mSSS5 [R&"5RS'5 [R"S(5RS!5 S)S*KJn U"5V	s0sHo�SU	S+_M
 n55n	[R."U56S,S$9R-S-5RS&5mSSS5 [R&"5RS'5 [R"S.5RS!5 [R4"[6R8"5R;S/5S09R-S15RS&5m
SSS5 [R&"5RS25 [R"S35RS!5 [R."S4S5/S4S09R-S-5RS&5mSSS5 [R&"5RS65 [R"S75RS!5 [R."/S8QS9S09R-S-5RS&5mSSS5 [R*"S:US9R-S;5RS<5 SSS5 [R&"5RS=5mT"5 [R*"S>S?S@9R-SA5RSB5 SSS5 SSS5 g!,(df   GN=f!,(df   GN�=f!,(df   GN:=fs sn	f!,(df   GN�=f!,(df   GN=f!,(df   GN�=f!,(df   GN+=f!,(df   GN=f!,(df   N�=f!,(df   g=f)CNz�SELECT i.*, u.nombre as investigador_nombre FROM sst_investigaciones i LEFT JOIN usuarios u ON i.investigador_id = u.id WHERE i.id = ?z
No encontradozp-8c��>�TR5 [R"[5n[RUlUR
5nURST45 UR5Vs/sHn[U5PM nnUR5 T U(d&[R"S5RS5 O�SSSSS.SS	S57SS.SS
SSS.SSSSS.SSSSS.SSSSS.SSSSS./n[R"5RS5 [R"XCSS9RS5R!S5nUR#SS5 UR#S S!5 UR#S"S#5 UR%S$U	4S%j5 UR%SU4S&j5 SSS5 SSS5 gs snf!,(df   N=f!,(df   g=f)'Nz�SELECT p.*, u.nombre as responsable_nombre FROM sst_plan_accion p LEFT JOIN usuarios u ON p.responsable_id = u.id WHERE p.investigacion_id = ?zNo hay medidas registradas.z�w-full py-10 text-center text-slate-300 text-[10px] font-bold uppercase tracking-widest bg-white border border-dashed rounded-lg�estado�CUMPLIDOr4r'�tipor-�tipo_accionr&�	actividadu1DESCRIPCIÓN DE LA MEDIDA CORRECTIVA / PREVENTIVA�responsable�RESPONSABLE�responsable_nombre�	prioridad�	PRIORIDAD�limiteu
FECHA LÍMITE�fecha_limite�deleter6r%r7zPw-full p-2 border border-slate-200 rounded-lg shadow-sm bg-white overflow-hidden)rNrDrOrQz\flat bordered header-class="bg-slate-50 text-slate-500 font-bold text-[9px] tracking-widest"zbody-cell-estadoa�58                        <q-td :props="props">59                            <q-checkbox v-model="props.row.estado" 60                                        true-value="Cumplido" 61                                        false-value="Pendiente" 62                                        color="blue-8" 63                                        @update:model-value="() => $parent.$emit('toggle', props.row)" />64                        </q-td>65                    zbody-cell-prioridadaN66                        <q-td :props="props">67                            <span class="text-[9px] font-bold px-2 py-0.5 rounded border border-slate-100 text-slate-400 uppercase tracking-widest">68                                {{ props.value }}69                            </span>70                        </q-td>71                    zbody-cell-deletez�72                        <q-td :props="props">73                            <q-btn flat round icon="delete_outline" color="rose-2" size="sm" @click="() => $parent.$emit('delete', props.row.id)" />74                        </q-td>75                    �togglec�J>�T"URSURS5$)Nr%r~�rT)rU�update_item_statuss �rr�9plan_accion_page.<locals>.refresh_table.<locals>.<lambda>�s"���3E�c�h�h�t�n�VY�V^�V^�_g�Vh�3irc�(>�T"UR5$)Nr�)rU�delete_items �rrr��s���;�s�x�x�3Hr)�clearr^r_rr`rarbrcrdrerfrr)rZrprJr]rrro)76rtrurF�77plan_items�colsrJr��gridr{r�s78      ����r�
refresh_table�'plan_accion_page.<locals>.refresh_table�s�����79�80�����w�'��"�;�;����K�K�M��	�	�	�c�fl�en�	o�'(�z�z�|�4�|�!�d�1�g�|�81�4��82�83��
�����6�7�?�?�AC�D�&�84�X�X`�a�#�f�}�W]�^�(�3f�q|�HN�O�*�]�Ma�lr�s�(�;��_g�h�%��.�ck�l�%��T�G�T����W�W�Y�&�&�'y�z��H�H�T�D�Q�Y�Y�Zn�o���}�~���N�N�#5�8���N�N�#8�;���N�N�#5�8���H�H�X�'i�j��H�H�X�'H�I�;{��T��5�"{�z���T�s,�6G�A>G�BG	�3G�	85G	�G�86G(c�j>�[SX45 [R"SSS9 TR5 g)Nz2UPDATE sst_plan_accion SET estado = ? WHERE id = ?zEstado actualizado�info��type�r	r�notify�refresh)�item_id�statusr�s  �rr��,plan_accion_page.<locals>.update_item_status�s,����G�&�IZ�[�87�	�	�&�f�5����rc	��>�TR(d[R"SSS9$TR(d[R"SSS9$[STTRTRTRTR=(d STR45 [	TSSS	TTR5 [R"S88SSS
9 STlTR5 g)Nu$Escriba la descripción de la medida�warningr�zSeleccione un responsablez�89            INSERT INTO sst_plan_accion (investigacion_id, actividad, responsable_id, fecha_limite, prioridad, estado, tipo_accion)90            VALUES (?, ?, ?, ?, ?, 'Pendiente', ?)91        �Mediar%uSincronización Medida�PHVAzMedida sincronizada en el PHVA�positive�92cloud_done�r�rr6)rArr�r	rr�)�act�fechr{�prio_selr��resp�tipo_selrss��������r�add_item�"plan_accion_page.<locals>.add_item�s�����y�y��9�9�C�)�T�T��z�z��9�9�8�y�I�I����c�i�i����T�Z�Z����9R�7�T\�Tb�Tb�
c�	e�93	�D��J�(@�&�&�RU�R[�R[�\�94�	�	�2��,�W���	����rc�j>�[SU45 [R"SSS9 TR5 g)Nz(DELETE FROM sst_plan_accion WHERE id = ?�	Eliminador�r�r�)r�r�s �rr��%plan_accion_page.<locals>.delete_item�s*����=��z�J�95�	�	�+�I�.����rc���># �[R"[5nUR5nUR	ST45 UR5SnUS:�a[R"SUS3SS9$UR	ST45 UR5nU(a[USUSS	5 UR5 [R"S96SSS
9 [RRS5 g7f)NzXSELECT COUNT(*) FROM sst_plan_accion WHERE investigacion_id = ? AND estado != 'Cumplido'rzFaltan z medidas por cumplir.r�r�zGSELECT relacion_tipo, relacion_id FROM sst_investigaciones WHERE id = ?r�CerradozCaso formalmente cerrador��verifiedr�r)r^r_rrbrc�fetchonerr�r
rfrr)rtru�97pendientes�relr{s    �r�cerrar_caso�%plan_accion_page.<locals>.cerrar_caso�s��������w�'���K�K�M��	�	�	�l�ou�nw�x��Z�Z�\�!�_�98���>��9�9�w�z�l�2G�H�y�Y�Y�	�	�	�[�^d�]f�g��j�j�l����s�1�v�s�1�v�y�9��99�100��101�	�	�,�6�102�K�103�����)�*�s�C3C6zSeguimiento: Plan #rrz)w-full max-w-6xl mx-auto p-4 md:p-8 gap-6z]w-full justify-between items-center bg-white p-6 rounded-lg border border-slate-200 shadow-smrzTRAZABILIDAD DE MEDIDASz@text-[9px] font-black text-slate-400 tracking-[0.25em] uppercaseu'Seguimiento técnico a investigación #r%z text-xl font-bold text-slate-800z104Analista: r0z | Sincronizado el r2z=text-[9px] text-slate-400 font-bold uppercase tracking-widestzCERRAR CASO FORMALMENTEr�rzunelevated no-capsz=bg-blue-800 text-white font-bold px-8 py-2 rounded-lg text-xszPw-full p-6 bg-white rounded-lg border border-slate-200 shadow-sm items-end gap-4zflex-[2] gap-1zMEDIDA A IMPLEMENTARz3text-[8px] font-bold text-slate-300 tracking-widest)	u)Refuerzo de capacitación / Re-inducciónu#Entrega / Reposición de nuevos EPPu"Divulgación de Lección Aprendidau1Adecuación de infraestructura / área de trabajoz0Mantenimiento preventivo / correctivo de equiposz,Compra / Cambio de herramienta especializadau(Actualización de Matriz de Riesgos IPVRu.Inspección técnica detallada (Pre-operativo)u0Amonestación verbal / escrita por acto insegurozSeleccionar o escribir...)r)zGoutlined dense rounded use-input fill-input new-value-mode="add-unique"zw-fullzflex-1 gap-1r�r)�get_usuarios_para_grupos�nombre�Seleccionarzoutlined dense rounded�VENCIMIENTOz%Y-%m-%dr@z type=date outlined dense roundedz105w-28 gap-1uTIPO ACCIÓN�106Correctiva�107Preventivaz108w-24 gap-1r�)�Altar��Bajar��addz unelevated round color=blue-8 lgz	shadow-smzw-full gap-4 mt-2zVOLVER AL LISTADOc�@�[RRS5$)Nrrrrrr�"plan_accion_page.<locals>.<lambda>,s��B�K�K�N�N�K]�<^r)r z,flat no-caps color=slate-400 icon=arrow_backz=w-full text-center text-[10px] tracking-widest mt-8 font-bold)rr^r_rr`rarbrcr�rfrr)rZre�refreshablerrVrWrXrYr[r\r]rn�*modules.comunicacion.services_comunicacionr�rlr�now�strftime)r{rtrur[�invr�r��medidas_estandarr��u�usrsr�r�r�r�r�r�r�r�r�rss`          @@@@@@@@@@r�plan_accion_pager��sL������D��?�?�7�#�D��{�{�D�����
�A��I�I�W�Z`�Yb�c�109�*�*�,�C���110�111���x�x��(�0�0��7�7�112�s�)�C��J�J�L��^�^�4J��4J�l �113 � �  �114+�"115�-�f�X�6�	7�116�������!3�H�:�>�?�
�Y�Y�[�
 �
 �!L�
M�����!�!�#B�C��Y�Y�[�(�(��1��H�H�6�7�?�?�AC�D��H�H�F�s�4�y�k�R�S�[�[�\~���H�H�z�#�.C�*D�)E�EX�Y\�]r�Ys�Xt�u�v�~�~�@�@�2�117�	�	�3�*�{�[��U�/�0���9x�1y�C�����!�!�"t�u��Y�Y�[�(�(�)9�:��H�H�3�4�<�<�=r�s�118(�$��)�)�$4�<W�X�^�^�`i�j�r�r�s{�|�C�;��Y�Y�[�(�(��8��H�H�]�+�3�3�4i�j�c�:R�:T�U�:T�Q�d�G�Q�x�[�0�:T�D�U��9�9�T��?�E�E�F^�_�g�g�hp�q�D�	9��Y�Y�[�(�(��8��H�H�]�+�3�3�4i�j��8�8�(�,�,�.�*A�*A�*�*M�N�T�T�Uw�x�A�A�BJ�K�D�9��Y�Y�[�(�(��6��H�H�^�,�4�4�5j�k�!�y�y�,��)E�\�Z�`�`�ay�z� C� C�DL� M�H�7��Y�Y�[�(�(��6��H�H�[�)�1�1�2g�h�!�y�y�)B�'�R�X�X�Yq�r�z�z�|D� E�H�7��	�	�u�x�8�>�>�?a�b�j�j�kv�w�Ev�J�9�9�;�&�&�':�;�D��O�
�I�I�)�4^�_�e�e�gU�
V�
^�
^�_^�
_�kN�1198�	7�2�1��C�C��;�:��$V�9�8��9�8��7�6��7�6��=v�u��N�
M��1208�	7�s��A[�)%[�%Y�3BX.	�5<Y�1,[�%Z1�AY	�,Z1�5Y)	�Y$�5Y)	�,Z1�3A:Y;	�-,Z1�AZ
	�4,Z1� AZ	�;;Z1�6A'[�[�.121X=
�8Y�122Y�123[�124Y!
�Z1�$Y)	�)125Y8
�3Z1�;126Z127
�Z1�
128Z
�Z1�129Z.
�)Z1�1130[�;[�131[	�
[�132[")�niceguirr^r�
services.authrr�modules.layoutr�database.dbr�database.queriesr	r133�services_sst_extrr
�
COLOR_PRIMARYrX�COLOR_BORDER�pagerzrhr�rrr�<module>r�s������8�)��6�E��
��������	��
�oc���oc�b���	$�%�
�h_�S�h_��&�h_r