refactor: Introduce accumulate_usage function for token aggregation, enhance alias map expansion in BatchProcessor, and streamline error handling in PreclassificationService. Update PDF processing utilities for improved image conversion and error logging.
This commit is contained in:
+15
-1
@@ -25,6 +25,8 @@ class MainProcessingTab:
|
||||
self._create_config_section()
|
||||
self._create_process_button()
|
||||
self._create_output_section()
|
||||
# Conectar el trace después de que todos los widgets existen
|
||||
self.mode_var.trace_add("write", lambda *_: self.update_ui_for_mode())
|
||||
|
||||
def _setup_layout(self):
|
||||
"""Configura el layout base de la pestaña."""
|
||||
@@ -297,10 +299,22 @@ class MainProcessingTab:
|
||||
def get_root_path(self) -> str:
|
||||
"""Devuelve la ruta raíz seleccionada."""
|
||||
return self.root_entry.get().strip()
|
||||
|
||||
|
||||
def set_root_path(self, path: str) -> None:
|
||||
"""Establece la ruta raíz."""
|
||||
self.root_entry.configure(state="normal")
|
||||
self.root_entry.delete(0, "end")
|
||||
self.root_entry.insert(0, path)
|
||||
|
||||
def get_csv_path(self) -> str:
|
||||
"""Devuelve la ruta del CSV."""
|
||||
return self.csv_entry.get().strip()
|
||||
|
||||
def set_csv_path(self, path: str) -> None:
|
||||
"""Establece la ruta del CSV."""
|
||||
self.csv_entry.configure(state="normal")
|
||||
self.csv_entry.delete(0, "end")
|
||||
self.csv_entry.insert(0, path)
|
||||
|
||||
def get_process_mode(self) -> str:
|
||||
"""Devuelve el modo de procesamiento: 'radicados' o 'general'."""
|
||||
|
||||
@@ -3,8 +3,11 @@ import customtkinter as ctk
|
||||
import tkinter.ttk as ttk
|
||||
from gui.styles import AppStyles
|
||||
|
||||
# matplotlib es opcional
|
||||
# matplotlib y numpy son opcionales
|
||||
try:
|
||||
import matplotlib
|
||||
matplotlib.use("Agg") # backend no interactivo para render en canvas Tk
|
||||
import numpy as np
|
||||
from matplotlib.figure import Figure
|
||||
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
|
||||
HAS_MPL = True
|
||||
@@ -226,7 +229,6 @@ class MetricsTab:
|
||||
extract_vals = [input_extract, cached_extract, output_extract]
|
||||
norm_vals = [input_norm, cached_norm, output_norm]
|
||||
|
||||
import numpy as np
|
||||
x = np.arange(len(labels))
|
||||
width = 0.35
|
||||
|
||||
|
||||
@@ -388,7 +388,13 @@ class PreclassificationTab:
|
||||
def get_root_path(self) -> str:
|
||||
"""Devuelve la ruta raíz de preclasificación."""
|
||||
return self.preclass_root_entry.get().strip()
|
||||
|
||||
|
||||
def set_root_path(self, path: str) -> None:
|
||||
"""Establece la ruta raíz de preclasificación."""
|
||||
self.preclass_root_entry.configure(state="normal")
|
||||
self.preclass_root_entry.delete(0, "end")
|
||||
self.preclass_root_entry.insert(0, path)
|
||||
|
||||
def get_mode(self) -> str:
|
||||
"""Devuelve el modo de preclasificación: 'radicados' o 'general'."""
|
||||
try:
|
||||
|
||||
@@ -202,6 +202,13 @@ class ResultsTab:
|
||||
def set_on_select_result(self, callback):
|
||||
"""Vincula el callback al evento de selección de fila."""
|
||||
self.tree_results.bind("<<TreeviewSelect>>", callback)
|
||||
|
||||
def get_selected_result_values(self) -> tuple | None:
|
||||
"""Devuelve los valores de la fila seleccionada o None si no hay selección."""
|
||||
selection = self.tree_results.selection()
|
||||
if not selection:
|
||||
return None
|
||||
return self.tree_results.item(selection[0], "values") or None
|
||||
|
||||
def update_matches_table(self, rows):
|
||||
"""Actualiza la tabla de matches con los datos proporcionados."""
|
||||
|
||||
Reference in New Issue
Block a user