fix(status): prevent false Completed status when mandatory pipeline steps have not run
Add a terminal-step guard (send_to_all_destinations) to all status calculation paths so that files are only marked Completed once the entire processing pipeline has been recorded. - get_file_overall_status: require TERMINAL_STEP to be present - get_files_processing_status: same guard for bulk status - get_step_summary: count missing terminal step as queued so total_main_steps > main_completed when pipeline is incomplete - apply_status_filter: SQL sub-query requires terminal step for completed filter - process_document: call initialize_file_steps after creating a new file record so all mandatory steps are pre-created as pending Define TERMINAL_STEP constant in step_manager.py and reference it in file_status.py and file_queries.py to avoid magic strings. Tests updated: add send_to_all_destinations to completed-file fixtures; add test verifying initialize_file_steps is called for new files. Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
@@ -437,7 +437,7 @@ class TestFileStatusMissingCoverage:
|
||||
assert result["has_errors"] is False
|
||||
|
||||
def test_get_files_processing_status_with_completed_steps(self, db_session):
|
||||
"""Covers line 189->188: completed + skipped == total_steps → completed status."""
|
||||
"""Covers completed + skipped == total_steps with terminal step → completed status."""
|
||||
from datetime import datetime
|
||||
from unittest.mock import patch
|
||||
|
||||
@@ -457,6 +457,7 @@ class TestFileStatusMissingCoverage:
|
||||
for step_name, step_status in [
|
||||
("create_file_record", "success"),
|
||||
("finalize_document_storage", "skipped"),
|
||||
("send_to_all_destinations", "success"),
|
||||
]:
|
||||
step = FileProcessingStep(
|
||||
file_id=file_record.id,
|
||||
|
||||
Reference in New Issue
Block a user