Spaces:
Running
Running
Update modules/database.py
Browse files- 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 |
-
#
|
| 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 []
|