52 lines
5.3 KiB
Markdown
52 lines
5.3 KiB
Markdown
[ Directory of .eml Files ]
|
|
│
|
|
▼
|
|
┌───────────────┐
|
|
│ CLI (cli.py) ├────────────────────────────────────────────────┐
|
|
└───────┬───────┘ │
|
|
│ Loop through EMLs │
|
|
▼ │
|
|
┌───────────────┐ Metadata (Subject, From, To, Date) │
|
|
│ EML Parser │──────────────────────────────────────────┐ │
|
|
│ (parser.py) │ │ │
|
|
├───────────────┤ Body Text (Parsed via bs4) │ │
|
|
│ - Decode Heads├────────────────────────────────────┐ │ │
|
|
│ - Extract HTML│ │ │ │
|
|
│ - Save Attach │ Attachment Files ▼ ▼ ▼
|
|
│ to Temp Dir ├─────────────┐ ┌────────────────────────┐
|
|
└───────────────┘ │ │ Prompt Builder │
|
|
▼ │ (analyzer.py) │
|
|
┌───────────────┐ ┌───────────────┐ ├────────────────────────┤
|
|
│ Converter │◄────┤ Temporary Dir │ │ System Prompt: │
|
|
│(converter.py) │ └───────────────┘ │ - DLP Policy rules │
|
|
├───────────────┤ │ (from policy.py) │
|
|
│ - MarkItDown │ │ - Schemas & Thresholds │
|
|
│ - Zip/7z Loop │ │ │
|
|
│ - PyMuPDF Ext │ │ User Prompt: │
|
|
│ - Text Extrac │ │ - Email Metadata │
|
|
│ - Image Base64│ │ - Body Text │
|
|
└───────┬───────┘ │ - Multimodal list │
|
|
│ │ (Texts + Image URLs) │
|
|
│ Converted Texts & IMAGE_SENTINELs └───────────┬────────────┘
|
|
└─────────────────────────────────────────────────► │ Use OpenAI-comp
|
|
│ API (vLLM/Qwen)
|
|
┌────────────────────────┐ (or simulator)
|
|
│ LLM Inference │
|
|
└───────────┬────────────┘
|
|
│
|
|
┌───────────▼────────────┐
|
|
│ JSON validation │
|
|
│ (analyzer.py) │
|
|
├────────────────────────┤
|
|
│ Parse: action, risk, │
|
|
│ violations, summary │
|
|
└───────────┬────────────┘
|
|
│ DLPResult
|
|
▼
|
|
┌────────────────────────┐
|
|
│ CLI Output │
|
|
├────────────────────────┤
|
|
│ - Write JSON to disk │
|
|
│ - Rich summary table │
|
|
└────────────────────────┘
|