Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -33,15 +33,19 @@ FEEDBACK_CSV_COLUMNS = [
|
|
| 33 |
def normalize_text_for_feedback(text):
|
| 34 |
if pd.isna(text):
|
| 35 |
return ""
|
|
|
|
|
|
|
|
|
|
| 36 |
from enhanced_search_v2 import normalize_text as es_normalize_text
|
| 37 |
return es_normalize_text(str(text).strip())
|
| 38 |
|
| 39 |
|
| 40 |
def load_user_feedback():
|
| 41 |
global USER_BEST_MATCHES_COUNTS
|
| 42 |
-
USER_BEST_MATCHES_COUNTS = {}
|
| 43 |
feedback_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), USER_FEEDBACK_FILE)
|
| 44 |
|
|
|
|
| 45 |
if not os.path.exists(feedback_file_path):
|
| 46 |
print(f"--- [AVISO] Arquivo de feedback '{USER_FEEDBACK_FILE}' não encontrado. Criando um novo. ---")
|
| 47 |
try:
|
|
@@ -52,18 +56,35 @@ def load_user_feedback():
|
|
| 52 |
print(f"--- [ERRO] Falha ao criar '{USER_FEEDBACK_FILE}': {e} ---")
|
| 53 |
return
|
| 54 |
|
|
|
|
| 55 |
try:
|
| 56 |
with open(feedback_file_path, 'r', encoding='utf-8') as f:
|
| 57 |
reader = csv.reader(f)
|
| 58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
|
| 60 |
-
if
|
| 61 |
print(
|
| 62 |
f"--- [AVISO] Cabeçalho de '{USER_FEEDBACK_FILE}' inesperado: {header}. Esperado: {FEEDBACK_CSV_COLUMNS}. Recriando arquivo.")
|
|
|
|
| 63 |
with open(feedback_file_path, 'w', newline='', encoding='utf-8') as f_write:
|
| 64 |
writer = csv.writer(f_write)
|
| 65 |
writer.writerow(FEEDBACK_CSV_COLUMNS)
|
| 66 |
-
return
|
|
|
|
| 67 |
|
| 68 |
for row in reader:
|
| 69 |
if len(row) == len(FEEDBACK_CSV_COLUMNS):
|
|
@@ -164,7 +185,7 @@ try:
|
|
| 164 |
load_correction_corpus,
|
| 165 |
load_general_dictionary,
|
| 166 |
search_procedure_with_log,
|
| 167 |
-
normalize_text as es_normalize_text
|
| 168 |
)
|
| 169 |
|
| 170 |
print("--- [SUCESSO] Módulo 'enhanced_search_v2.py' importado. ---")
|
|
@@ -187,6 +208,9 @@ except Exception as e:
|
|
| 187 |
traceback.print_exc();
|
| 188 |
sys.exit(1)
|
| 189 |
|
|
|
|
|
|
|
|
|
|
| 190 |
load_user_feedback()
|
| 191 |
|
| 192 |
try:
|
|
|
|
| 33 |
def normalize_text_for_feedback(text):
|
| 34 |
if pd.isna(text):
|
| 35 |
return ""
|
| 36 |
+
# Importar normalize_text de enhanced_search_v2 para garantir consistência
|
| 37 |
+
# É importante que enhanced_search_v2 já tenha sido importado antes desta função ser chamada.
|
| 38 |
+
# No seu código, enhanced_search_v2 é importado globalmente, então esta linha funciona.
|
| 39 |
from enhanced_search_v2 import normalize_text as es_normalize_text
|
| 40 |
return es_normalize_text(str(text).strip())
|
| 41 |
|
| 42 |
|
| 43 |
def load_user_feedback():
|
| 44 |
global USER_BEST_MATCHES_COUNTS
|
| 45 |
+
USER_BEST_MATCHES_COUNTS = {} # Reseta o dicionário em memória para carregar do arquivo
|
| 46 |
feedback_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), USER_FEEDBACK_FILE)
|
| 47 |
|
| 48 |
+
# 1. Se o arquivo não existe, cria com o cabeçalho
|
| 49 |
if not os.path.exists(feedback_file_path):
|
| 50 |
print(f"--- [AVISO] Arquivo de feedback '{USER_FEEDBACK_FILE}' não encontrado. Criando um novo. ---")
|
| 51 |
try:
|
|
|
|
| 56 |
print(f"--- [ERRO] Falha ao criar '{USER_FEEDBACK_FILE}': {e} ---")
|
| 57 |
return
|
| 58 |
|
| 59 |
+
# 2. Tenta carregar o feedback do arquivo existente
|
| 60 |
try:
|
| 61 |
with open(feedback_file_path, 'r', encoding='utf-8') as f:
|
| 62 |
reader = csv.reader(f)
|
| 63 |
+
|
| 64 |
+
# --- INÍCIO DA CORREÇÃO ---
|
| 65 |
+
# Verifica se o arquivo está vazio antes de tentar ler o cabeçalho
|
| 66 |
+
try:
|
| 67 |
+
header = next(reader)
|
| 68 |
+
except StopIteration:
|
| 69 |
+
print(f"--- [AVISO] '{USER_FEEDBACK_FILE}' está vazio ou contém apenas linhas em branco. Recriando cabeçalho.")
|
| 70 |
+
# Recria o arquivo com apenas o cabeçalho se ele estiver vazio
|
| 71 |
+
with open(feedback_file_path, 'w', newline='', encoding='utf-8') as f_write:
|
| 72 |
+
writer = csv.writer(f_write)
|
| 73 |
+
writer.writerow(FEEDBACK_CSV_COLUMNS)
|
| 74 |
+
return # Sai da função, pois não há dados para carregar
|
| 75 |
+
|
| 76 |
+
# Normaliza o cabeçalho lido para remover espaços em branco e garantir comparação exata
|
| 77 |
+
header_normalized = [col.strip() for col in header]
|
| 78 |
|
| 79 |
+
if header_normalized != FEEDBACK_CSV_COLUMNS:
|
| 80 |
print(
|
| 81 |
f"--- [AVISO] Cabeçalho de '{USER_FEEDBACK_FILE}' inesperado: {header}. Esperado: {FEEDBACK_CSV_COLUMNS}. Recriando arquivo.")
|
| 82 |
+
# Recria o arquivo com o cabeçalho correto (apaga o conteúdo existente)
|
| 83 |
with open(feedback_file_path, 'w', newline='', encoding='utf-8') as f_write:
|
| 84 |
writer = csv.writer(f_write)
|
| 85 |
writer.writerow(FEEDBACK_CSV_COLUMNS)
|
| 86 |
+
return # Sai da função, pois o arquivo foi reformatado e não há dados antigos para carregar
|
| 87 |
+
# --- FIM DA CORREÇÃO ---
|
| 88 |
|
| 89 |
for row in reader:
|
| 90 |
if len(row) == len(FEEDBACK_CSV_COLUMNS):
|
|
|
|
| 185 |
load_correction_corpus,
|
| 186 |
load_general_dictionary,
|
| 187 |
search_procedure_with_log,
|
| 188 |
+
normalize_text as es_normalize_text # Importado para ser usado em normalize_text_for_feedback
|
| 189 |
)
|
| 190 |
|
| 191 |
print("--- [SUCESSO] Módulo 'enhanced_search_v2.py' importado. ---")
|
|
|
|
| 208 |
traceback.print_exc();
|
| 209 |
sys.exit(1)
|
| 210 |
|
| 211 |
+
# Esta linha deve ser chamada DEPOIS que enhanced_search_v2 foi importado,
|
| 212 |
+
# pois normalize_text_for_feedback depende de es_normalize_text.
|
| 213 |
+
# Sua ordem atual está correta.
|
| 214 |
load_user_feedback()
|
| 215 |
|
| 216 |
try:
|