3.7.0: auditoría de Vía Sumapaz: «Calcular» ya no se queda gris, banco de material por temas, proxies sin original, y «Qué pesa» por dentro

- El botón «Calcular» (y «Reanudar» la cola, y «Volver a pintar») quedaba deshabilitado para siempre tras
  la primera vez: al cambiar de carpeta «Qué va a pasar» no calculaba nada.
- «material» suelto ya no ignora una carpeta; «No tocar» es un banco de material: los temas se quedan y,
  dentro, las grabaciones van por fecha y cámara, todo sin marcar.
- «Hacer de una vez» y la pasada de la noche ya no mueven basura ni proxies sin marcar; un proxy sin su
  original va sin marcar.
- «Qué pesa» entra nivel a nivel con el detalle de cada carpeta; repetidos, plan e Inicio mucho más rápidos;
  aviso cuando el tipo de trabajo de la carpeta no es el del cliente.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Este commit está contenido en:
Labstream
2026-10-14 06:55:38 -05:00
padre 0b15a6d788
commit cea36ea0c5
Se han modificado 7 ficheros con 694 adiciones y 44 borrados

Ver fichero

@@ -451,6 +451,7 @@ CUBETAS = {
"CELULAR": "Material de celular",
"PROXY": "Proxies (se pueden regenerar)",
"BASURA": "Basura de sistema / cachés",
"BANCO": "Banco de material por temas: los temas se quedan; dentro, las grabaciones por fecha y cámara",
"CONTENEDOR": "Carpeta contenedora: mirar adentro",
"REVISAR": "Revisar a mano",
"IGNORAR": "Dejar como está",
@@ -544,6 +545,21 @@ MARCA_SUB = {
_SEMILLA_POR_LARGO = sorted(DICCIONARIO_SEMILLA, key=lambda k: -len(k))
# «Material» a secas es estructura (la carpeta de material de una campaña o de la raíz de pauta), pero como
# palabra suelta dentro de otro nombre no dice nada. Medido el 14-oct-2026 en Vía Sumapaz: «Material Vía (No
# tocar)», 3,6 TB y el 85 % del disco, y dentro «Material Importante», 2,6 TB, se quedaban fuera del orden
# por llevar esa palabra delante.
SOLO_NOMBRE_COMPLETO = {"material"}
# «(No tocar)», «NO MOVER»: alguien dejó dicho que esa carpeta se respeta. Es un banco de material: sus
# temas no se mueven y lo que la app propone dentro va sin marcar, para que lo decida una persona.
_RX_NO_TOCAR = re.compile(r"(^| )no (tocar|mover|borrar)( |$)")
def es_no_tocar(nombre: str) -> bool:
return bool(_RX_NO_TOCAR.search(norm(nombre)))
def cubeta_carpeta(nombre: str, diccionario: dict):
"""(cubeta, motivo) de una carpeta por su nombre; None si no se reconoce."""
if es_basura_dir(nombre):
@@ -555,6 +571,8 @@ def cubeta_carpeta(nombre: str, diccionario: dict):
n = norm(nombre)
if n in diccionario:
return diccionario[n], f"diccionario: «{n}»"
if _RX_NO_TOCAR.search(n):
return "BANCO", "el nombre dice «No tocar»: es un banco de material"
# tokens de varias palabras primero, luego palabras sueltas
# (CONTENEDOR solo por coincidencia exacta: "Material juan manuel" no es un cajón de sastre)
#
@@ -568,7 +586,7 @@ def cubeta_carpeta(nombre: str, diccionario: dict):
return diccionario[k], f"diccionario: contiene «{k}»"
palabras = n.split()
for k in claves:
if " " not in k and diccionario[k] != "CONTENEDOR" and k in palabras:
if " " not in k and diccionario[k] != "CONTENEDOR" and k not in SOLO_NOMBRE_COMPLETO and k in palabras:
return diccionario[k], f"diccionario: palabra «{k}»"
return None, ""
@@ -753,6 +771,7 @@ VERSION_REGLAS = 2
# Un color por tipo de material. Se usa en el mapa, en el gráfico de peso y —si se quiere— en el
# propio Explorador de Windows, poniéndole a cada carpeta un icono de ese color.
COLOR_CUBETA = {
"BANCO": "#b07d4f",
"ANIO": "#4f8cff", "GRABACION": "#e0574f", "PIEZA": "#7c5cff", "CAMPANA": "#ff8c42",
"EXPORTADOS": "#3ecf8e", "PORTADAS": "#f5b84b", "APOYOS": "#d96fd9", "MARCA": "#39b8c9",
"PROYECTOS": "#8fa1b8", "MUSICA": "#c9b339", "SFX": "#c9b339", "VOZ": "#c9b339",