НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.3 >> [I128-2827] Расширить I128FMail как входящий почтовый канал задач📄 Скачать в DOCX
| Тип | Версия | Статус | Приоритет | Исполнитель |
|---|---|---|---|---|
| ⚙️ Новые возможности | 2026.3 | 🔘 Завершено |
Средний | Unassigned |
Компоненты: ИРБИС 128. Модуль I128FMail - Отправка писем от имени системы
Завершено: 09.09.2026 06:31
Нужно расширить I128FMail как входящий почтовый канал для задач и workflowзаписей. Модуль должен принимать письма, нормализовать отправителя, тему, тело, вложения, threading headers и доставлять безопасный inbound command в ownerмодуль.
I128FMail не должен реализовывать доменную логику Tasks. Он отвечает за транспорт, mailbox profiles, parsing, attachments staging, deduplication input, errors и delivery policy.
Описать mailbox profile: host/project binding, address rules, allowed sender policy, parser profile, attachment policy, threading policy, duplicate detection profile, error handling и owner module handler.
Принятое письмо должно превращаться в нормализованный inbound envelope с trace id, message id, sender identity hint, subject, body, headers, attachments references и safe metadata.
Вложения должны сначала попадать в TemporaryFiles/staging, проходить проверки/quarantine и переноситься в постоянный FT только по handler policy.
Для заявителя использовать Users/Organisations applicant resolver; при невозможности резолва создавать controlled degraded state, а не привязывать письмо к случайному пользователю.
Секреты mailbox/API не хранить в профиле открытым текстом; использовать secret references Security.
Публиковать safe inbound facts через EventBus, исполнять тяжелую обработку через Queue, передавать TraceContext и отдавать safe signals в Observability.
HealthCheck должен проверять mailbox profiles, секреты, права, недоступные handlers, ошибки подключения, attachment policy и dead-letter.
I128FMail владеет входящим почтовым транспортом, профилями ящиков, parsing, threading metadata, delivery в handler и ошибками транспорта.
Tasks владеет созданием или обновлением задачи из inbound envelope.
FT/TemporaryFiles владеют файлами; Security владеет секретами и правами; EventBus/Queue владеют delivery runtime; Users/Organisations владеют резолвом заявителя.
Письмо с темой, телом и вложениями может создать или обновить задачу через handler owner-модуля.
Повторное получение того же письма идемпотентно и не создает дублей.
Нераспознанный заявитель, запрещенный отправитель или опасное вложение переводятся в диагностируемое состояние.
Секреты подключения не попадают в описание профиля, логи, события или диагностику.
Права и политики вложений проверяются до публикации результата.
TestA должен покрыть входящее письмо, threading, вложения, idempotency, blocked sender, unresolved applicant, quarantine, Queue retry, EventBus facts и TraceContext.
Help должен описать настройку mailbox profile, безопасные ошибки и диагностику.
-
I1282827: реализован первый кодовый срез записей. PR не переносит в I128FMail для входящего почтового канала задач и workflowI128FMail доменную логику Tasks, исполнение EventBus/Queue, хранение файлов FT/TemporaryFiles, права Security или эксплуатационный HealthCheck: модуль описывает и проверяет только транспортный inbound contract, mailbox profiles, normalized envelope, fingerprint/idempotency input и dry-run delivery decision.
Куда смотреть:
?id=Help/Show&m=I128FMail/Inbound - новая HelpI128FMail реализованы в __call: чтение системного JSON, нормализация mailbox profile, расчет fingerprint, нормализация inbound envelope, объяснимая dryсоздана от актуальногоdevelop; PR направлен вdevelop`.Изменения по файлам:
modules/I128FMail/api.php
@method для публичных __call функций.modules/I128FMail/__call/*.inc
GetInboundContractDefinitions, NormalizeMailboxProfile, ComputeInboundFingerprint, NormalizeInboundEnvelope, ExplainInboundDelivery, HealthCheckInboundDefinition.__call; api.php не используется как склад функций.Variables расширена настройками входящего канала без изменения существующих сценариев исходящей отправки.modules/I128FMail/system/inbound*mail*contract.json
tasks.default.modules/I128FMail/Help/*.md
I128FMail/Inbound.Root и Purpose дополнены входящим сценарием и ссылкой на новую Help-страницу.modules/I128FMail/Tests/Module.inc
Проверки:
modules/I128FMail/api.php, новые и измененные modules/I128FMail/__call/*.inc, modules/I128FMail/Tests/Module.inc - без syntax errors.modules/I128FMail/system/inbound*mail*contract.json успешно разбирается через ConvertFrom-Json.I128FMail.module.inbound-contract passed 1/1, failed/skipped/warning = 0.http://irbis128.local/?id=Help/Show&m=I128FMail/Inbound возвращает 200, заголовок отображается, console errors нет.[I128-2811] Заявительский портал TaskPortal
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2793] Ввести TraceContext для сквозной трассировки операций
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2794] Реализовать системную событийную шину EventBus
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2795] Расширить Queue как runtime фоновых заданий, retry и расписаний
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2796] Расширить FT как постоянное хранилище вложений задач
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2797] Расширить Security для проектных прав, полей, действий и аудита доступа
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2798] Реализовать HealthCheck для workflow-проектов и задач
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2799] Подготовить TestA-контракты системных JSON и end-to-end сценариев
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2808] Защита публичных каналов AbuseProtection
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2813] Расширить Users/Organisations для заявителей и resolver участников процессов
Статус: Завершено | Автор: Ilya Mikhaylenko
[I128-2829] Расширить Security для системного хранения и ротации секретов интеграций
Статус: Завершено | Автор: Ilya Mikhaylenko