3.2.0: el orden mira la forma de las carpetas, no solo su nombre
Medido sobre una carpeta de cliente real (8.207 archivos, 920 GB) antes de tocar nada: - «Por nombrar» solo pregunta por lo que el plan llega a ver y no sabe resolver; ya no por las carpetas de la app ni por lo de dentro de la papelera. Lo aprendido vale por el nombre entero. - Una carpeta es una grabación por lo que tiene dentro: una pieza montada no se desarma, y lo que no es rodaje no acaba en 00_Grabacion\OTROS. Se conserva el nombre de cada sesión. - Una carpeta que guarda meses o años dentro se abre y cada cosa va a su mes; si la pieza ya existe allí, se junta con ella. - Repaso de lo ya ordenado: lo que está en un mes que no es el de su rodaje vuelve al suyo. - El año de un clip de Blackmagic sale de los demás clips de su tarjeta y día; un rodaje que pasa de medianoche cuenta como uno. - Un clip convertido sigue siendo de su cámara, y el convertidor no repite lo que ya convirtió. - «Exportados» junto a «_Exportados» y «_Papelera» junto a «_Para borrar» se juntan. - «Hacer de una vez» solo mueve lo marcado; lo dudoso que queda no cuenta como pendiente. - El inventario lleva la versión de las reglas: uno anterior pide escanear otra vez. Pruebas: prueba_orden.py (nueva, 19 casos), probar.py 19, prueba_funcional.py 26, prueba_ventana.py 18 desde el código y 17 con el paquete. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Este commit está contenido en:
64
README.md
64
README.md
@@ -17,7 +17,7 @@ static/manrope.woff2 ← la tipografía, para no pedirle nada a nadie fuera de
|
||||
WebView2Loader.dll ← la entrada a WebView2 (Microsoft, firmada); lo único que viaja y no es de Python
|
||||
datos/ ← inventario.sqlite, config.json, diccionario.json (lo aprendido), bitacora.jsonl
|
||||
empaquetar.py ← arma el paquete: dist\OrganizadorLabstream\ con OrganizadorLabstream.exe y los dos zips
|
||||
probar.py ← 19 pruebas sin abrir nada · prueba_funcional.py: las 26 funciones · prueba_ventana.py: la ventana de verdad
|
||||
probar.py ← 19 pruebas sin abrir nada · prueba_orden.py: el motor de orden, caso a caso · prueba_funcional.py: las 26 funciones · prueba_ventana.py: la ventana de verdad
|
||||
Iniciar.bat ← desde el código, con consola (para ver lo que imprime)
|
||||
```
|
||||
|
||||
@@ -229,7 +229,7 @@ y nunca pisa un MP4 que ya exista; las raíces de unidad (`N:\`) ya se consultan
|
||||
|
||||
### Publicar una versión
|
||||
|
||||
py -3.12 probar.py && py -3.12 prueba_funcional.py && py -3.12 prueba_ventana.py
|
||||
py -3.12 probar.py && py -3.12 prueba_orden.py && py -3.12 prueba_funcional.py && py -3.12 prueba_ventana.py
|
||||
py -3.12 empaquetar.py # construye dist\, los dos zips y manifiesto.json (NOTAS="..." para las notas)
|
||||
py -3.12 prueba_ventana.py --paquete dist\OrganizadorLabstream # el paquete, arrancado por su .exe
|
||||
bash publicar.sh # sube los zips al NAS, deja el manifiesto en GitHub y despliega el OS
|
||||
@@ -757,6 +757,66 @@ son los de verdad. Consecuencias, vistas el 4 oct 2026:
|
||||
- Las pruebas que dan de alta en el registro (`probar.py`, `prueba_ventana.py`) no se ven afectadas: escriben
|
||||
y leen en la misma copia, y además usan una clave de ensayo.
|
||||
|
||||
3.2.0, el orden mira la forma de las carpetas, no solo su nombre. Munka pidió pulir la organización de las
|
||||
carpetas. Antes de tocar nada se midió sobre su carpeta de Andrea Galeano (`V:\Galeano`, 8.207 archivos,
|
||||
920 GB), el 4 oct 2026, y de ahí sale cada cambio:
|
||||
|
||||
- **«Por nombrar» preguntaba lo que no debía, y contestar hacía daño.** Salían todas las carpetas del
|
||||
inventario, también las de la propia app (`_Para borrar\basura`, las etiquetas que ella misma crea dentro
|
||||
de `00_Grabacion`) y las que solo existían ya dentro de la papelera. De las 6 preguntas que tenía esa
|
||||
carpeta, sobraban las 6; a todas proponía «grabación» porque medía por peso, y los clips pesan cien veces
|
||||
más que lo demás. Aceptarlas enseñó al diccionario que «orden», «videos» y «basura» eran grabaciones, y
|
||||
como lo aprendido valía también como palabra suelta dentro de otros nombres, «videos ia» pasó a ser
|
||||
grabación y el plan se dispuso a desarmar «01- Orden», 533 archivos y 65 GB con proyectos dentro.
|
||||
Ahora `vocabulario` recorre el inventario igual que el plan recorre el disco y solo pregunta por lo que el
|
||||
plan llega a ver y no sabe resolver; la propuesta sale de la forma de la carpeta y del número de archivos,
|
||||
y nunca es «grabación» (una grabación de verdad el plan la reconoce solo). Lo aprendido vale por el nombre
|
||||
entero; solo las palabras de fábrica valen dentro de otros nombres. Los nombres de la app no se pueden
|
||||
enseñar, y los que se habían colado se olvidan al arrancar. Sobre la misma carpeta: de 6 preguntas a 0.
|
||||
- **Una carpeta es una grabación por lo que tiene dentro** (`Estructura.es_rodaje`): casi todo clips de
|
||||
cámara, y sin las carpetas de una pieza montada (exportados, portada, stock, música, proyecto). Si el
|
||||
nombre lo dice con una palabra de fábrica basta con que casi todo sea material; si lo dijo alguien en
|
||||
«Por nombrar», se exige cámara reconocida. Una pieza a la que se llamó grabación ya no se desarma.
|
||||
Dentro de una grabación, lo que no es rodaje (un proyecto, un guion, una imagen de IA) ya no acaba en
|
||||
`00_Grabacion\OTROS`: va donde iría suelto; y una subcarpeta de exportados o de música va a lo suyo. Se
|
||||
conserva el nombre de cada sesión («Tomas consultorio») y la subcarpeta `Duplicados`.
|
||||
- **Cajones.** Una carpeta que guarda meses o años dentro («Orden», «Proyectos\Mayo», «Edición\11-Noviembre»)
|
||||
no es una cosa que mover: se abre, y lo de dentro se fecha solo, sin heredar el mes donde el cajón esté
|
||||
metido (`Plan.abrir`). Vale también para una carpeta numerada como pieza cuando alguien confirma que es un
|
||||
cajón. Solo en clientes cuyas piezas van por mes: una campaña con sus fechas se sigue moviendo entera.
|
||||
Si la pieza que llega ya existe en ese mes, se junta con ella en vez de dejar una gemela al lado.
|
||||
- **Repaso de lo ya ordenado** (`Plan.plan_auditoria`). Las carpetas de la estructura no se volvían a
|
||||
mirar, así que lo que una versión anterior dejó en el mes equivocado se quedaba ahí. En esa carpeta, 385
|
||||
clips (464,6 GB) estaban en un mes que no era el de su rodaje: los de diciembre de 2025, en marzo. Se
|
||||
proponen a su mes los que llevan la fecha en el nombre, y con ellos lo que se grabó ese mismo día.
|
||||
- **El año de un clip de Blackmagic.** El nombre trae tarjeta, mes, día y hora, pero no año. Antes salía de
|
||||
la fecha del archivo (que una conversión cambia) o del año de la carpeta (que podía estar mal: mandaba a
|
||||
diciembre de 2024 lo de diciembre de 2025). Ahora todos los clips de la misma tarjeta y día comparten
|
||||
año (`_fechas_de_rodaje`): el del que conserve su fecha de cámara, o el más antiguo. Y un rodaje que pasa
|
||||
de medianoche es uno solo: el del 31 de mayo a las 21:07 seguía a las 04:00 del 1 de junio y salía partido
|
||||
en dos meses.
|
||||
- **Un clip convertido sigue siendo de su cámara.** 166 clips que ya habían pasado por el convertidor
|
||||
(«C0001_10bit.mp4») habían perdido su cámara: contaban como «video que no viene de cámara» e iban a OTROS
|
||||
o a exportados. Y el convertidor no reconocía su propia salida: 22 estaban convertidos dos veces y algunos
|
||||
tres («…_10bit_10bit_10bit.mp4»). `firma_archivo` mira el nombre sin el sufijo del convertidor (ni el
|
||||
« (2)» de una copia), y `candidatos` no vuelve a ofrecer lo que ya convirtió.
|
||||
- **Carpetas gemelas.** `CARPETAS_PROPIAS` comparaba sin el guion bajo, así que una «Exportados» hecha a
|
||||
mano pasaba por la `_Exportados` de la app y no se tocaba: convivían las dos en el mismo mes. Ahora las
|
||||
propias salen de las plantillas del tipo de cliente, y la gemela se junta con la buena. Lo mismo con la
|
||||
papelera: `_Papelera`, el nombre de antes, se junta con `_Para borrar`.
|
||||
- **«Hacer las N de una vez» solo hace lo marcado.** El material de cámara entraba entero aunque el plan
|
||||
lo diera por dudoso. La fecha de un original de cámara sí cuenta como probable (es la del rodaje). Lo
|
||||
dudoso que queda después ya no cuenta como tarea pendiente, y el stock viejo que la lista contaba ahora
|
||||
se aparta entero (la licencia y el «léeme» de un paquete de Envato se quedaban atrás para siempre).
|
||||
- **Inventario con versión** (`R.VERSION_REGLAS`). Cambió lo que el escaneo apunta de cada archivo, así
|
||||
que un inventario hecho con una versión anterior pide «Escanear otra vez» antes de planear nada.
|
||||
|
||||
Comprobado sobre una réplica local de esa carpeta (mismos nombres, carpetas y fechas; archivos de 64 bytes;
|
||||
el NAS no se tocó): «hacer de una vez» hizo 803 movimientos sin errores ni pérdidas, «01- Orden» quedó vacía
|
||||
y repartida en sus meses, y una segunda pasada no propuso nada marcado. Pruebas: `prueba_orden.py`, nueva,
|
||||
19 casos que reproducen cada uno de estos puntos en pequeño; `probar.py` 19 de 19, `prueba_funcional.py` 26
|
||||
de 26 y `prueba_ventana.py` 18.
|
||||
|
||||
Probado el 9 sep 2026 sobre una copia de ensayo: plan → aplicar → deshacer → volver a aplicar deja el árbol
|
||||
exacto; conversión ffmpeg verificada y reemplazo con original a `_Para borrar`. El puente de Resolve conectó
|
||||
con Resolve Studio 21.1 pero no pudo abrir proyecto porque Resolve estaba en el Gestor de proyectos:
|
||||
|
||||
Referencia en una nueva incidencia
Block a user