Концепції, цінність і типові сценарії
Концепції, цінність і типові сценарії
Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
Підготовка контенту платформи Ring
EN canonical: повна діаграма, індекси JSONB та режими cron/IDLE — Email AI-CRM architecture (EN)
| Шлях | Роль |
|---|---|
services/email/email-processor.ts | Оркестратор: dedup, poll, ingest |
services/email/imap/ | pollBatch() для cron |
services/email/smtp/email-sender.ts | Вихідні відповіді |
features/email-crm/repositories/ | JSONB Contact / Task / Draft |
features/email-crm/services/ | Thread, message, analytics, send |
Рядок платформи: id, data, created_at, updated_at.
| Колекція | Id документа |
|---|---|
email_threads | RFC thread root / Message-ID |
email_contacts | contact_<sha256(email)> |
email_messages | RFC Message-ID |
email_drafts | draft_<uuid> |
email_tasks | task_<uuid> |
email_api_usage | req_<timestamp>_<random> |
Міграції: 009_email_crm_jsonb.sql, 010_email_crm_tasks_jsonb.sql.
EMAIL_CRM_PERSISTENCE=memory — лише dev/tests; інакше Postgres через фабрики сервісів.
| Механізм | Поведінка |
|---|---|
| DB dedup | EmailMessageService.exists(messageId) |
| Poll mutex | Паралельний pollInboundBatch → { skipped: true } |
| pollBatch | Чекає всі handleEmail перед disconnect |
| Webhook | uid: 0 — без IMAP mark-seen |
| Режим | Коли |
|---|---|
| poll (рекомендовано) | k8s CronJob, serverless |
| start | Dedicated Node + instrumentation.ts |
| HTTP start | Debug: EMAIL_PROCESSOR_ALLOW_HTTP_START=true |
Bearer $CRON_SECRET або HMAC X-Email-Webhook-Signature.isPlatformAdmin.EN canonical: повна діаграма, індекси JSONB та режими cron/IDLE — Email AI-CRM architecture (EN)
| Шлях | Роль |
|---|---|
services/email/email-processor.ts | Оркестратор: dedup, poll, ingest |
services/email/imap/ | pollBatch() для cron |
services/email/smtp/email-sender.ts | Вихідні відповіді |
features/email-crm/repositories/ | JSONB Contact / Task / Draft |
features/email-crm/services/ | Thread, message, analytics, send |
Рядок платформи: id, data, created_at, updated_at.
| Колекція | Id документа |
|---|---|
email_threads | RFC thread root / Message-ID |
email_contacts | contact_<sha256(email)> |
email_messages | RFC Message-ID |
email_drafts | draft_<uuid> |
email_tasks | task_<uuid> |
email_api_usage | req_<timestamp>_<random> |
Міграції: 009_email_crm_jsonb.sql, 010_email_crm_tasks_jsonb.sql.
EMAIL_CRM_PERSISTENCE=memory — лише dev/tests; інакше Postgres через фабрики сервісів.
| Механізм | Поведінка |
|---|---|
| DB dedup | EmailMessageService.exists(messageId) |
| Poll mutex | Паралельний pollInboundBatch → { skipped: true } |
| pollBatch | Чекає всі handleEmail перед disconnect |
| Webhook | uid: 0 — без IMAP mark-seen |
| Режим | Коли |
|---|---|
| poll (рекомендовано) | k8s CronJob, serverless |
| start | Dedicated Node + instrumentation.ts |
| HTTP start | Debug: EMAIL_PROCESSOR_ALLOW_HTTP_START=true |
Bearer $CRON_SECRET або HMAC X-Email-Webhook-Signature.isPlatformAdmin.EN canonical: повна діаграма, індекси JSONB та режими cron/IDLE — Email AI-CRM architecture (EN)
| Шлях | Роль |
|---|---|
services/email/email-processor.ts | Оркестратор: dedup, poll, ingest |
services/email/imap/ | pollBatch() для cron |
services/email/smtp/email-sender.ts | Вихідні відповіді |
features/email-crm/repositories/ | JSONB Contact / Task / Draft |
features/email-crm/services/ | Thread, message, analytics, send |
Рядок платформи: id, data, created_at, updated_at.
| Колекція | Id документа |
|---|---|
email_threads | RFC thread root / Message-ID |
email_contacts | contact_<sha256(email)> |
email_messages | RFC Message-ID |
email_drafts | draft_<uuid> |
email_tasks | task_<uuid> |
email_api_usage | req_<timestamp>_<random> |
Міграції: 009_email_crm_jsonb.sql, 010_email_crm_tasks_jsonb.sql.
EMAIL_CRM_PERSISTENCE=memory — лише dev/tests; інакше Postgres через фабрики сервісів.
| Механізм | Поведінка |
|---|---|
| DB dedup | EmailMessageService.exists(messageId) |
| Poll mutex | Паралельний pollInboundBatch → { skipped: true } |
| pollBatch | Чекає всі handleEmail перед disconnect |
| Webhook | uid: 0 — без IMAP mark-seen |
| Режим | Коли |
|---|---|
| poll (рекомендовано) | k8s CronJob, serverless |
| start | Dedicated Node + instrumentation.ts |
| HTTP start | Debug: EMAIL_PROCESSOR_ALLOW_HTTP_START=true |
Bearer $CRON_SECRET або HMAC X-Email-Webhook-Signature.isPlatformAdmin.