bmc_hub/docs/EMAIL_WORKFLOWS.md

254 lines
7.3 KiB
Markdown
Raw Permalink Normal View History

# 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
```bash
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
```bash
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
```bash
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`:
```python
# 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
```bash
# 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
```bash
curl http://localhost:8001/api/v1/workflows/stats/summary | jq '.[] | {name, execution_count, success_rate}'
```
## Workflow JSON Format
### Workflow Steps Structure
```json
{
"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
```sql
SELECT * FROM v_workflow_stats;
-- Viser: execution_count, success_rate, pending_executions
```
### Execution Log
```sql
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
```env
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.