Ë
     *ÔjC!  ã                   ó<  — U d Z ddlZddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZ ddlmZmZ dd	d
giZdddd	g d¢dœdd
gddœd	d
gddœd	d
gddœeeeeeedœ
dgdœdœdd	iddidœg d¢dœZdZg Zee   ed<   h d£Zh d£Zd„ Zd„ Z d „ Z!e"fd!„Z#y)"zìComandos em linguagem natural no grupo Agente, interpretados pelo Gemini.

O modelo so escolhe entre operacoes fixas sobre os itens do agente; acoes que apagam ou mexem em
varios itens de uma vez ficam pendentes ate o usuario confirmar.é    N)Údatetimeé   )Úagenda_syncÚ	auditoriaÚllmÚpreferenciasÚwhatsapp)ÚagoraÚatualizar_itemÚgravar_itemÚitens_abertosÚ	mensagensÚ	progressoÚsalvar_progresso)ÚFUSOÚMODELO_EXTRACAOÚtypeÚstringÚnullÚobjectÚarray)Ú	adicionarÚalterarÚconcluirÚremoverÚreabrirÚlembrar_preferenciaÚesquecer_preferenciaÚexplicar)r   ÚenumÚintegerz/id do item, ou numero da preferencia a esquecer)r   Údescriptionz.regra permanente, escrita de forma autocontidazcompromisso, tarefa ou projeto)
ÚopÚitem_idÚpreferenciaÚtipoÚtituloÚ	descricaoÚinicioÚfimÚprazoÚprojetor#   )r   Ú
propertiesÚrequired)r   ÚitemsÚboolean)ÚacoesÚrespostaÚpedir_confirmacaoa*  Voce e o assistente de agenda do Joao e recebe mensagens dele no grupo "Agente" do WhatsApp. Interprete o pedido e devolva as operacoes sobre os itens dele:
- adicionar: novo item (tipo compromisso/tarefa/projeto; compromisso usa inicio/fim AAAA-MM-DDTHH:MM, tarefa usa prazo).
- alterar: muda campos de um item existente (item_id). "Adiar" e alterar a data.
- concluir: marca como feito. remover: descarta (nao era tarefa, foi cancelado). reabrir: volta a ficar aberto.
- lembrar_preferencia: regra que vale daqui para frente ("nunca mostre X", "nao sou representante da T2", "relatorios de FIS-46 quem entrega e meu colega"). Escreva em "preferencia" uma frase autocontida. esquecer_preferencia: remove a preferencia de numero item_id.
- explicar: o Joao quer saber de onde veio um item ("de onde veio o #56?", "por que isso ta aqui?"). Use item_id; o trecho da conversa e anexado automaticamente, entao a "resposta" pode ser so uma frase curta.
- Uma mensagem pode ter varios pedidos: trate TODOS (ex.: concluir dois itens e ainda guardar uma preferencia).
- Perguntas ("o que tenho quinta?", "quais as entregas da semana?") nao geram acoes: responda em "resposta".
Resolva datas relativas a partir de agora. Identifique itens pelo numero (#12) ou pela descricao.
Se o pedido for ambiguo, nao faca acoes e pergunte em "resposta".
pedir_confirmacao = true quando a mensagem pedir remover algo, ou mexer em mais de 3 itens de uma vez.
"resposta": curta, em portugues, dizendo o que foi (ou sera, se pedir confirmacao) feito, citando os #ids. Formatacao do WhatsApp (*negrito*).Úexplicacoes>   ÚsÚokÚsimÚissoÚpodeÚmandaÚconfirmaÚconfirmo>   ÚnÚnaoÚdeixaÚcancelaÚesqueceÚcancelarc                 ó¤   — t        j                  d| j                  «       «      j                  dd«      j	                  «       j                  d«      S )NÚNFKDÚasciiÚignorez .!)ÚunicodedataÚ	normalizeÚlowerÚencodeÚdecodeÚstrip)Úts    ú7/home/ubuntu/projetos/agente-tarefas/agente/comandos.pyÚ_normrO   8   s=   € Ü× Ñ  ¨¯©«Ó3×:Ñ:¸7ÀHÓM×TÑTÓV×\Ñ\Ð]bÓcÐcó    c                 ó¢  — g }t         j                  «        d}|D �]Ì  }|d   |j                  d«      }}dD �ci c]  }|j                  |«      sŒ|||   “Œ }}|dk(  r>|j                  d«      r-t        j                  | |d   «       |j                  d«       d}Œ‚|d	k(  r.|r+t        j                  | |«      r|j                  d
|› d�«       Œµ|dk(  rR|xr! | j                  d|f«      j                  «       }	|	r)t         j                  t        j                  | |	«      «       �Œ|dk(  rX|j                  d«      rGt        | i |¥|j                  d«      xs ddddt        j                  «       j                  ddœ¥«      }nN|rJ| j                  d|f«      j                  «       r)|dk(  rt        | |fi |¤Ž nt        | |ddddœ|   ¬«       n�Œ·|j                  |› d|› �«       �ŒÏ |r.t        j                   | d„ ¬«      }
|
r|j                  |
› d �«       |r-t#        j$                  | d!„ ¬«       t        j&                  | «       |S c c}w )"NFr#   r$   )r'   r(   r)   r*   r+   r,   r&   r   r%   zpreferencia guardadaTr   zpreferencia z
 esquecidar   z SELECT * FROM itens WHERE id = ?r   r'   r&   ÚtarefaÚabertog      ð?Úmanualzadicionado pelo grupo Agente)r&   ÚstatusÚ	confiancaÚorigemÚ
origem_refÚ	evidenciaz SELECT 1 FROM itens WHERE id = ?r   Ú	concluidoÚ
descartado)r   r   r   )rU   z #c                   ó   — y ©N© ©Ú_s    rN   Ú<lambda>z_executar.<locals>.<lambda>_   s   € °TrP   )Úlogz itens tirados pela preferenciac                   ó   — y r]   r^   r_   s    rN   ra   z_executar.<locals>.<lambda>c   s   € °DrP   )r4   ÚclearÚgetr   r   Úappendr   ÚexecuteÚfetchoner   Útexto_contextor   ÚuuidÚuuid4Úhexr   Úaplicarr   ÚsincronizarÚgerar)Úconr1   ÚfeitosÚ	nova_prefÚar#   ÚiidÚkÚcamposÚitemr=   s              rN   Ú	_executarrx   <   sK  € Ø€FÜ×ÑÔØ€IÜˆØ�D‘'˜1Ÿ5™5 Ó+ˆCˆÙ#gÓtÑ#g˜aÐkl×kpÑkpÐqrÕks�!�Q�q‘T‘'Ð#gˆÐtØÐ&Ò&¨1¯5©5°Ô+?Ü×"Ñ" 3¨¨-Ñ(8Ô9Ø�M‰MÐ0Ô1ØˆIØØÐ'Ò'Ù”|×+Ñ+¨C°Ô5Ø—‘ ¨S¨E°Ð<Ô=ØØ�ÒØÒ]˜3Ÿ;™;Ð'IÈCÈ6ÓR×[Ñ[Ó]ˆDÙÜ×"Ñ"¤9×#;Ñ#;¸CÀÓ#FÔGÙØ�Ò §¡ x¤Ü˜cð $Q fð $Q°a·e±e¸F³mÒ6OÀxÐ[cØ14ÀÔX\×XbÑXbÓXd×XhÑXhØ1Oò$Qó R‰Cñ �S—[‘[Ð!CÀcÀVÓL×UÑUÔWØ�YŠÜ˜s CÑ2¨6Ó2ä˜s C¸[ÐUaØ<Dñ1FØFHñ1Jö Kñ Ø�‰˜˜˜B˜s˜e�nÖ%ð; ñ< Ü× Ñ  ©/Ô:ˆÙØ�M‰M˜Q˜CÐ>Ð?Ô@ÙÜ×Ñ ©Õ9Ü�‰˜ÔØ€MùòG us   ¹IÁIc                 óæ   — g }t        | «      D ]M  }|d   xs	 |d   xs d}|d   dk(  rdnd}|j                  d|d	   › d
|d   › d|d   › d|› |› d
|d   › d�«       ŒO dj                  |«      xs dS )Nr)   r+   zsem datarU   Úa_confirmarz (a confirmar)Ú Ú#Úidz [r&   z] r'   u    â€” rW   Ú]Ú
z(nenhum))r   rf   Újoin)rp   ÚlinhasÚiÚquandoÚconfs        rN   Ú_itens_textor…   h   s�   € Ø€FÜ˜3ÖˆØ�8‘Ò8  '¡
Ò8¨jˆØ#$ X¡;°-Ò#?ÑÀRˆØ�‰˜˜!˜D™'˜ " Q v¡Y K¨r°!°H±+°¸eÀFÀ8ÈDÈ6ÐQSÐTUÐV^ÑT_ÐS`Ð`aÐbÕcð  ð �9‰9�VÓÒ* 
Ð*rP   c                 óü  — t         j                  }t        | d«      }|€)t        | dt	        t        j
                  «       «      «       y t        t        | dg «      «      }t        «       j                  d||f«      D �cg c]  }|d   |vrt        |«      ‘Œ }}|sy t        d„ |D «       «      r!t        j
                  «       |d   d   z
  dk  ry t        | d|d   d   «       g }|D ]]  }|d	   d
k(  r9|d   r4|j                  t        j                  |«      j                  d«      «       ŒD|d   sŒJ|j                  |d   «       Œ_ |sy dj                  |«      }t        d„ |D «       «      r	d|d d › d�nd}	t        | d«      }
|
r[t        |«      t         v rJt#        | |
d   «      }t        | dd «       t        j$                  ddj                  |«      xs d› d�| «       y |
r5t        |«      t&        v r$t        | dd «       t        j$                  d| «       y dj                  d„ t)        t+        j,                  | «      d«      D «       «      xs d}dt/        j0                  t2        «      d›d t5        | «      › d!|› d"|› �}t7        j8                  t:        |t<        t>        | d#¬$«      }|jA                  dg «      }|jA                  d%«      xs" tC        |«      d&kD  xs t        d'„ |D «       «      }|r9|r7t        | d|tE        «       d(œ«       t        j$                  |	› |d)   › d*�| «       y t#        | |«      } |d+|› �«       dj                  d,„ tF        D «       «      }t        j$                  |	|d)   z   |z   | «       y c c}w )-Nzcmd:ultimo_tszwa:enviadaszSELECT chat, id, ts, tipo, texto, mime, midia, nome_arquivo FROM mensagens WHERE chat = ? AND ts > ? AND de_mim = 1 ORDER BY tsr}   c              3   ó<   K  — | ]  }|d    dk(  xr |d    –— Œ y­w)r&   ÚaudioMessageÚmidiaNr^   ©Ú.0Úrs     rN   Ú	<genexpr>zprocessar.<locals>.<genexpr>}   s(   è ø€ Ð
JÁ6¸aˆ1ˆV‰9˜Ñ&Ò9¨q°©z¨>Ó9Á6ùs   ‚éÿÿÿÿÚtséx   r&   rˆ   r‰   z[audio] Útextor   c              3   ó,   K  — | ]  }|d    dk(  –— Œ y­w)r&   rˆ   Nr^   rŠ   s     rN   r�   zprocessar.<locals>.<genexpr>Š   s   è ø€ ÐA¹&°Q�Q�v‘Y .Õ0¹&ùó   ‚u   ðŸŽ™ï¸� _Entendi: "iÐ  z"_

r{   zcmd:pendenter1   u   âœ… Feito: z, znada a alterarÚ.u"   ðŸ‘� Cancelado, nada foi alterado.c              3   ó6   K  — | ]  \  }}|› d |d   › �–— Œ y­w)z. r‘   Nr^   )r‹   r=   Úps      rN   r�   zprocessar.<locals>.<genexpr>—   s&   è ø€ Ð^Ñ7]©t¨q°!˜˜˜2˜a ™j˜\Ô*Ñ7]ùs   ‚r   z	(nenhuma)zAgora: z%A %d/%m/%Y %H:%Mz

Itens abertos:
z

Preferencias guardadas:
z

Mensagem do Joao:
Úcomando)ÚsistemaÚesquemarp   Úetapar3   é   c              3   ó,   K  — | ]  }|d    dk(  –— Œ y­w)r#   r   Nr^   )r‹   rs   s     rN   r�   zprocessar.<locals>.<genexpr>œ   s   è ø€ ÐAfÑ`eÐ[\À!ÀDÁ'ÈYÕBVÑ`eùr“   )r1   Úemr2   u'   

_Confirma? Responda *sim* ou *nÃ£o*._z	comando: c              3   ó&   K  — | ]	  }d |› �–— Œ y­w)z

Nr^   )r‹   Úxs     rN   r�   zprocessar.<locals>.<genexpr>£   s   è ø€ Ð4© 1�d˜1˜#”J©ùs   ‚)$r	   ÚGRUPO_AGENTEr   r   ÚintÚtimeÚsetr   rg   ÚdictÚanyrf   Ú_processar_midiaÚremoveprefixr€   rO   ÚSIMrx   ÚenviarÚNAOÚ	enumerater   Úlistarr   Únowr   r…   r   ro   r   ÚSISTEMAÚESQUEMAre   Úlenr
   r4   )rp   rb   ÚgrupoÚultimoÚenviadasrŒ   r�   Úpartesr‘   ÚouvidoÚpendenterq   ÚprefsÚentradar1   ÚprecisaÚextras                    rN   Ú	processarr»   q   sa  € Ü×!Ñ!€EÜ�s˜OÓ,€FØ€~Ü˜˜o¬s´4·9±9³;Ó/?Ô@ØÜ”9˜S -°Ó4Ó5€HÜ(›{×2Ñ2ð	?ØAFÈÀô Qó mñ  Q˜!àTUÐVZÑT[ÐckÑTkô �1�gð  Q€Fð mñ ØÜ
Ñ
JÁ6Ó
JÔJÌtÏyÉyË{Ð]cÐdfÑ]gÐhlÑ]mÑOmÐpsÒOsØÜ�S˜/¨6°"©:°dÑ+;Ô<Ø€FÛˆØˆV‰9˜Ò&¨1¨Wª:Ø�M‰Mœ(×3Ñ3°AÓ6×CÑCÀJÓOÕPØˆw‹ZØ�M‰M˜!˜G™*Õ%ð	 ñ
 ØØ�I‰I�fÓ€EäÑA¹&ÓAÔAð % U¨5¨D \ N°'Ñ:ØGIð ä˜˜nÓ-€Há”E˜%“L¤CÑ'Ü˜3 ¨Ñ 1Ó2ˆÜ˜˜n¨dÔ3Ü�‰˜+ d§i¡i°Ó&7Ò&KÐ;KÐ%LÈAÐNÐPSÔTØÙ”E˜%“L¤CÑ'Ü˜˜n¨dÔ3Ü�‰Ð<¸cÔBØà�I‰IÑ^´yÄ×ATÑATÐUXÓAYÐ[\Ô7]Ó^Ó^ÒmÐbm€EØœŸ™¤dÓ+Ð,=Ð>Ð>RÔS_Ð`cÓSdÐReð f+Ø+0¨'Ð1HÈÈðQ€Gä�	‰	”/ 7´GÄWÐRUÐ]fÔg€AØ�E‰E�'˜2Ó€EØ�e‰eÐ'Ó(Òf¬C°«J¸©NÒf¼cÑAfÑ`eÓAfÓ>f€GÙ‘Ü˜˜n¸ÄUÃWÑ.MÔNÜ�‰˜6˜( 1 Z¡= /Ð1ZÐ[Ð]`ÔaØÜ�s˜EÓ"€FÙˆ)�F�8ÐÔØ�G‰GÑ4­Ó4Ó4€EÜ‡O�O�F˜Q˜z™]Ñ*¨UÑ2°CÕ8ùòYms   Á<M9)$Ú__doc__r¢   rG   rj   r   r{   r   r   r   r   r	   Úbancor
   r   r   r   r   r   r   Úconfigr   r   ÚNULOr¯   r®   r4   ÚlistÚstrÚ__annotations__r¨   rª   rO   rx   r…   Úprintr»   r^   rP   rN   Ú<module>rÄ      s   ðòDó Û Û Ý ç AÕ Aß l× lÑ lß )à�˜6Ð"Ð#€àà!°XØ#ò .iñ jà!*¨FÐ 3ÐDuÑvØ%-¨vÐ$6ÐGwÑxØ&¨Ð/Ð@`ÑaØ¨¸ÀdÐUYÐfjñN
ð �vñ-ñ  ð ˜XÐ&Ø$ iÐ0ñò ;ñ€ð"'€ð$ €ˆT�#‰YÓ âI€Ú=€òdò)òX+ð ô 39rP   