Files
delphi-database/scripts/debug_workflow_trigger.py
HotSwapp bac8cc4bd5 changes
2025-08-18 20:20:04 -05:00

82 lines
3.1 KiB
Python

#!/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()