---
title: "Email AI-CRM"
description: "AI-инбокс для публичных контактных ящиков — IMAP poll, JSONB, очередь черновиков, задачи и админ-панель"
locale: "ru"
---
# Email AI-CRM

**AI-управляемый CRM для публичных почтовых ящиков** (например `info@example.com`). Входящая почта классифицируется и собирается в треды; Claude формирует черновики ответов; админы утверждают отправку и видят расходы API.

> **EN canonical:** полные диаграммы, таблицы API и runbook — [Email AI-CRM (EN)](/docs/features/email-ai-crm.md) · [Архитектура](/docs/architecture/email-ai-crm.md) · [API](/docs/api/email-ai-crm.md) · [Гайд разработчика](/docs/examples/email-ai-crm.md)

## Обзор

| Слой | Ответственность |
|------|-----------------|
| **Сбор** | Cron `POST /api/cron/email-processor` (`action: poll`) или webhook |
| **Процессор** | `features/email-crm/pipeline/email-processor.ts` — parse, security, AI, CRM |
| **Хранение** | PostgreSQL JSONB: `email_threads`, `email_contacts`, `email_messages`, `email_drafts`, `email_tasks`, `email_api_usage` |
| **Исходящие** | `EmailSenderService` (nodemailer), `In-Reply-To` / `References` |
| **Админ UI** | inbox, drafts, contacts, analytics, tasks |

## Бизнес-правила

- **Дедуп Message-ID** — один RFC `Message-ID` не обрабатывается дважды.
- **Auto-send выключен** — `EMAIL_AUTO_SEND_ENABLED=false` до SMTP smoke test.
- **Cron poll в продакшне** — каждые 1–5 мин; IDLE только для долгоживущего Node (`EMAIL_PROCESSOR_AUTOSTART`).
- **Admin API** — `auth()` + `isPlatformAdmin` на `/api/admin/email/*`.

## Путь админа

```mermaid
sequenceDiagram
    participant M as Контактный ящик
    participant C as Cron poll
    participant P as EmailProcessor
    participant DB as PostgreSQL JSONB
    participant A as Админ UI

    M->>C: UNSEEN
    C->>P: pollInboundBatch
    P->>P: Security + intent + sentiment
    P->>DB: messages, threads, drafts, tasks
    A->>DB: GET /api/admin/email/threads
    A->>A: Approve draft, send SMTP
```

## Маршруты админ UI

| Маршрут | Назначение |
|---------|------------|
| `/{locale}/admin/crm/inbox` | Список тредов |
| `/{locale}/admin/crm/inbox/[id]` | Детали треда + сообщения |
| `/{locale}/admin/crm/drafts` | Черновики AI — approve / reject / send |
| `/{locale}/admin/crm/contacts` | CRM-контакты |
| `/{locale}/admin/crm/analytics` | Объём, intent/sentiment, стоимость API |
| `/{locale}/admin/crm/tasks` | Follow-up и эскалации |

## Пайплайн

1. Parse → 2. 4-слойный security → 3. AI (Haiku + Sonnet) → 4. CRM + tasks → 5. Очередь черновиков → 6. Уведомления (in-app / Slack).

## База данных

| Миграция | Таблицы |
|----------|---------|
| `009_email_crm_jsonb.sql` | `email_threads`, `email_contacts`, `email_messages`, `email_drafts` |
| `010_email_crm_tasks_jsonb.sql` | `email_tasks`, `email_api_usage` |

```bash
psql "$DATABASE_URL" -f data/migrations/009_email_crm_jsonb.sql
psql "$DATABASE_URL" -f data/migrations/010_email_crm_tasks_jsonb.sql
```

## Локальная конфигурация

Добавьте в **`.env.local`** (см. `env.local.template`, блок **EMAIL CRM**):

```bash
# .env.local
IMAP_HOST=mail.example.com
IMAP_USER=info@example.com
IMAP_PASSWORD=

SMTP_HOST=mail.example.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=info@example.com
SMTP_PASSWORD=

ANTHROPIC_API_KEY=

CRON_SECRET=generate-a-long-random-string
EMAIL_AUTO_SEND_ENABLED=false
EMAIL_CRM_PERSISTENCE=memory
```

| Переменная | Описание |
|------------|----------|
| `IMAP_*` / `SMTP_*` | Ваш community inbox (любой IMAP/SMTP) |
| `ANTHROPIC_API_KEY` | Intent, sentiment, генерация черновиков |
| `CRON_SECRET` | Bearer для `/api/cron/email-processor` |
| `EMAIL_AUTO_SEND_ENABLED` | `false` до SMTP smoke test |
| `EMAIL_CRM_PERSISTENCE` | `memory` для быстрого dev; omit + миграции `009`/`010` для Postgres |

## Продакшн

Те же переменные — в secret store (k8s/Vercel). Миграции `009`+`010`, cron `poll` каждые 1–5 мин. См. [гайд разработчика](/docs/examples/email-ai-crm.md).

## Связанное

- [Миграции](/docs/getting-started/migrations.md)
- [Environment — Email AI-CRM](/docs/deployment/environment.md#email-ai-crm)
- [Backend modes](/docs/architecture/backend-modes-and-databases.md)
