Inicio dice lo que ya se hizo: el plan se olvida al mover y se vuelve a pensar solo
Auditoría de «mover y reorganizar». El motor movía bien, pero el plan en memoria solo se olvidaba al aplicar desde «Qué va a pasar»: tras «Hacer las N de una vez», apartar stock, juntar repetidos, reemplazar o deshacer, Inicio seguía ofreciendo lo ya hecho («5 cambios · Ver y aplicar», «Plan listo: 7 de 9») o, tras deshacer, daba por hecho lo que volvía a estar en desorden. Ahora cualquier movimiento olvida el plan y lo vuelve a pensar en segundo plano; un plan sin nada marcado es «hecho», cada ficha dice cuándo se hizo y cuántos movimientos, y el diagnóstico no cuenta como basura lo que ya está en _Para borrar. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Este commit está contenido en:
@@ -228,6 +228,13 @@ def p_plan():
|
||||
LOTES = {}
|
||||
|
||||
|
||||
def acciones_quietas():
|
||||
"""La lista de Inicio cuando el programa ha terminado de volver a pensar el plan tras mover algo."""
|
||||
assert esperar(lambda: not get('/api/carpeta/acciones' + q(raiz=RAIZ))['calculando'], 60), 'el plan no se volvió a pensar'
|
||||
a = get('/api/carpeta/acciones' + q(raiz=RAIZ))
|
||||
return a, {x['clave']: x for x in a['acciones']}
|
||||
|
||||
|
||||
def p_aplicar():
|
||||
antes = arbol()
|
||||
c, r = post('/api/aplicar', {'raiz': RAIZ, 'ids': [f['id'] for f in PLAN['filas'] if f['marcado']]})
|
||||
@@ -241,7 +248,17 @@ def p_aplicar():
|
||||
assert sorted(os.path.basename(x) for x in antes) == sorted(os.path.basename(x) for x in despues), 'se perdió algún archivo'
|
||||
assert '10- Octubre' in os.listdir(os.path.join(RAIZ, '2026')), 'el mes sigue en minúsculas: %s' % os.listdir(os.path.join(RAIZ, '2026'))
|
||||
assert not any('thumbs.db' in x and '_para borrar' not in x for x in despues), 'la basura sigue fuera'
|
||||
return '%d movimientos, sin errores, «10- octubre» pasó a «10- Octubre»; el avance acabó en %d de %d' % (r['movimientos'], av['unidades'], av['unidades_total'])
|
||||
# Inicio, sin que nadie vuelva a calcular: lo hecho sale como hecho (y cuándo), no como pendiente
|
||||
a, por = acciones_quietas()
|
||||
assert por['resto']['estado'] == 'hecho' and por['resto']['detalle'].startswith('Hecho hoy'), por['resto']
|
||||
assert por['fechas']['estado'] != 'toca', por['fechas']
|
||||
assert por['limpiar']['estado'] == 'hecho' and 'ya en' in por['limpiar']['detalle'], por['limpiar']
|
||||
assert a['ultimo'] and a['ultimo']['lote'] == r['lote'], a['ultimo']
|
||||
e = get('/api/carpeta/estado' + q(raiz=RAIZ))
|
||||
assert e['plan'] and e['plan']['marcadas'] == 0, e['plan']
|
||||
fr = e['diagnostico']['frases']
|
||||
assert any('ya apartados' in f for f in fr) and not any('de basura de sistema' in f for f in fr), fr
|
||||
return '%d movimientos, sin errores, «10- octubre» pasó a «10- Octubre»; el avance acabó en %d de %d; Inicio lo da por hecho' % (r['movimientos'], av['unidades'], av['unidades_total'])
|
||||
|
||||
|
||||
def p_deshacer():
|
||||
@@ -249,7 +266,11 @@ def p_deshacer():
|
||||
assert c == 200 and not r['errores'], r
|
||||
assert '10- octubre' in os.listdir(os.path.join(RAIZ, '2026')), 'deshacer no devolvió las minúsculas: %s' % os.listdir(os.path.join(RAIZ, '2026'))
|
||||
assert os.path.isfile(os.path.join(RAIZ, '2026', '03- Marzo', 'Grabacion', 'Thumbs.db')), 'la basura no volvió'
|
||||
return '%d movimientos deshechos' % r['deshechos']
|
||||
# y en Inicio vuelve a estar todo por hacer (antes se quedaba con «lo seguro ya está hecho»)
|
||||
a, por = acciones_quietas()
|
||||
assert all(por[k]['estado'] == 'toca' for k in ('limpiar', 'fechas', 'resto')), {k: por[k]['estado'] for k in ('limpiar', 'fechas', 'resto')}
|
||||
assert not a['ultimo'], a['ultimo']
|
||||
return '%d movimientos deshechos, e Inicio vuelve a ofrecerlo todo' % r['deshechos']
|
||||
|
||||
|
||||
def p_reaplicar():
|
||||
@@ -448,7 +469,10 @@ def p_asistente():
|
||||
assert esperar(lambda: not get('/api/estado')['asistente'].get('activo'), 120)
|
||||
a = get('/api/estado')['asistente']
|
||||
assert not a.get('error'), a.get('error')
|
||||
return 'pasos + «hacer las N de una vez» terminan sin error'
|
||||
# después, Inicio no vuelve a ofrecer lo que acaba de hacer
|
||||
_, por = acciones_quietas()
|
||||
assert por['fechas']['estado'] != 'toca' and por['resto']['estado'] != 'toca', {k: por[k] for k in ('fechas', 'resto')}
|
||||
return 'pasos + «hacer las N de una vez» terminan sin error, e Inicio no lo vuelve a ofrecer'
|
||||
|
||||
|
||||
def p_pieza():
|
||||
|
||||
Referencia en una nueva incidencia
Block a user