Ë
    †+Ôj  ã                   óº   — d Z ddlZddlZddlmZ ddlmZmZmZ dZde	fd„Z
dej                  fd	„Zdej                  fd
„Zdd„Zd„ Zdd„Zdedefd„Zdefd„Zy)zIAcesso aos bancos: mensagens.db (coletor) e agente.db (estado do agente).é    N)Údatetimeé   )Ú	DB_AGENTEÚDB_MENSAGENSÚFUSOay  
CREATE TABLE IF NOT EXISTS itens (
  id INTEGER PRIMARY KEY,
  tipo TEXT NOT NULL,              -- compromisso | tarefa | projeto
  titulo TEXT NOT NULL,
  descricao TEXT,
  inicio TEXT,                     -- compromisso: 'AAAA-MM-DDTHH:MM' ou 'AAAA-MM-DD'
  fim TEXT,
  prazo TEXT,                      -- tarefa: 'AAAA-MM-DD' ou 'AAAA-MM-DDTHH:MM'
  status TEXT NOT NULL,            -- aberto | a_confirmar | concluido | descartado
  confianca REAL,
  projeto TEXT,
  pessoas TEXT,                    -- JSON
  origem TEXT NOT NULL,            -- whatsapp | classroom | notion | manual
  origem_ref TEXT,                 -- chave estavel na origem (evita duplicar)
  evidencia TEXT,                  -- trecho/fonte que justifica o item
  evento_id TEXT,                  -- id do evento na agenda Agente
  msg_ts INTEGER,                  -- quando foi a mensagem que originou o item (WhatsApp)
  criado_em TEXT NOT NULL,
  atualizado_em TEXT NOT NULL,
  UNIQUE (origem, origem_ref)
);
CREATE TABLE IF NOT EXISTS midia_texto (
  chat TEXT, id TEXT, texto TEXT, PRIMARY KEY (chat, id)
);
CREATE TABLE IF NOT EXISTS progresso (chave TEXT PRIMARY KEY, valor TEXT);
CREATE TABLE IF NOT EXISTS notion (
  pagina_id TEXT PRIMARY KEY, titulo TEXT, conteudo TEXT, editado_em TEXT, lido_em TEXT
);
CREATE TABLE IF NOT EXISTS uso_llm (
  ts TEXT, etapa TEXT, modelo TEXT, entrada INTEGER, saida INTEGER
);
Úreturnc                  óT   — t        j                  t        «      j                  d¬«      S )NÚseconds)Útimespec)r   Únowr   Ú	isoformat© ó    ú4/home/ubuntu/projetos/agente-tarefas/agente/banco.pyÚagorar   +   s   € Ü�<‰<œÓ×'Ñ'°Ð'Ó;Ð;r   c                  ó  — t        j                  t        d¬«      } t         j                  | _        | j                  t        «       d| j                  d«      D �ch c]  }|d   ’Œ	 c}vr| j                  d«       | S c c}w )Né   ©ÚtimeoutÚmsg_tszPRAGMA table_info(itens)Únamez+ALTER TABLE itens ADD COLUMN msg_ts INTEGER)Úsqlite3Úconnectr   ÚRowÚrow_factoryÚexecutescriptÚESQUEMAÚexecute)ÚconÚrs     r   Úagenter!   /   sj   € Ü
�/‰/œ)¨RÔ
0€CÜ—k‘k€C„OØ×Ñ”gÔØ¨3¯;©;Ð7QÔ+RÓSÑ+R a˜˜&›	Ð+RÑSÑSØ�‰ÐAÔBØ€Jùò Ts   ÁA=c                  óˆ   — t        j                  t        d¬«      } t         j                  | _        | j                  d«       | S )Nr   r   zPRAGMA busy_timeout = 30000)r   r   r   r   r   r   )r   s    r   Ú	mensagensr#   8   s/   € Ü
�/‰/œ,°Ô
3€CÜ—k‘k€C„OØ‡K�KÐ-Ô.Ø€Jr   c                 ó|   — | j                  d|f«      j                  «       }|rt        j                  |d   «      S |S )Nz+SELECT valor FROM progresso WHERE chave = ?Úvalor)r   ÚfetchoneÚjsonÚloads)r   ÚchaveÚpadraor    s       r   Ú	progressor+   ?   s8   € Ø�‰ÐAÀEÀ8ÓL×UÑUÓW€AÙ%&Œ4�:‰:�a˜‘jÓ!Ð2¨FÐ2r   c                 ór   — | j                  d|t        j                  |«      f«       | j                  «        y )Nz.INSERT OR REPLACE INTO progresso VALUES (?, ?))r   r'   ÚdumpsÚcommit)r   r)   r%   s      r   Úsalvar_progressor/   D   s)   € Ø‡K�KÐ@À5Ì$Ï*É*ÐUZÓJ[ÐB\Ô]Ø‡J�J…Lr   c                 ó„   — ddj                  dt        |«      z  «      › d�}| j                  ||«      j                  «       S )NzJSELECT * FROM itens WHERE status IN ('aberto','a_confirmar') AND tipo IN (Ú,Ú?Ú))ÚjoinÚlenr   Úfetchall)r   ÚtiposÚqs      r   Úitens_abertosr9   I   sE   € Ø
TÐUX×U]ÑU]Ð^aÔdgÐhmÓdnÑ^nÓUoÐTpÐpqÐr€AØ�;‰;�q˜%Ó ×)Ñ)Ó+Ð+r   Úitemc                 ó
  — t        «       }g d¢}|D �ci c]  }||j                  |«      “Œ }}t        |d   t        «      rt	        j
                  |d   d¬«      |d<   d}|d   r(| j                  d|d   |d   f«      j                  «       }|rr|d	   d
v r|d	   dv r|d	   |d	<   dj                  d„ |D «       «      }| j                  d|› d�|D �cg c]  }||   ‘Œ	 c}||d   gz   «       | j                  «        |d   S | j                  ddj                  |«      › ddj                  dt        |«      z  «      › d�|D �cg c]  }||   ‘Œ	 c}||gz   «      }| j                  «        |j                  S c c}w c c}w c c}w )zIInsere ou atualiza um item pela chave (origem, origem_ref). Devolve o id.)ÚtipoÚtituloÚ	descricaoÚinicioÚfimÚprazoÚstatusÚ	confiancaÚprojetoÚpessoasÚorigemÚ
origem_refÚ	evidenciar   rE   F©Úensure_asciiNrG   z@SELECT id, status FROM itens WHERE origem = ? AND origem_ref = ?rF   rB   )Ú	concluidoÚ
descartado)ÚabertoÚa_confirmarú, c              3   ó&   K  — | ]	  }|› d �–— Œ y­w©z = ?Nr   ©Ú.0Úcs     r   Ú	<genexpr>zgravar_item.<locals>.<genexpr>]   s   è ø€ Ð4©V¨˜A˜3˜dœ©Vùó   ‚úUPDATE itens SET ú , atualizado_em = ? WHERE id = ?ÚidzINSERT INTO itens (z$, criado_em, atualizado_em) VALUES (r2   z, ?, ?))r   ÚgetÚ
isinstanceÚlistr'   r-   r   r&   r4   r.   r5   Ú	lastrowid)	r   r:   Úagora_ÚcamposrT   ÚvaloresÚ	existenteÚsetsÚcurs	            r   Úgravar_itemrd   N   s±  € ä‹W€FòS€Fá'-Ó.¡v !ˆq�$—(‘(˜1“+‰~ v€GÐ.Ü�'˜)Ñ$¤dÔ+Ü!ŸZ™Z¨°	Ñ(:ÈÔOˆ�	ÑØ€IØˆ|ÒØ—K‘KÐ bØ!(¨Ñ!2°G¸LÑ4IÐ JóLßLTÉHËJð 	áØ�XÑÐ"=Ñ=À'È(ÑBSÐWpÑBpØ )¨(Ñ 3ˆG�HÑØ�y‰yÑ4©VÓ4Ó4ˆØ�‰Ð'¨ vÐ-MÐNÙ)/Ó0© A�W˜Q“Z¨Ñ0°F¸IÀd¹OÐ3LÑLô	Nà�
‰
ŒØ˜‰ÐØ
�+‰+Ø
˜dŸi™i¨Ó/Ð0Ð0TÐUY×U^ÑU^Ð_bÔehÐioÓepÑ_pÓUqÐTrÐryÐzÙ#Ó$™V˜ˆ�‹˜VÑ$¨°Ð'7Ñ7ó9€Cð ‡J�J„LØ�=‰=Ðùò' /ùò 1ùò
 	%s   “E6ÃE;
ÅF 
Úitem_idc                 ó6  — |sy t        |j                  d«      t        «      rt        j                  |d   d¬«      |d<   dj                  d„ |D «       «      }| j                  d|› d�g |j                  «       ¢t        «       ‘|‘«       | j                  «        y )NrE   FrI   rO   c              3   ó&   K  — | ]	  }|› d �–— Œ y­wrQ   r   rR   s     r   rU   z!atualizar_item.<locals>.<genexpr>n   s   è ø€ Ð0© A˜�s˜$”Z©ùrV   rW   rX   )
r[   rZ   r\   r'   r-   r4   r   Úvaluesr   r.   )r   re   r_   rb   s       r   Úatualizar_itemri   i   s†   € ÙØÜ�&—*‘*˜YÓ'¬Ô.Ü ŸJ™J v¨iÑ'8ÀuÔMˆˆyÑØ�9‰9Ñ0©Ó0Ó0€DØ‡K�KÐ# D 6Ð)IÐJÐLpÈfÏmÉmËoÐLpÔ_dÓ_fÐLpÐhoÐLpÔqØ‡J�J…Lr   )N))ÚcompromissoÚtarefarD   )Ú__doc__r'   r   r   Úconfigr   r   r   r   Ústrr   Ú
Connectionr!   r#   r+   r/   r9   ÚdictÚintrd   ri   r   r   r   Ú<module>rr      s}   ðÙ OÛ Û Ý ç 1Ñ 1ð €ðF<ˆsó <ð�×"Ñ"ó ð�7×%Ñ%ó ó3ò
ó
,ð
˜4ð  Có ð6 ô r   