diff --git a/src/utils/progress.py b/src/utils/progress.py index 99f632a..0acaf54 100644 --- a/src/utils/progress.py +++ b/src/utils/progress.py @@ -67,6 +67,17 @@ class ProgressTracker: self.progress.update(self.task_id, advance=advance) self.processed += advance + # For very large totals (e.g., migrations), show throughput periodically + # to give visual feedback even when progress percentage seems stuck + if self.processed % 1000000 == 0 and self.processed > 0: + elapsed = time.time() - self.start_time + if elapsed > 0: + rate = self.processed / elapsed + self.progress.print( + f"[cyan]Progress: {self.processed:,}/{self.total:,} items " + f"({rate:.0f} items/sec, {elapsed/3600:.1f}h elapsed)[/cyan]" + ) + def print_status(self, message: str): """Print a status message without interrupting progress bar.""" if self.task_id is not None: