#!/usr/bin/env python3 """ Debug script to investigate why the settlement workflow isn't triggering """ import sys import os # Add the project root to Python path sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) from sqlalchemy.orm import Session from app.database.base import get_db from app.models.document_workflows import DocumentWorkflow, EventLog def debug_settlement_workflow(): """Debug the settlement workflow trigger conditions""" print("šŸ” Debugging Settlement Workflow Trigger") print("=" * 50) db = next(get_db()) try: # Find the settlement workflow workflow = db.query(DocumentWorkflow).filter( DocumentWorkflow.name == "Auto Settlement Letter" ).first() if not workflow: print("āŒ Auto Settlement Letter workflow not found") return print(f"āœ… Found workflow: {workflow.name}") print(f" - Trigger Type: {workflow.trigger_type}") print(f" - Trigger Conditions: {workflow.trigger_conditions}") # Get recent events recent_events = db.query(EventLog).filter( EventLog.event_type == "file_status_change" ).order_by(EventLog.occurred_at.desc()).limit(5).all() print(f"\nšŸ“‹ Recent file_status_change events ({len(recent_events)}):") for event in recent_events: print(f" Event {event.event_id}:") print(f" - Type: {event.event_type}") print(f" - File No: {event.file_no}") print(f" - Event Data: {event.event_data}") print(f" - Previous State: {event.previous_state}") print(f" - New State: {event.new_state}") print(f" - Processed: {event.processed}") print(f" - Triggered Workflows: {event.triggered_workflows}") # Test the trigger condition manually if event.new_state and event.new_state.get('status') == 'CLOSED': print(f" āœ… This event SHOULD trigger the workflow (status = CLOSED)") else: print(f" āŒ This event should NOT trigger (status = {event.new_state.get('status') if event.new_state else 'None'})") print() # Check if there are any workflow executions from app.models.document_workflows import WorkflowExecution executions = db.query(WorkflowExecution).filter( WorkflowExecution.workflow_id == workflow.id ).all() print(f"\nšŸ“Š Workflow Executions for {workflow.name}: {len(executions)}") for execution in executions: print(f" Execution {execution.id}:") print(f" - Status: {execution.status}") print(f" - Event ID: {execution.triggered_by_event_id}") print(f" - Context File: {execution.context_file_no}") print() except Exception as e: print(f"āŒ Error debugging workflow: {str(e)}") finally: db.close() if __name__ == "__main__": debug_settlement_workflow()