82 lines
3.1 KiB
Python
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()
|