2.6.0: auditoría, 100 % local y 26 funciones verificadas
Sale a la red solo lo que se pide: la tipografía viene con el programa (static/manrope.woff2) y el comprobador de versiones tiene interruptor en Ajustes. Nueva prueba funcional (prueba_funcional.py) que levanta una copia sobre un cliente de ensayo y ejercita las 26 funciones por su API, con una conversión real: 26 de 26. Fallos que sacó y quedan arreglados: - Un renombrado solo de mayúsculas («10- octubre» → «10- Octubre») se descartaba en Plan.agregar y en mover; deshacer decía «sitio ocupado». - Las carpetas que crea el plan no entraban en el inventario hasta el siguiente escaneo (_recontar_carpetas las da de alta y recuenta). - Una fusión de carpetas cortaba en el primer archivo que tropezaba. - «Viejo» era distinto en convertidor, stock y respaldo: ahora es_viejo. - /api/actualizacion informaba versión vacía hasta la primera consulta. - Filas de sueltos por carpeta de origen; mes del stock el más repetido; fuera tres rutas sin uso. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Este commit está contenido en:
47
README.md
47
README.md
@@ -9,6 +9,7 @@ organizador.py ← servidor + inventario + plan + cola de conversión
|
||||
reglas.py ← cómo reconoce cámaras, carpetas, basura y las plantillas de estructura
|
||||
resolve_bridge.py ← convierte BRAW a H.265 10 bits usando DaVinci Resolve Studio
|
||||
static/index.html ← la interfaz (Carpeta · Revisar y ordenar · Mapa · Convertidor · Respaldar · Historial · Ajustes)
|
||||
static/manrope.woff2 ← la tipografía, para no pedirle nada a nadie fuera de este equipo
|
||||
datos/ ← inventario.sqlite, config.json, diccionario.json (lo aprendido), bitacora.jsonl
|
||||
```
|
||||
|
||||
@@ -521,6 +522,52 @@ Probado sobre un árbol de ensayo con un marzo de tres rodajes y un mayo de uno
|
||||
en `03- Martes`, `11- Miércoles` y `19- Jueves`, mayo se queda sin carpeta de día, y aplicar y deshacer
|
||||
dejan el árbol exacto.
|
||||
|
||||
2.6.0, auditoría: 100 % local y las 26 funciones verificadas una a una.
|
||||
|
||||
**Qué sale a la red.** Se buscó toda llamada externa en el código: había dos. La tipografía Manrope se
|
||||
pedía a Google en cada arranque (y sin red la página esperaba a que fallara); ahora viene con el
|
||||
programa (`static/manrope.woff2`, 25 KB, servida como `font/woff2`). Lo otro es el comprobador de
|
||||
versiones, que consulta Labstream OS al arrancar: sigue igual pero con un interruptor en Ajustes
|
||||
(«al arrancar, consultar si hay versión nueva»); apagado, el programa no habla con nada fuera de este
|
||||
equipo. El botón «Buscar actualizaciones» funciona a mano en cualquier caso. Todo lo demás —inventario,
|
||||
plan, conversión, respaldo, colores, mapa— es local.
|
||||
|
||||
**Verificación función por función.** `smoke.py` (en la carpeta de trabajo de la sesión) levanta una
|
||||
copia del programa sobre un cliente de ensayo con de todo (cámara de dos días, exportados, proyectos,
|
||||
música, stock de Envato viejo, basura, proxies, dos repetidos, un hueco, un mes en minúsculas y un clip
|
||||
de video de verdad) y ejercita las 26 funciones por su API en el orden en que las usaría una persona,
|
||||
incluida una conversión real con ffmpeg (H.265 10 bits por GPU), verificación, reemplazo y una copia de
|
||||
respaldo con su índice. Resultado: 26 de 26. Por el camino salieron cinco fallos de verdad:
|
||||
|
||||
- **Un mes en minúsculas nunca se normalizaba.** «10- octubre» → «10- Octubre» es un renombrado que
|
||||
solo cambia mayúsculas; en Windows los dos nombres son el mismo, y tanto `Plan.agregar` como `mover`
|
||||
lo tomaban por «ya está en su sitio» y lo descartaban sin decir nada. El plan prometía «meses con
|
||||
nombre completo» que nunca ocurrían. Ahora se propone, se aplica (`os.rename` sí sabe) y `deshacer` lo
|
||||
devuelve (antes decía «su sitio original ya está ocupado», porque `exists()` también miente ahí).
|
||||
- **Las carpetas que crea el plan no entraban en el inventario** hasta el siguiente escaneo
|
||||
(`00_Grabacion`, `_Para borrar\basura`…): «existen», las carpetas vacías y los colores no las veían.
|
||||
`_recontar_carpetas` las da de alta tras cada movimiento y recuenta las tocadas, con totales de
|
||||
subárbol como los del escaneo; las que se quedaron sin nada y desaparecieron se dan de baja.
|
||||
- **Una fusión de carpetas se quedaba a medias.** Si al fusionar «Grabacion mañana» sobre
|
||||
`00_Grabacion/SONY` un archivo tropezaba (ya existía, estaba abierto), el bucle cortaba ahí, los
|
||||
demás no se intentaban y el aviso hablaba de uno solo. Ahora cada hijo va por su cuenta y el aviso
|
||||
cuenta cuántos se quedaron.
|
||||
- **«Viejo» significaba tres cosas.** El convertidor miraba la fecha de modificación con meses de 30,4
|
||||
días; el stock y el respaldo, el mes de la pieza (o la fecha del archivo) por meses de calendario.
|
||||
Un clip de un rodaje de 2024 re-exportado ayer no era «viejo» para convertir. Ahora la regla es una
|
||||
(`es_viejo` + `limite_meses`); con 0 meses no se filtra por edad.
|
||||
- **`/api/actualizacion` decía versión vacía** hasta la primera consulta: `ESTADO` del actualizador trae
|
||||
`version: ""` y pisaba la real al mezclar los diccionarios.
|
||||
|
||||
Y tres menores: cada fila de archivos sueltos era de una sola carpeta de origen (antes juntaba varias y
|
||||
ponía la del primero), el mes de un grupo de stock es el más repetido (no el del primer archivo), y se
|
||||
quitan tres rutas que nadie llamaba (`/api/diagnostico`, `/api/asistente/estado`, `/api/tour-visto`).
|
||||
|
||||
Lo que se miró y está bien: los 52 endpoints que usa la interfaz existen, todos los botones tienen su
|
||||
manejador, la barra de tareas refleja escaneo, lectura de clips, cola, asistente, respaldo y descarga
|
||||
de versión con su tiempo estimado, y la estimación de ProRes (por tasa nominal) y la copia de audio
|
||||
(`-c:a copy` solo con AAC de una pista) resisten los casos del ensayo.
|
||||
|
||||
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