akra35567 commited on
Commit
280d1af
·
1 Parent(s): ed86d11

Update modules/database.py

Browse files
Files changed (1) hide show
  1. modules/database.py +35 -8
modules/database.py CHANGED
@@ -3,7 +3,6 @@ Banco de dados SQLite para Akira IA.
3
  Gerencia contexto, mensagens, embeddings, gírias, tom e aprendizados detalhados.
4
  Versão 11/2025 - compatível com treinamento.py (SentenceTransformers)
5
  """
6
-
7
  import sqlite3
8
  import time
9
  import os
@@ -118,19 +117,17 @@ class Database:
118
  girias TEXT,
119
  tom TEXT
120
  );
121
-
122
- -- ADICIONADO: Tabela para resolver o erro "no such table"
123
  CREATE TABLE IF NOT EXISTS pronomes_por_tom (
124
  tom TEXT PRIMARY KEY,
125
  pronomes TEXT
126
  );
127
  """);
128
-
129
- # ADICIONADO: Inserção de dados padrão para a nova tabela
130
  c.execute("INSERT OR IGNORE INTO pronomes_por_tom (tom, pronomes) VALUES (?, ?)", ('neutro', 'tu/você'))
131
  c.execute("INSERT OR IGNORE INTO pronomes_por_tom (tom, pronomes) VALUES (?, ?)", ('formal', 'o senhor/a senhora'))
132
  c.execute("INSERT OR IGNORE INTO pronomes_por_tom (tom, pronomes) VALUES (?, ?)", ('informal', 'puto/kota'))
133
-
134
  conn.commit()
135
  logger.info(f"Banco inicializado: {self.db_path}")
136
  except Exception as e:
@@ -234,7 +231,7 @@ class Database:
234
  # ================================================================
235
  def salvar_contexto(self, user_key, historico, emocao_atual, termos, girias, tom):
236
  self._execute_with_retry(
237
- """INSERT OR REPLACE INTO contexto
238
  (user_key, historico, emocao_atual, termos, girias, tom)
239
  VALUES (?, ?, ?, ?, ?, ?)""",
240
  (user_key, historico, emocao_atual, termos, girias, tom),
@@ -285,4 +282,34 @@ class Database:
285
  "INSERT INTO girias_aprendidas (numero_usuario, giria, significado, contexto) VALUES (?, ?, ?, ?)",
286
  (numero_usuario, giria, significado, contexto),
287
  commit=True
288
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  Gerencia contexto, mensagens, embeddings, gírias, tom e aprendizados detalhados.
4
  Versão 11/2025 - compatível com treinamento.py (SentenceTransformers)
5
  """
 
6
  import sqlite3
7
  import time
8
  import os
 
117
  girias TEXT,
118
  tom TEXT
119
  );
 
 
120
  CREATE TABLE IF NOT EXISTS pronomes_por_tom (
121
  tom TEXT PRIMARY KEY,
122
  pronomes TEXT
123
  );
124
  """);
125
+
126
+ # Dados padrão
127
  c.execute("INSERT OR IGNORE INTO pronomes_por_tom (tom, pronomes) VALUES (?, ?)", ('neutro', 'tu/você'))
128
  c.execute("INSERT OR IGNORE INTO pronomes_por_tom (tom, pronomes) VALUES (?, ?)", ('formal', 'o senhor/a senhora'))
129
  c.execute("INSERT OR IGNORE INTO pronomes_por_tom (tom, pronomes) VALUES (?, ?)", ('informal', 'puto/kota'))
130
+
131
  conn.commit()
132
  logger.info(f"Banco inicializado: {self.db_path}")
133
  except Exception as e:
 
231
  # ================================================================
232
  def salvar_contexto(self, user_key, historico, emocao_atual, termos, girias, tom):
233
  self._execute_with_retry(
234
+ """INSERT OR REPLACE INTO contexto
235
  (user_key, historico, emocao_atual, termos, girias, tom)
236
  VALUES (?, ?, ?, ?, ?, ?)""",
237
  (user_key, historico, emocao_atual, termos, girias, tom),
 
282
  "INSERT INTO girias_aprendidas (numero_usuario, giria, significado, contexto) VALUES (?, ?, ?, ?)",
283
  (numero_usuario, giria, significado, contexto),
284
  commit=True
285
+ )
286
+
287
+ # ================================================================
288
+ # MÉTODO ADICIONADO: recuperar_girias_usuario
289
+ # ================================================================
290
+ def recuperar_girias_usuario(self, numero_usuario: str) -> List[Dict[str, Any]]:
291
+ """
292
+ Recupera todas as gírias aprendidas para um usuário.
293
+ Retorna: [{'giria': 'baza', 'significado': 'ir embora', 'frequencia': 5}, ...]
294
+ """
295
+ try:
296
+ rows = self._execute_with_retry(
297
+ """
298
+ SELECT giria, significado, frequencia, contexto
299
+ FROM girias_aprendidas
300
+ WHERE numero_usuario = ?
301
+ ORDER BY frequencia DESC, updated_at DESC
302
+ """,
303
+ (numero_usuario,)
304
+ )
305
+ return [
306
+ {
307
+ 'giria': row[0],
308
+ 'significado': row[1],
309
+ 'frequencia': row[2],
310
+ 'contexto': row[3]
311
+ } for row in rows
312
+ ] if rows else []
313
+ except Exception as e:
314
+ logger.warning(f"Falha ao carregar gírias do usuário {numero_usuario}: {e}")
315
+ return []