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:
21
reglas.py
21
reglas.py
@@ -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",
|
||||
|
||||
Referencia en una nueva incidencia
Block a user