Меню


[I128-2811] Заявительский портал TaskPortal


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.3 >> [I128-2811] Заявительский портал TaskPortal📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Новые возможности 2026.3 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: Нет

Завершено: 07.09.2026 08:08

  1. Цель

Нужно создать отдельный модуль TaskPortal для публичного и авторизованного пользовательского сценария заявителя. Заявитель должен создавать обращение, видеть свои задачи, читать публичные ответы, добавлять разрешенные комментарии и вложения, принимать результат или возвращать его на доработку без доступа к внутреннему рабочему месту сотрудников и без показа редактора he3.

  1. Контекст

TaskPortal является portal shell и UX-слоем над Tasks, WorkflowView, WorkflowScreen, WorkflowFilter, Security, EventBus, Collaboration, FT и AbuseProtection. Он не является вторым модулем задач и не хранит канонические данные задачи, комментариев, файлов, workflow или прав.

Портал нужен для промышленного selfservice сценария: публичная или авторизованная форма обращения, личный список обращений, публичная карточка, безопасные публичные статусы, непрочитанные ответы, подтверждение контактов, приемка результата и повторное открытие по разрешенному workflowпереходу.

  1. Что Нужно Сделать

Нужно реализовать модуль TaskPortal с сущностями TaskPortalProfile, TaskPortalPage, TaskPortalSession, TaskPortalSubmitResult и TaskPortalUnreadMarker. Профиль портала должен задавать стартовую страницу, доступные блоки, navigation, fallback pages и привязку к опубликованным WorkflowView/WorkflowScreen.

Нужно реализовать публичные и авторизованные routes портала: стартовую страницу, выбор доступного сервиса или типа обращения, форму создания обращения, страницу результата отправки, личный список обращений, публичную карточку по безопасной ссылке, карточку авторизованного заявителя и действия приемки результата.

Форма создания и формы действий должны строиться через публичный renderer WorkflowScreen из ws. Заявителю нельзя показывать he3. Длинные формы должны поддерживать черновик через WorkflowScreenDraft, безопасную загрузку файлов через TemporaryFiles и перенос вложений в FT после успешного сохранения.

Списки и карточки должны строиться через WorkflowView и WorkflowFilter. Портал не должен хранить собственную частную разметку списков и карточек, если это можно описать через общие workflow-представления. Списки заявителя должны показывать только доступные ему задачи и поддерживать фильтрацию по статусу, проекту, типу обращения, дате, непрочитанным ответам и требующим действия обращениям.

Доступ должен проверяться через Security с учетом пользователя или анонимного principal, host context, PublicationScheme, проекта, view/screen, задачи, токена публичной карточки и срока действия ссылки. Ошибка доступа не должна раскрывать существование закрытой задачи.

Для анонимного обращения нужно поддержать последующую привязку к учетной записи после подтверждения email или авторизации. Профиль заявителя должен учитывать учетную запись, подтвержденные контакты, организацию, предпочтительный канал связи и язык уведомлений. Исторические задачи не должны менять контактные данные задним числом без явного действия.

Комментарии заявителя, публичные ответы сотрудников, запросы уточнения и упоминания должны проходить через Collaboration. Вложения сообщений должны храниться через FT, а не внутри TaskPortal. Непрочитанные ответы и уведомления должны формироваться через EventBus и внутренние каналы доставки.

Нужно поддержать этап приемки результата заявителем. Если workflow проекта разрешает действие, заявитель должен видеть "Принять результат" и "Вернуть на доработку". Возврат должен требовать комментарий или настроенный экран причины. Автоматическое закрытие после ожидания приемки должно выполняться через Queue, если это включено проектом.

Если проект включает оценку качества обслуживания, портал должен показывать форму оценки после приемки или закрытия. Форма оценки не должна раскрывать внутреннюю историю, комментарии и участников задачи. Оценка должна учитывать право просмотра и запрет повторной оценки по настройке проекта.

Нужно реализовать Help и TestA для публичного и авторизованного пути заявителя: создание обращения, личный список, публичная карточка, комментарий, вложение, непрочитанный ответ, приемка результата, возврат на доработку, безопасная ошибка доступа, host-ограничение и replay protection.

  1. Границы Ответственности

TaskPortal владеет портальной оболочкой, заявительской навигацией, post-submit UX, публичной карточкой, личными списками заявителя, безопасным DTO портала, unread markers и UX приемки результата.

TaskPortal не владеет записью задачи, workflow-переходами, правами, публикацией страниц, renderer ws, фильтрами, хранением комментариев, файловым хранилищем, событиями, очередями, антиспамом и доставкой уведомлений. Эти функции остаются у Tasks, Workflow*, WorkflowScreen, WorkflowView, WorkflowFilter, Security, FT, Collaboration, EventBus, Queue, AbuseProtection и транспортных модулей.

TaskPortal не заменяет Cabinet. Cabinet может дать точку входа или ссылку на портал, но не становится владельцем страниц задач.

  1. Критерии Приемки

Заявитель может создать обращение через публичную или авторизованную форму без доступа к he3.

После отправки формы заявитель видит понятный результат: номер задачи, статус приема, ожидаемый следующий шаг и доступную ссылку.

Авторизованный заявитель видит только свои обращения и не видит чужие задачи без явного права.

Публичная карточка показывает только разрешенные поля, публичную историю и публичные ответы. Внутренние комментарии, скрытые поля, служебная история и закрытые вложения не выводятся.

Заявитель может добавить комментарий, ссылку или вложение только через разрешенное workflowдействие и только после проверки прав и antiabuse policy.

Действия "Принять результат" и "Вернуть на доработку" выполняются как workflow-переходы и фиксируются в истории задачи.

Анонимное обращение может быть привязано к учетной записи после подтверждения контакта или авторизации без раскрытия чужих данных.

Непрочитанные ответы отображаются в личном списке и карточке заявителя, а их расчет не требует прямого обхода внутренней модели EventBus или Collaboration.

  1. Проверки И Документация

TestA должен проверять публичный и авторизованный happy path, запрет he3, права просмотра, host visibility, безопасные ошибки доступа, черновик формы, загрузку вложения, replay/idempotency, комментарий, приемку результата, возврат на доработку и непрочитанные ответы.

Help должен содержать руководство заявителя, администратора и программиста: настройка профиля портала, публикация страниц, привязка WorkflowView/WorkflowScreen, права доступа, публичные ссылки, обработка ошибок, ограничения и диагностика.

-

Реализован первый кодовый срез Tasks Core.

Что сделано:

Границы:

Проверки:

-

Стековый PR поверх #1302 / I128-2800, потому что базовый контракт записи Tasks еще не в develop. После merge #1302 ветку нужно будет перебазировать или retarget на develop.

Что сделано:

Проверки:

-

Реализован кодовый срез I128-2803: рабочее место задач и внутренний API модуля Tasks.

Что изменено:

Границы:

Проверки:

-

Реализован кодовый срез I128-2804 для модуля Tasks.

Что изменено:

Границы:

Проверки:

-

  1. Что сделано

Tasks хранит taskspecific правила, сохраненные результаты, поля, команды и payloadы. WorkCalendar, Queue runtime, EventBus, WorkflowFilter/View, Security и Observability остаются владельцами своих системных контрактов.

  1. Проверки

Target branch: feature/I128~~2804~~tasks~~domain~~entities-relations. Commit: 269dc31177bdb8222dc01291bfda43d3541e6dfd.

-

Задача: I128-2810

Что сделано:

Границы:

Проверки:

-

Реализован первый кодовый срез TaskPortal для I128-2811.

Что сделано:

Границы:

Проверки:

Commit: bc92c2a694964333b2ed57891dd04e83b0f97981

1. Связанные задачи

1.1. 🔗 blocks: I128-2791

[I128-2791] Расширить WorkflowScreen/WorkflowView для публичных ws-форм и представлений Статус: Завершено | Автор: Ilya Mikhaylenko

1.2. 🔗 blocks: I128-2793

[I128-2793] Ввести TraceContext для сквозной трассировки операций Статус: Завершено | Автор: Ilya Mikhaylenko

1.3. 🔗 blocks: I128-2794

[I128-2794] Реализовать системную событийную шину EventBus Статус: Завершено | Автор: Ilya Mikhaylenko

1.4. 🔗 blocks: I128-2795

[I128-2795] Расширить Queue как runtime фоновых заданий, retry и расписаний Статус: Завершено | Автор: Ilya Mikhaylenko

1.5. 🔗 blocks: I128-2796

[I128-2796] Расширить FT как постоянное хранилище вложений задач Статус: Завершено | Автор: Ilya Mikhaylenko

1.6. 🔗 blocks: I128-2797

[I128-2797] Расширить Security для проектных прав, полей, действий и аудита доступа Статус: Завершено | Автор: Ilya Mikhaylenko

1.7. 🔗 blocks: I128-2798

[I128-2798] Реализовать HealthCheck для workflow-проектов и задач Статус: Завершено | Автор: Ilya Mikhaylenko

1.8. 🔗 blocks: I128-2799

[I128-2799] Подготовить TestA-контракты системных JSON и end-to-end сценариев Статус: Завершено | Автор: Ilya Mikhaylenko

1.9. 🔗 blocks: I128-2800

[I128-2800] Каноническая запись задачи TASK Статус: Завершено | Автор: Ilya Mikhaylenko

1.10. 🔗 blocks: I128-2801

[I128-2801] Системный проект задач Tasks Статус: Завершено | Автор: Ilya Mikhaylenko

1.11. 🔗 blocks: I128-2803

[I128-2803] Рабочее место задач и внутренний API Статус: Завершено | Автор: Ilya Mikhaylenko

1.12. 🔗 blocks: I128-2804

[I128-2804] Доменные сущности, связи и классификация задач Статус: Завершено | Автор: Ilya Mikhaylenko

1.13. 🔗 blocks: I128-2805

[I128-2805] SLA, командные очереди и ранжирование задач Статус: Завершено | Автор: Ilya Mikhaylenko

1.14. 🔗 blocks: I128-2806

[I128-2806] Системные треды и публичные коммуникации Collaboration Статус: Завершено | Автор: Ilya Mikhaylenko

1.15. 🔗 blocks: I128-2808

[I128-2808] Защита публичных каналов AbuseProtection Статус: Завершено | Автор: Ilya Mikhaylenko

1.16. 🔗 blocks: I128-2809

[I128-2809] Сохраненные и материализованные фильтры WorkflowFilter Статус: Завершено | Автор: Ilya Mikhaylenko

1.17. 🔗 blocks: I128-2813

[I128-2813] Расширить Users/Organisations для заявителей и resolver участников процессов Статус: Завершено | Автор: Ilya Mikhaylenko

1.18. 🔗 blocks: I128-2814

[I128-2814] Расширить ProfileManager для пользовательских настроек TaskPortal Статус: Завершено | Автор: Ilya Mikhaylenko

1.19. 🔗 blocks: I128-2816

[I128-2816] Расширить Menu для публикации TaskPortal в навигации и Cabinet Статус: Завершено | Автор: Ilya Mikhaylenko

1.20. 🔗 blocks: I128-2827

[I128-2827] Расширить I128FMail как входящий почтовый канал задач Статус: Завершено | Автор: Ilya Mikhaylenko