feat: enhance auto-organize functionality with empty directory cleanup and progress reporting

This commit is contained in:
Will Miao
2025-08-13 10:36:31 +08:00
parent a920921570
commit 5a0b3470f1
2 changed files with 104 additions and 50 deletions

View File

@@ -852,7 +852,7 @@ class BaseModelRoutes(ABC):
current_dir = os.path.dirname(file_path)
# Skip if already in correct location
if os.path.normpath(current_dir) == os.path.normpath(target_dir):
if current_dir.replace(os.sep, '/') == target_dir.replace(os.sep, '/'):
skipped_count += 1
processed += 1
continue
@@ -914,6 +914,25 @@ class BaseModelRoutes(ABC):
await asyncio.sleep(0.1)
# Send completion message
await ws_manager.broadcast({
'type': 'auto_organize_progress',
'status': 'cleaning',
'total': total_models,
'processed': processed,
'success': success_count,
'failures': failure_count,
'skipped': skipped_count,
'message': 'Cleaning up empty directories...'
})
# Clean up empty directories after organizing
from ..utils.utils import remove_empty_dirs
cleanup_counts = {}
for root in model_roots:
removed = remove_empty_dirs(root)
cleanup_counts[root] = removed
# Send cleanup completed message
await ws_manager.broadcast({
'type': 'auto_organize_progress',
'status': 'completed',
@@ -921,7 +940,8 @@ class BaseModelRoutes(ABC):
'processed': processed,
'success': success_count,
'failures': failure_count,
'skipped': skipped_count
'skipped': skipped_count,
'cleanup': cleanup_counts
})
# Prepare response with limited details
@@ -933,7 +953,8 @@ class BaseModelRoutes(ABC):
'success': success_count,
'skipped': skipped_count,
'failures': failure_count,
'organization_type': 'flat' if is_flat_structure else 'structured'
'organization_type': 'flat' if is_flat_structure else 'structured',
'cleaned_dirs': cleanup_counts
}
}