Re_Backend/TROUBLESHOOTING_TAT_ALERTS.md

8.4 KiB

🔍 Troubleshooting TAT Alerts Not Showing

Quick Diagnosis Steps

Step 1: Check if Redis is Connected

Look at your backend console when you start the server:

Good - Redis is working:

✅ [TAT Queue] Connected to Redis
✅ [TAT Worker] Worker is ready and listening

Bad - Redis is NOT working:

⚠️ [TAT Worker] Redis connection failed
⚠️ [TAT Queue] Redis connection failed after 3 attempts

If you see the bad message: → TAT alerts will NOT be created because the worker isn't running → You MUST setup Redis first (see START_HERE.md)


Step 2: Verify TAT Alerts Table Exists

Run this SQL:

SELECT COUNT(*) FROM tat_alerts;

Expected Result:

  • If table exists: You'll see a count (maybe 0)
  • If table doesn't exist: Error "relation tat_alerts does not exist"

If table doesn't exist:

cd Re_Backend
npm run migrate

Step 3: Check if TAT Alerts Exist in Database

Run this SQL:

-- Check if ANY alerts exist
SELECT 
    ta.alert_id,
    ta.threshold_percentage,
    ta.alert_sent_at,
    ta.alert_message,
    ta.metadata->>'requestNumber' as request_number,
    ta.metadata->>'approverName' as approver_name
FROM tat_alerts ta
ORDER BY ta.alert_sent_at DESC
LIMIT 10;

If query returns 0 rows: → No alerts have been created yet → This means:

  1. Redis is not connected, OR
  2. No requests have been submitted, OR
  3. Not enough time has passed (wait 3 min in test mode)

Step 4: Check API Response

Option A: Use Debug Endpoint

Call this URL in your browser or Postman:

GET http://localhost:5000/api/debug/tat-status

You'll see:

{
  "success": true,
  "status": {
    "redis": {
      "configured": true,
      "url": "rediss://****@upstash.io:6379",
      "testMode": true
    },
    "database": {
      "connected": true,
      "tatAlertsTableExists": true,
      "totalAlerts": 0
    }
  }
}

Option B: Check Workflow Details Response

For a specific request:

GET http://localhost:5000/api/debug/workflow-details/REQ-2025-XXXXX

You'll see:

{
  "success": true,
  "structure": {
    "hasTatAlerts": true,
    "tatAlertsCount": 2
  },
  "tatAlerts": [
    {
      "alertType": "TAT_50",
      "thresholdPercentage": 50,
      "alertSentAt": "...",
      ...
    }
  ]
}

Step 5: Check Frontend Console

Open browser DevTools (F12) → Console

When you open Request Detail, you should see:

// Look for the API response
Object {
  workflow: {...},
  approvals: [...],
  tatAlerts: [...]  // ← Check if this exists
}

If tatAlerts is missing or empty: → Backend is not returning it (go back to Step 3)

If tatAlerts exists but not showing: → Frontend rendering issue (check Step 6)


Step 6: Verify Frontend Code

Check if tatAlerts are being processed:

Open Re_Figma_Code/src/pages/RequestDetail/RequestDetail.tsx

Search for this line (around line 235 and 493):

const tatAlerts = Array.isArray(details.tatAlerts) ? details.tatAlerts : [];

This should be there! If not, the code wasn't applied.

Then search for (around line 271 and 531):

const levelAlerts = tatAlerts.filter((alert: any) => alert.levelId === levelId);

And in the JSX (around line 1070):

{step.tatAlerts && step.tatAlerts.length > 0 && (
  <div className="mt-3 space-y-2">
    {step.tatAlerts.map((alert: any, alertIndex: number) => (

🐛 Common Issues & Fixes

Issue 1: "TAT alerts not showing in UI"

Cause: Redis not connected

Fix:

  1. Setup Upstash: https://console.upstash.com/
  2. Add to .env:
    REDIS_URL=rediss://default:...@upstash.io:6379
    TAT_TEST_MODE=true
    
  3. Restart backend
  4. Look for "Connected to Redis" in logs

Issue 2: "tat_alerts table doesn't exist"

Cause: Migrations not run

Fix:

cd Re_Backend
npm run migrate

Issue 3: "No alerts in database"

Cause: No requests submitted or not enough time passed

Fix:

  1. Create a new workflow request
  2. SUBMIT the request (not just save as draft)
  3. Wait:
    • Test mode: 3 minutes for 50% alert
    • Production: Depends on TAT (e.g., 12 hours for 24-hour TAT)

Issue 4: "tatAlerts is undefined in API response"

Cause: Backend code not updated

Fix: Check Re_Backend/src/services/workflow.service.ts line 698:

return { workflow, approvals, participants, documents, activities, summary, tatAlerts };
//                                                                                ^^^^^^^^
// Make sure tatAlerts is included!

Issue 5: "Frontend not displaying alerts even though they exist"

Cause: Frontend code not applied or missing key

Fix:

  1. Check browser console for errors
  2. Verify step.tatAlerts is defined in approval flow
  3. Check if alerts have correct levelId matching approval level

📊 Manual Test Steps

Step-by-Step Debugging:

1. Check Redis Connection:

# Start backend and look for:[TAT Queue] Connected to Redis

2. Create and Submit Request:

# Via frontend or API:
POST /api/workflows/create
POST /api/workflows/{id}/submit

3. Wait for Alert (Test Mode):

# For 6-hour TAT in test mode:
# Wait 3 minutes for 50% alert

4. Check Database:

SELECT * FROM tat_alerts ORDER BY alert_sent_at DESC LIMIT 5;

5. Check API Response:

GET /api/workflows/{requestNumber}/details
# Look for tatAlerts array in response

6. Check Frontend:

// Open DevTools Console
// Navigate to Request Detail
// Check the console log for API response

🔧 Debug Commands

Check TAT System Status:

curl http://localhost:5000/api/debug/tat-status

Check Workflow Details for Specific Request:

curl http://localhost:5000/api/debug/workflow-details/REQ-2025-XXXXX

Check Database Directly:

-- Total alerts
SELECT COUNT(*) FROM tat_alerts;

-- Alerts for specific request
SELECT * FROM tat_alerts 
WHERE request_id = (
  SELECT request_id FROM workflow_requests 
  WHERE request_number = 'REQ-2025-XXXXX'
);

-- Pending levels that should get alerts
SELECT 
  w.request_number,
  al.approver_name,
  al.status,
  al.tat_start_time,
  CASE
    WHEN al.tat_start_time IS NULL THEN 'No TAT monitoring started'
    ELSE 'TAT monitoring active'
  END as tat_status
FROM approval_levels al
JOIN workflow_requests w ON al.request_id = w.request_id
WHERE al.status IN ('PENDING', 'IN_PROGRESS');

📝 Checklist for TAT Alerts to Show

Must have ALL of these:

  • Redis connected (see "Connected to Redis" in logs)
  • TAT worker running (see "Worker is ready" in logs)
  • Request SUBMITTED (not draft)
  • Enough time passed (3 min in test mode for 50%)
  • tat_alerts table exists in database
  • Alert records created in tat_alerts table
  • API returns tatAlerts in workflow details
  • Frontend receives tatAlerts from API
  • Frontend displays tatAlerts in workflow tab

🆘 Still Not Working?

Provide These Details:

  1. Backend console output when starting server
  2. Result of:
    curl http://localhost:5000/api/debug/tat-status
    
  3. Database query result:
    SELECT COUNT(*) FROM tat_alerts;
    
  4. Browser console errors (F12 → Console)
  5. Request number you're testing with

🎯 Most Common Cause

99% of the time, TAT alerts don't show because:

Redis is not connected

How to verify:

# When you start backend, you should see:[TAT Queue] Connected to Redis

# If you see this instead:
⚠️ [TAT Queue] Redis connection failed

# Then:
# 1. Setup Upstash: https://console.upstash.com/
# 2. Add REDIS_URL to .env
# 3. Restart backend

🚀 Quick Fix Steps

If alerts aren't showing, do this IN ORDER:

# 1. Check .env file has Redis URL
cat Re_Backend/.env | findstr REDIS_URL

# 2. Restart backend
cd Re_Backend
npm run dev

# 3. Look for "Connected to Redis" in console

# 4. Create NEW request (don't use old ones)

# 5. SUBMIT the request

# 6. Wait 3 minutes (in test mode)

# 7. Refresh Request Detail page

# 8. Go to Workflow tab

# 9. Alerts should appear under approver card

Need more help? Share the output of /api/debug/tat-status endpoint!


Last Updated: November 4, 2025
Team: Royal Enfield Workflow