Ë
    >$Ôj  ã                   ó®   — d Z ddlZddlmZmZmZ ddlmZ ddlmZm	Z	 ddl
mZmZmZ ddlmZ d	d
hZd„ Zefd„Zdd„Zd„ Zd„ Zefd„Zd„ Zddedefd„Zy)zRFontes estruturadas: Classroom (ITA), Notion (Projetos) e Google Agenda (pessoal).é    N)ÚdatetimeÚ	timedeltaÚtimezone)Úbuildé   )ÚagoraÚgravar_item)ÚFUSOÚagenda_agente_idÚcarregar_env)ÚcredenciaisÚ	TURNED_INÚRETURNEDc           
      ó,  — | j                  d«      | j                  d«      xs i }}|sy t        |d   |d   |d   |j                  dd«      |j                  dd	«      t        j                  ¬
«      }|j	                  t
        «      j                  d«      S )NÚdueDateÚdueTimeÚyearÚmonthÚdayÚhoursé   Úminutesé;   )Útzinfoz%Y-%m-%dT%H:%M)Úgetr   r   ÚutcÚ
astimezoner
   Ústrftime)ÚwÚdÚhr   s       ú5/home/ubuntu/projetos/agente-tarefas/agente/fontes.pyÚ_prazo_classroomr#      s�   € Ø�5‰5�Ó˜QŸU™U 9Ó-Ò3°€q€AÙØÜ
�1�V‘9˜a ™j¨!¨E©(°A·E±E¸'À2Ó4FÈÏÉÈiÐY[ÓH\Ôem×eqÑeqÔ
r€CØ�>‰>œ$Ó×(Ñ(Ð)9Ó:Ð:ó    c                 óv  — t        ddt        d«      d¬«      }t        j                  t        «      t        d¬«      z
  j                  d«      }d	}|j                  «       j                  d
gd¬«      j                  «       j                  dg «      D �]”  }|d   }|j                  «       j                  «       j                  |d¬«      j                  «       j                  dg «      }|j                  «       j                  «       j                  «       j                  |dd¬«      j                  «       j                  dg «      D �ci c]  }|d   |d   “Œ }	}|D ]Ê  }
t        |
«      }|r|dd |k  rŒ|	j                  |
d   «      t        v rdnd}| j                  d|› d|
d   › �f«      j                  «       }|dk(  r|r|d   dv r|d   }t!        | d|
d    › d!|d"   › d#�|
j                  d$«      xs d%dd& ||d'|d"   d|› d|
d   › �|
j                  d(«      d)œ
«       |d*z  }ŒÌ �Œ—  |d+|› d,�«       |S c c}w )-z]Cada atividade com prazo vira uma tarefa; entregue -> concluida. Sem LLM: e dado estruturado.Ú	classroomÚv1ÚitaF©ÚcredentialsÚcache_discoveryé   )Údaysz%Y-%m-%dr   ÚACTIVEéd   )ÚcourseStatesÚpageSizeÚcoursesÚid)ÚcourseIdr1   Ú
courseWorkÚ-i,  )r4   ÚcourseWorkIdr1   ÚstudentSubmissionsr7   ÚstateNé
   Ú	concluidoÚabertozFSELECT status FROM itens WHERE origem = 'classroom' AND origem_ref = ?Ú/Ústatus)r;   Ú
descartadoÚtarefaÚtitlez (ÚnameÚ)ÚdescriptionÚ i   g      ð?ÚalternateLink)
ÚtipoÚtituloÚ	descricaoÚprazor>   Ú	confiancaÚprojetoÚorigemÚ
origem_refÚ	evidenciar   zclassroom: z atividades com prazo)r   r   r   Únowr
   r   r   r2   ÚlistÚexecuter   r5   r8   r#   ÚENTREGUEÚfetchoner	   )ÚconÚlogÚcrÚlimiteÚnÚcursoÚcidÚ	trabalhosÚsÚentregasr   rJ   r>   Úatuals                 r"   Úsincronizar_classroomr`      sc  € ä	ˆ{˜D¬k¸%Ó.@ÐRWÔ	X€BÜ�l‰lœ4Ó ¤9°"Ô#5Ñ5×?Ñ?À
ÓK€FØ	€AØ—‘“×"Ñ"°°
ÀSÐ"ÓI×QÑQÓS×WÑWÐXaÐce×fˆØ�D‰kˆØ—J‘J“L×+Ñ+Ó-×2Ñ2¸CÈ#Ð2ÓN×VÑVÓX×\Ñ\Ð]iÐkmÓnˆ	Ø;=¿:¹:»<×;RÑ;RÓ;T×;gÑ;gÓ;i×;nÑ;nØ s°Sð <oó <:ß:A¹'»)ÇCÁCÐH\Ð^`ÓDað<bó cñ <b°a�A�nÑ% q¨¡zÑ1ð <bˆð cãˆAÜ$ QÓ'ˆEÙ˜E # 2˜J¨Ò/ØØ$,§L¡L°°4±Ó$9¼XÑ$E‘[È8ˆFØ—K‘KÐ hØ$' 5¨¨!¨D©'¨Ð!3Ð 5ó7ß7?±x³zð à˜Ò!¡e°°h±ÐC^Ñ0^Ø˜x™�Ü˜Ø ¨q°©z¨l¸"¸UÀ6¹]¸OÈ1Ð,MØŸe™e MÓ2Ò8°b¸$¸3Ð?È%Ø Ø ¨U°6©]ÀkØ!$  Q q¨¡w iÐ0¸q¿u¹uÀ_Ó?Uñô ð �‰F‰Aò! ð gñ, ˆ+�a�SÐ-Ð.Ô/Ø€Hùò)cs   ÅH6c           	      ó¨  — g }| j                   j                  j                  |d¬«      d   D �]  }|j                  |d   i «      }dj	                  d„ |j                  dg «      D «       «      }|d   dk(  r|j                  d	«      rd
nd|z   }n7|d   j                  d«      rd|› �}n|d   dk(  rd|j                  d«      › d�}|r|j                  d|z  |z   «       |j                  d«      r/|dk  r*|d   dvr#|j                  t        | |d   |dz   |«      «       t        d„ |D «       «      |kD  s�Œ	 n dj	                  d„ |D «       «      d | S )Nr/   )Úblock_idÚ	page_sizeÚresultsÚtyperE   c              3   ó@   K  — | ]  }|j                  d d«      –— Œ y­w)Ú
plain_textrE   N)r   ©Ú.0Úts     r"   Ú	<genexpr>z _texto_blocos.<locals>.<genexpr>;   s   è ø€ ÐTÑ9S°A˜Ÿ™˜l¨B×/Ñ9Sùs   ‚Ú	rich_textÚto_doÚcheckedz[x] z[ ] Úheadingz## Úchild_databasez[banco: rA   Ú]z  Úhas_childrené   )Ú
child_pagerp   r3   r   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úlen©ri   Úps     r"   rk   z _texto_blocos.<locals>.<genexpr>F   s   è ø€ Ð&™v˜!Œs�1�v™vùs   ‚Ú
c              3   ó&   K  — | ]	  }|sŒ|–— Œ y ­wrv   © rx   s     r"   rk   z _texto_blocos.<locals>.<genexpr>H   s   è ø€ Ð,¡˜1ª!”Q¡ùó   ‚Š)	ÚblocksÚchildrenrQ   r   ÚjoinÚ
startswithÚappendÚ_texto_blocosÚsum)ÚnotionÚbloco_idÚnivelrX   ÚpartesÚbÚdadosÚtextos           r"   rƒ   rƒ   7   sS  € Ø€FØ�]‰]×#Ñ#×(Ñ(°(ÀcÐ(ÓJÈ9ÕUˆØ—‘�a˜‘i Ó$ˆØ—‘ÑT¸¿¹À;ÐPRÔ9SÓTÓTˆØˆV‰9˜ÒØ$Ÿy™y¨Ô3‘V¸À5ÑH‰EØˆv‰Y×!Ñ! )Ô,Ø˜%˜�M‰EØˆv‰YÐ*Ò*Ø˜uŸy™y¨Ó1Ð2°!Ð4ˆEÙØ�M‰M˜$ ™,¨Ñ.Ô/Ø�5‰5�Ô  U¨Q¢Y°1°V±9ÐDdÑ3dØ�M‰Mœ-¨°°$±¸À¹ÀFÓKÔLÜÑ&™vÓ&Ó&¨Ô/Ùð Vð �9‰9Ñ,¡Ó,Ó,¨W¨fÐ5Ð5r$   c                 ó  — | j                  di «      j                  «       D ]3  }|j                  d«      dk(  sŒdj                  d„ |d   D «       «      c S  dj                  d„ | j                  dg «      D «       «      xs dS )NÚ
propertiesre   rA   rE   c              3   ó&   K  — | ]	  }|d    –— Œ y­w©rg   Nr|   rh   s     r"   rk   z_titulo.<locals>.<genexpr>N   s   è ø€ Ð?±J¨q˜1˜\�?±Jùó   ‚c              3   ó&   K  — | ]	  }|d    –— Œ y­wr�   r|   rh   s     r"   rk   z_titulo.<locals>.<genexpr>O   s   è ø€ Ð?Ñ,> q�1�\•?Ñ,>ùr�   Ú?)r   Úvaluesr€   )Úory   s     r"   Ú_titulor•   K   sp   € Ø�U‰U�< Ó$×+Ñ+Ö-ˆØ�5‰5�‹=˜GÓ#Ø—7‘7Ñ?°A°g²JÓ?Ó?Ò?ð .ð �7‰7Ñ?¨A¯E©E°'¸2Ô,>Ó?Ó?ÒFÀ3ÐFr$   c           	      ó<  — g }| j                  di «      j                  «       D ]ç  \  }}|j                  d«      |j                  |j                  d«      «      }}|dv r|r|j                  |› d|d   › �«       ŒW|dk(  r/|r-|j                  |› ddj                  d„ |D «       «      › �«       Œ‹|d	k(  r8|r6|j                  |› d|d
   › �|j                  d«      rd|d   › �ndz   «       ŒÈ|dk(  sŒÎ|j                  |› d|rdnd› �«       Œé dj                  |«      S )zDPropriedades simples (status, datas, selects) para o resumo semanal.r�   re   )Úselectr>   z: rB   Úmulti_selectz, c              3   ó&   K  — | ]	  }|d    –— Œ y­w)rB   Nr|   ©ri   Úxs     r"   rk   z_props.<locals>.<genexpr>Z   s   è ø€ Ð+A¹q¸!¨A¨f­I¹qùr�   ÚdateÚstartÚendz a rE   ÚcheckboxÚsimÚnaoz; )r   Úitemsr‚   r€   )r”   ÚoutÚnomery   rj   Úvs         r"   Ú_propsr¦   R   s  € à
€CØ—5‘5˜ rÓ*×0Ñ0Ö2‰ˆˆaØ�u‰u�V‹}˜aŸe™e A§E¡E¨&£MÓ2ˆ1ˆØÐ$Ñ$©Ø�J‰J˜$˜˜r ! F¡) Ð-Õ.Ø�.Ò ¡QØ�J‰J˜$˜˜r $§)¡)Ñ+A¹qÓ+AÓ"AÐ!BÐCÕDØ�&Š[™QØ�J‰J˜$˜˜r ! G¡* Ð.ÀaÇeÁeÈEÄl°C¸¸%¹°zÑ2BÐXZÑ[Õ\Ø�*‹_Ø�J‰J˜$˜˜r©1¡%°%Ð!8Ð9Õ:ð 3ð �9‰9�S‹>Ðr$   c           
      ó  — ddl m} t        «         |t        j                  d   ¬«      }d}|j                  d¬«      d   D ]   }|d   d	k7  rŒ| j                  d
|d   f«      j                  «       }|r|d   |d   k(  rŒ>dj                  d„ t        |«      t        ||d   «      fD «       «      }| j                  d|d   t        |«      ||d   t        «       f«       |dz  }Œ¢ | j                  «         |d|› d�«       |S )zSGuarda um retrato de cada pagina visivel (projetos e sub-bancos como o Cronograma).r   )ÚClientÚNOTION_TOKEN)Úauthr/   )rc   rd   ÚobjectÚpagez1SELECT editado_em FROM notion WHERE pagina_id = ?r3   Ú
editado_emÚlast_edited_timerz   c              3   ó&   K  — | ]	  }|sŒ|–— Œ y ­wrv   r|   rš   s     r"   rk   z%sincronizar_notion.<locals>.<genexpr>n   s   è ø€ ÐYÑ(S 1ÒWXœQÑ(Sùr}   z4INSERT OR REPLACE INTO notion VALUES (?, ?, ?, ?, ?)r   znotion: z paginas atualizadas)Únotion_clientr¨   r   ÚosÚenvironÚsearchrR   rT   r€   r¦   rƒ   r•   r   Úcommit)rU   rV   r¨   r…   rY   r”   ÚanteriorÚconteudos           r"   Úsincronizar_notionr·   b   s  € å$Ü„NÙœŸ™ NÑ3Ô4€FØ	€AØ�]‰] Sˆ]Ó)¨)Ô4ˆØˆX‰;˜&Ò ØØ—;‘;ÐRÐUVÐW[ÑU\ÐT^Ó_×hÑhÓjˆÙ˜ Ñ.°!Ð4FÑ2GÒGØØ—9‘9ÑY¬°«´MÀ&È!ÈDÉ'Ó4RÑ(SÓYÓYˆØ�‰ÐJØ�t‘Wœg a›j¨(°AÐ6HÑ4IÌ5Ë7ÐSô	Uà	ˆQ‰‰ð 5ð ‡J�J„LÙˆ(�1�#Ð)Ð*Ô+Ø€Hr$   c                  ó2   — t        ddt        d«      d¬«      S )NÚcalendarÚv3ÚpessoalFr)   )r   r   r|   r$   r"   Úagendar¼   x   s   € Ü�˜T¬{¸9Ó/EÐW\Ô]Ð]r$   ÚinicioÚfimc           
      ó\  — t        «       }t        «       }g }|j                  «       j                  «       j	                  «       d   D �]+  }|j                  d«      du s
|d   |k(  r|sŒ"|j                  «       j                  |d   | j                  «       |j                  «       ddd¬«      j	                  «       }|j                  dg «      D ]£  }|j                  d	«      d
k(  rŒ|j                  |j                  d«      |j                  dd«      |d   j                  d«      xs |d   j                  d«      |d   j                  d«      xs |d   j                  d«      |d   |k(  dœ«       Œ¥ �Œ. |D �ci c]  }|d   |d   f|“Œ }	}t        |	j                  «       d„ ¬«      S c c}w )zVEventos de todas as agendas visiveis da conta pessoal (exceto a Agente, salvo pedido).r¢   ÚselectedFr3   TÚ	startTimeéú   )Ú
calendarIdÚtimeMinÚtimeMaxÚsingleEventsÚorderByÚ
maxResultsr>   Ú	cancelledÚsummaryz(sem titulo)r�   ÚdateTimerœ   rž   )r¼   rH   r½   r¾   Ú	da_agenterH   r½   c                 ó   — | d   S )Nr½   r|   )Úes    r"   Ú<lambda>zeventos.<locals>.<lambda>Ž   s   € °°8²r$   )Úkey)r¼   r   ÚcalendarListrQ   rR   r   ÚeventsÚ	isoformatr‚   Úsortedr“   )
r½   r¾   Úincluir_agenteÚcalÚ	agente_idÚsaidaÚcÚrrÎ   Úunicoss
             r"   ÚeventosrÜ   |   s’  € ä
‹(€CÜ Ó"€IØ€EØ×ÑÓ×$Ñ$Ó&×.Ñ.Ó0°Õ9ˆØ�5‰5�Ó Ñ%¨!¨D©'°YÒ*>Á~ØØ�J‰J‹L×Ñ¨¨4©¸&×:JÑ:JÓ:LÐVY×VcÑVcÓVeØ+/¸ÐQTð ó VßV]ÑV]ÓV_ð 	
à—‘�w Ö#ˆAØ�u‰u�X‹ +Ò-ØØ�L‰L A§E¡E¨)Ó$4ÀÇÁÀiÐQ_Ó@`Ø$% g¡J§N¡N°:Ó$>Ò$XÀ!ÀGÁ*Ç.Á.ÐQWÓBXØ!" 5¡§¡¨jÓ!9Ò!Q¸Q¸u¹X¿\¹\È&Ó=QØ'(¨¡w°)Ñ';ñ=õ >ò $ð :ñ 6;Ó;±U°ˆq�‰{˜A˜h™KÐ(¨!Ñ+°U€FÐ;Ü�&—-‘-“/Ñ'<Ô=Ð=ùò <s   Å9F))r   i   )F)Ú__doc__r±   r   r   r   Úgoogleapiclient.discoveryr   Úbancor   r	   Úconfigr
   r   r   Úgoogle_authr   rS   r#   Úprintr`   rƒ   r•   r¦   r·   r¼   rÜ   r|   r$   r"   Ú<module>rã      sm   ðÙ XÛ 	ß 2Ñ 2å +ç %ß 8Ñ 8Ý $à˜Ð$€ò;ð $)ó ó@6ò(Gòð  !&ó ò,^ñ>�Hð > 8ô >r$   