ParamManagerScripts/backend/script_groups/EmailCrono/.doc/MemoriaDeEvolucion.md

3.6 KiB

Memoria de Evolución - Procesador de Emails a Cronología

Descripcion de los scripts Procesador de Emails a Cronología

Este script procesa archivos de correo electrónico (.eml) para extraer su contenido, gestionar adjuntos y generar un archivo Markdown que presenta los mensajes en orden cronológico inverso.

Lógica Principal:

Beautify: Carga reglas de embellecimiento de texto desde config/beautify_rules.json para limpiar el contenido de los correos. Descubrimiento: Busca todos los archivos .eml en el directorio de trabajo configurado.

Procesamiento Individual: Itera sobre cada archivo .eml encontrado. Utiliza utils.email_parser.procesar_eml para extraer metadatos (fecha, asunto, remitente, destinatarios), contenido del cuerpo y guardar los archivos adjuntos en la carpeta especificada. Calcula un hash para cada mensaje para detectar duplicados.

Si un mensaje es nuevo (no duplicado):

Aplica las reglas de BeautifyProcessor al contenido del cuerpo. Añade el mensaje procesado a una lista.

Ordenación: Ordena la lista de mensajes únicos por fecha, del más reciente al más antiguo.

Generación de Índice: Crea una sección de índice en formato Markdown con enlaces internos a cada mensaje. Salida Markdown: Escribe el índice seguido del contenido formateado en Markdown de cada mensaje en el archivo de salida configurado (ej. cronologia.md).

2025-08-08 — Inversión de directorios (entrada/salida)

  • Decisión: Alinear con la guía backend_setup.md para que:
    • working_directory sea el directorio de salida (resultado), donde se escribe cronologia.md y se guardan los adjuntos.
    • level3.input_directory sea el directorio de entrada donde se leen los .eml.
  • Cambios:
    • esquema_work.json: se renombra output_directoryinput_directory y se actualizan title/description.
    • x1.py:
      • Lee level3.input_directory como entrada.
      • Escribe cronologia_file y attachments_dir dentro de working_directory.
      • Crea directorios de salida si no existen.
      • Se corrigen lints (E402 y líneas largas) sin alterar lógica.
  • Impacto:
    • Los work_dir.json existentes deben actualizar la clave a input_directory.
    • No hay cambios en claves de level2 (cronologia_file, attachments_dir).

2025-08-08 — Manejo de imágenes (inline y adjuntas) y embebido en Markdown

  • Decisión:
    • Capturar imágenes tanto adjuntas (attachment) como inline (inline/sin Content-Disposition).
    • Guardar las imágenes en el directorio de adjuntos configurado y además copiar a adjuntos/cronologia dentro del working_directory.
    • Incrustar en el Markdown enlaces de Obsidian con ruta absoluta al archivo copiado en adjuntos/cronologia usando la sintaxis de embed ![[...]] bajo una sección ### Imágenes por mensaje.
  • Cambios:
    • utils/attachment_handler.py: nueva función guardar_imagen que genera nombres a partir de Content-ID o hash y evita colisiones por contenido; refactor de hashing de contenido.
    • utils/email_parser.py:
      • Se amplía la firma de procesar_eml/procesar_eml_interno para recibir dir_adjuntos_cronologia y copiar allí las imágenes.
      • Se manejan imágenes en partes attachment y inline, agregando su ruta absoluta copiada a mensaje.imagenes_cronologia.
    • models/mensaje_email.py: to_markdown() agrega sección ### Imágenes con ![[ruta_absoluta]] previo a ### Adjuntos.
    • x1.py: crea adjuntos/cronologia y pasa la ruta al parser.
  • Impacto:
    • El .md resultante muestra las imágenes embebidas (Obsidian) desde rutas absolutas bajo .../adjuntos/cronologia/....
    • Se preserva el listado de adjuntos como enlaces [[archivo]].