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:
@@ -337,10 +337,71 @@ class Motor(unittest.TestCase):
|
||||
filas = [{"cubeta": "GRABACION", "marcado": False, "confianza": "baja"},
|
||||
{"cubeta": "GRABACION", "marcado": True, "confianza": "media"},
|
||||
{"cubeta": "BASURA", "marcado": True, "confianza": "alta"},
|
||||
{"cubeta": "PROXY", "marcado": False, "confianza": "baja"}, # sin su original, o dentro de «No tocar»
|
||||
{"cubeta": "EXPORTADOS", "marcado": False, "confianza": "baja"}]
|
||||
elegidas = asistente.filas_elegidas(filas, {"carpetas": "seguras"})
|
||||
self.assertEqual([(f["cubeta"], f["marcado"]) for f in elegidas], [("GRABACION", True), ("BASURA", True)])
|
||||
|
||||
def test_banco_de_material(self):
|
||||
"""Vía Sumapaz: 3,6 TB en «Material Vía (No tocar)», por temas, que el plan dejaba fuera por la palabra
|
||||
«material». Los temas se quedan; dentro, las grabaciones por fecha y cámara; todo sin marcar."""
|
||||
raiz = cliente("Banco")
|
||||
b = "Material Vía (No tocar)/"
|
||||
mk(raiz, b + "Lugares/Peajes/Drone/DJI_20240312101500_0001_D.MP4", 2024, 3, 12)
|
||||
mk(raiz, b + "Lugares/Peajes/URSA/A001_03121015_C001.mp4", 2024, 3, 12)
|
||||
mk(raiz, b + "Lugares/Peajes/URSA/Proxy/A001_03121015_C001.mov", 2024, 3, 12) # proxy con su original
|
||||
mk(raiz, b + "Lugares/Peajes/Final peajes.mp4", 2024, 4, 2) # montado: no se toca
|
||||
mk(raiz, b + "Material Importante/Social/Mercados/C0001.MP4", 2025, 5, 2)
|
||||
mk(raiz, b + "Material Importante/UF9/Drone/DJI_0001.MP4", 2009, 1, 19) # reloj sin poner
|
||||
mk(raiz, "2026/03- Marzo/Grabacion/C0010.MP4", 2026, 3, 12)
|
||||
mk(raiz, "2026/03- Marzo/Grabacion/Proxy/C0010.MOV", 2026, 3, 12) # proxy con original
|
||||
mk(raiz, "2026/04- Abril/01- Viejo/Proxy/C0099.MOV", 2026, 4, 2) # el único que queda
|
||||
dicc = O.DICC["carpetas"]
|
||||
self.assertEqual(O.R.cubeta_carpeta("Material Vía (No tocar)", dicc)[0], "BANCO")
|
||||
self.assertIsNone(O.R.cubeta_carpeta("Material juan", dicc)[0], "«material» suelto ya no ignora la carpeta")
|
||||
self.assertEqual(O.R.cubeta_carpeta("Material", dicc)[0], "IGNORAR")
|
||||
antes = nombres(raiz)
|
||||
p = plan(raiz)
|
||||
banco = [f for f in p["filas"] if f["paso"] == "banco"]
|
||||
destinos = {f["destino_rel"] for f in banco}
|
||||
B = "Material Vía (No tocar)"
|
||||
self.assertIn(rel(B, "Lugares", "Peajes", "2024-03-12", "OSMO"), destinos)
|
||||
self.assertIn(rel(B, "Lugares", "Peajes", "2024-03-12", "BLACKMAGIC_MP4"), destinos)
|
||||
self.assertIn(rel(B, "Material Importante", "Social", "Mercados", "2025-05-02", "SONY"), destinos)
|
||||
self.assertFalse([f for f in banco if f["marcado"]], "en «No tocar» nada va marcado")
|
||||
self.assertFalse([f for f in p["filas"] if any("Final peajes" in a for a in (f["archivos"] or []))], "movió lo montado")
|
||||
reloj = [f for f in banco if "reloj sin poner" in f["motivo"]]
|
||||
self.assertTrue(reloj and reloj[0]["confianza"] == "baja", [f["motivo"] for f in banco])
|
||||
prox = [f for f in p["filas"] if f["cubeta"] == "PROXY"]
|
||||
dentro = [f for f in prox if "Peajes" in f["origen_rel"]]
|
||||
self.assertTrue(dentro and not dentro[0]["marcado"] and "No tocar" in dentro[0]["motivo"], dentro)
|
||||
sin = [f for f in prox if "01- Viejo" in f["origen_rel"]]
|
||||
self.assertTrue(sin and not sin[0]["marcado"] and "OJO" in sin[0]["motivo"], sin)
|
||||
con = [f for f in prox if "03- Marzo" in f["origen_rel"]]
|
||||
self.assertTrue(con and con[0]["marcado"], con)
|
||||
# «hacer de una vez» no toca nada de lo que va sin marcar
|
||||
self.assertFalse([f for f in asistente.filas_elegidas(p["filas"], {"carpetas": "seguras"}) if not f["marcado"]])
|
||||
dentro_antes = [x for x in arbol(raiz) if x.startswith(B)]
|
||||
aplicar(raiz, p)
|
||||
self.assertEqual([x for x in arbol(raiz) if x.startswith(B)], dentro_antes, "tocó la carpeta «No tocar» sin que nadie lo marcara")
|
||||
self.assertTrue(os.path.isfile(os.path.join(raiz, "2026", "04- Abril", "01- Viejo", "Proxy", "C0099.MOV")), "apartó el proxy sin original")
|
||||
# si alguien lo marca, queda donde dice
|
||||
p2 = O.Plan(O.raiz_cfg(raiz)).correr()
|
||||
for f in p2["filas"]:
|
||||
f["marcado"] = f["paso"] == "banco"
|
||||
aplicar(raiz, p2)
|
||||
self.assertEqual(nombres(raiz), antes, "se perdió o se duplicó algún archivo")
|
||||
for esperado in (rel(B, "Lugares", "Peajes", "2024-03-12", "OSMO", "DJI_20240312101500_0001_D.MP4"),
|
||||
rel(B, "Lugares", "Peajes", "2024-03-12", "BLACKMAGIC_MP4", "A001_03121015_C001.mp4"),
|
||||
rel(B, "Lugares", "Peajes", "Final peajes.mp4"),
|
||||
rel(B, "Material Importante", "Social", "Mercados", "2025-05-02", "SONY", "C0001.MP4")):
|
||||
self.assertTrue(os.path.isfile(os.path.join(raiz, esperado)), "falta " + esperado + "\n" + "\n".join(arbol(raiz)))
|
||||
# y «Qué pesa» entra hasta el fondo y dice cómo la trata la app
|
||||
d = O.carpeta_detalle(raiz, os.path.join(raiz, B))
|
||||
self.assertEqual(d["trato"]["cubeta"], "BANCO")
|
||||
self.assertTrue(d["niveles"] >= 3 and "Lugares" in [h["nombre"] for h in d["hijos"]], d)
|
||||
self.assertIn("banco", [a["clave"] for a in O.acciones(raiz)["acciones"]])
|
||||
|
||||
def test_el_convertidor_no_repite(self):
|
||||
"""22 clips se habían convertido dos veces y algunos tres («…_10bit_10bit_10bit.mp4»)."""
|
||||
raiz = cliente("Convertidos")
|
||||
|
||||
Referencia en una nueva incidencia
Block a user