Skip to content

fix: corregir bugs silenciosos, malas prácticas y convenciones de logging#6

Draft
Copilot wants to merge 3 commits intomainfrom
copilot/investigar-malas-practicas-codigo
Draft

fix: corregir bugs silenciosos, malas prácticas y convenciones de logging#6
Copilot wants to merge 3 commits intomainfrom
copilot/investigar-malas-practicas-codigo

Conversation

Copy link
Copy Markdown

Copilot AI commented Apr 9, 2026

Auditoría técnica del repositorio en busca de bugs reales, fallas silenciosas, código duplicado y convenciones inconsistentes. Se corrigen 16 problemas en 11 archivos.

Bugs reales

  • Path(None) crash en recover_orphaned_pdf: orphaned_info.get("archivo") puede ser None; Path(None) lanza TypeError que quedaba tragado por el except Exception exterior. Ahora se valida clave y archivo antes de construir el Path.
  • f-string faltante en classifier.py: el mensaje de error mostraba literalmente {attempt + 1} en vez del número real de intentos.
  • str en vez de Path pasado a heal_classified_path en classification_utils.py.
  • Divergencia en sum_decimal_strings: xml_manager retornaba "" para input vacío; iva_utils retorna "0". Unificado a "0".

Fallas silenciosas

Múltiples bloques except: pass sin ningún log convertidos a logger.debug/warning:

# Antes — error de caché, JSON corrupto, fallo de BD: nadie se enteraba
except Exception:
    pass

# Después
except Exception:
    logger.debug("Error leyendo caché XML para %s; se recalculará hash.", xml_path.name)

Adicionalmente, recover_orphaned_pdf ahora re-lanza el error original de safe_move_file con contexto en vez de descartarlo y lanzar un RuntimeError genérico.

Logging

  • recover_orphaned_pdf usaba logging.* (root logger) en vez del logger del módulo.
  • F-strings en llamadas logger.* reemplazadas por formato % lazy en classifier.py y pdf_cache.py.
  • LOGGER (mayúsculas) renombrado a logger en xml_manager.py, cabys_manager.py, corte_engine.py, corte_excel.py para consistencia con el resto del proyecto.

Nombres y duplicación

  • razon_omisión (atributo con acento Unicode en FacturaRecord) renombrado a razon_omision — consistente con el resto de campos del modelo y sin riesgo con herramientas de análisis estático.
  • Alias opaco _pdv_global en factura_index.py eliminado; ahora importa parse_decimal_value directamente.
  • Función _sha256 definida inline en consolidate_duplicate_client_folders eliminada; usa sha256_file importada de classifier.py.

Copilot AI changed the title [WIP] Investigate code repository for bad practices and silent failures fix: corregir bugs silenciosos, malas prácticas y convenciones de logging Apr 9, 2026
Copilot AI requested a review from ElPoot April 9, 2026 04:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants