bmc_hub/docs/EMAIL_WORKFLOWS.md
Christian 3fb43783a6 feat: Implement Email Workflow System with comprehensive documentation and migration scripts
- Added Email Workflow System with automated actions based on email classification.
- Created database schema with tables for workflows, executions, and actions.
- Developed API endpoints for CRUD operations on workflows and execution history.
- Included pre-configured workflows for invoice processing, time confirmation, and bankruptcy alerts.
- Introduced user guide and workflow system improvements for better usability.
- Implemented backup system for automated backup jobs and notifications.
- Established email activity log to track all actions and events related to emails.
2025-12-15 12:28:12 +01:00

7.3 KiB

Email Workflow System - Komplet Implementation

Oversigt

Et fuldt automatiseret workflow-system til BMC Hub der eksekverer handlinger baseret på email-klassificering.

Arkitektur

Database Schema

3 hovedtabeller (migration 014):

  • email_workflows - Workflow definitioner med triggers og action-steps
  • email_workflow_executions - Log over alle eksekverede workflows
  • email_workflow_actions - Katalog over tilgængelige actions

Workflow Flow

Email modtaget → Klassificering (AI/keyword) → Find matching workflows → Eksekver action steps → Log resultat

Workflow Trigger Betingelser

  • classification_trigger - Hvilken kategori der trigger workflowet (invoice, bankruptcy, etc.)
  • confidence_threshold - Minimum AI confidence score (default: 0.70)
  • sender_pattern - Regex match på afsender email (optional)
  • subject_pattern - Regex match på emne (optional)
  • priority - Lavere tal = højere prioritet
  • stop_on_match - Stop efter dette workflow hvis succesfuldt

Tilgængelige Actions

Ticket/Case Actions

  • create_ticket - Opret support ticket/case
  • create_time_entry - Opret tidsregistrering

Linking Actions

  • link_to_vendor - Link email til leverandør (matcher på email)
  • link_to_customer - Link email til kunde

Extraction Actions

  • extract_invoice_data - Udtræk fakturanummer, beløb, forfaldsdato
  • extract_tracking_number - Find tracking numre (PostNord, GLS, DAO)

Notification Actions

  • send_slack_notification - Send besked til Slack kanal
  • send_email_notification - Send email notifikation

Status Actions

  • mark_as_processed - Marker email som behandlet
  • flag_for_review - Flag til manuel gennemgang

Control Flow

  • conditional_branch - Betinget logik baseret på data

Pre-Konfigurerede Workflows

1. Invoice Processing (Priority 10)

Trigger: classification = 'invoice' AND confidence >= 0.70

Steps:

  1. Link til vendor baseret på afsender email
  2. Udtræk faktura data (nummer, beløb, forfaldsdato)
  3. Opret billing ticket
  4. Send Slack notification til #invoices
  5. Marker som processed

2. Time Confirmation (Priority 20)

Trigger: classification = 'time_confirmation' AND confidence >= 0.65

Steps:

  1. Link til kunde baseret på email domæne
  2. Opret tidsregistrering
  3. Send email notification til admin
  4. Marker som processed

3. Freight Note Processing (Priority 30)

Trigger: classification = 'freight_note' AND confidence >= 0.70

Steps:

  1. Udtræk tracking number
  2. Link til vendor
  3. Opret hardware shipment ticket
  4. Marker som processed

4. Bankruptcy Alert (Priority 5) 🚨

Trigger: classification = 'bankruptcy' AND confidence >= 0.80

Steps:

  1. Flag til manuel review
  2. Send Slack alert til #alerts
  3. Send email til admin
  4. Marker som flagged (ikke processed)

5. Low Confidence Review (Priority 90)

Trigger: classification = 'general' AND confidence >= 0.50

Steps:

  1. Flag til manuel review (lav confidence)

API Endpoints

Workflows CRUD

GET    /api/v1/workflows                    # List alle workflows
GET    /api/v1/workflows/{id}               # Hent specifik workflow
POST   /api/v1/workflows                    # Opret ny workflow
PUT    /api/v1/workflows/{id}               # Opdater workflow
DELETE /api/v1/workflows/{id}               # Slet workflow
POST   /api/v1/workflows/{id}/toggle        # Enable/disable workflow

Workflow Execution

POST /api/v1/emails/{email_id}/execute-workflows  # Eksekver workflows for email (manuel)
GET  /api/v1/workflow-executions                  # Hent execution history
GET  /api/v1/workflow-executions?workflow_id=1    # Filter på workflow
GET  /api/v1/workflow-executions?email_id=163     # Filter på email

Workflow Actions & Stats

GET /api/v1/workflow-actions           # List tilgængelige actions
GET /api/v1/workflows/stats/summary    # Workflow statistik (success rate etc.)

Automatisk Eksekvering

Workflows eksekveres automatisk når emails klassificeres af EmailProcessorService:

# I email_processor_service.py efter klassificering:
workflow_result = await email_workflow_service.execute_workflows(email_data)

Aktiveres af:

  • EMAIL_WORKFLOWS_ENABLED=true i .env (default: true)
  • Email skal have classification og confidence_score
  • Mindst ét workflow skal matche betingelserne

Test Eksempel

Manuel workflow eksekvering

# Eksekver workflows for bankruptcy email (ID 163)
curl -X POST http://localhost:8001/api/v1/emails/163/execute-workflows

# Response:
{
  "status": "executed",
  "workflows_executed": 1,
  "workflows_succeeded": 1,
  "details": [{
    "workflow_id": 4,
    "workflow_name": "Bankruptcy Alert",
    "status": "completed",
    "steps_completed": 4,
    "execution_time_ms": 5
  }]
}

Tjek workflow stats

curl http://localhost:8001/api/v1/workflows/stats/summary | jq '.[] | {name, execution_count, success_rate}'

Workflow JSON Format

Workflow Steps Structure

{
  "workflow_steps": [
    {
      "action": "link_to_vendor",
      "params": {
        "match_by": "email",
        "auto_create": false
      }
    },
    {
      "action": "extract_invoice_data",
      "params": {
        "ai_provider": "ollama",
        "fallback_to_regex": true
      }
    },
    {
      "action": "mark_as_processed",
      "params": {
        "status": "processed"
      }
    }
  ]
}

Fremtidige Udvidelser

Actions der mangler implementation

Flere actions er defineret men kun delvist implementeret:

  • create_ticket - Kræver integration med case/ticket system
  • create_time_entry - Kræver integration med timetracking
  • send_slack_notification - Kræver Slack webhook setup
  • extract_invoice_data - Kræver AI extraction service

Nye Action Typer

  • update_customer_data - Opdater kunde info fra email
  • create_purchase_order - Opret indkøbsordre
  • send_sms_notification - SMS varsel ved kritiske events
  • create_calendar_event - Book møde baseret på email

Monitoring

View til statistik

SELECT * FROM v_workflow_stats;
-- Viser: execution_count, success_rate, pending_executions

Execution Log

SELECT * FROM email_workflow_executions 
WHERE status = 'failed' 
ORDER BY started_at DESC;

Sikkerhed & Best Practices

  1. Start workflows disabled - Test først manuelt med /execute-workflows
  2. Sæt confidence_threshold fornuftigt - For lav = mange false positives
  3. Brug stop_on_match for kritiske workflows (bankruptcy alert)
  4. Log alt - email_workflow_executions tracker hver step
  5. Gentle degradation - Steps fejler individuelt, workflow fortsætter

Configuration

Environment Variables

EMAIL_WORKFLOWS_ENABLED=true           # Enable/disable hele systemet
EMAIL_AI_CONFIDENCE_THRESHOLD=0.7      # Default threshold for auto-processing
EMAIL_TO_TICKET_ENABLED=true           # Enable email processing pipeline

Status: Produktionsklar

Systemet er fuldt implementeret og testet:

  • Database schema oprettet
  • Workflow service implementeret
  • API endpoints tilgængelige
  • Integration med email processor
  • Pre-konfigurerede workflows
  • Execution logging
  • Test bekræftet vellykket

Næste skridt: Frontend UI til at administrere workflows visuelt.