Меню


[I128-2810] Миграция VirtualRef в промышленный контур Tasks


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.3 >> [I128-2810] Миграция VirtualRef в промышленный контур Tasks📄 Скачать в DOCX


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

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

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

  1. Цель

Нужно подготовить промышленный переход от существующего модуля VirtualRef к универсальному модулю Tasks. Данные VirtualRef должны быть перенесены в модель задач так, чтобы пользователи и администраторы не потеряли вопросы, ответы, вложения, историю, статусы, публичную видимость, права и уже использованные ссылки.

  1. Контекст

VirtualRef сейчас является отдельным пользовательским контуром виртуальной справки. После появления Tasks этот функционал должен перейти в общий taskmanagement слой, чтобы не поддерживать две параллельные системы обращений. Миграция должна быть управляемой: сначала dryrun без записи, затем проверяемый production cutover с freeze/read-only старого контура, отчетом расхождений и понятным планом отката.

Эта задача реализует только предметную миграцию VirtualRef в Tasks. Общие механизмы workflow, экранов, представлений, файлового хранилища, коммуникаций, событий, очередей, прав, диагностики и TestA используются как зависимости и не реализуются внутри этой задачи.

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

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

Нужно реализовать dryrun без записи изменений. Dryrun должен читать существующие данные VirtualRef, строить план переноса, показывать количество переносимых записей, пропущенные записи, ошибки mapping, поврежденные вложения, неоднозначные права, неизвестные статусы и другие блокеры cutover. Отчет должен быть понятен администратору и пригоден для повторной проверки.

Нужно реализовать production cutover. Перед записью данных должен выполняться повторный dryrun, после чего старый VirtualRef переводится в режим freeze/readonly на время переключения. Новые записи Tasks должны получать штатные ключи TASK, а старые идентификаторы VirtualRef должны сохраняться как legacy-ключи или alias, чтобы старые публичные ссылки не ломались без явного правила redirect.

Нужно переносить workflow-состояние через штатный механизм 113 LINK, историю действий через стандартное поле 907, вложения через ссылки на FTObject, публичные ответы и комментарии через согласованный контракт Collaboration, а детальные изменения значимых полей через FieldHistory, если исходные данные позволяют восстановить old/new values.

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

Нужно реализовать сверку результата. После миграции администратор должен видеть совпадение счетчиков, списков, карточек, ключевых полей, статусов, FAQ-признаков, вложений, истории, прав, публичной видимости и поиска. Выборочная мигрированная задача должна открываться в новом списке и карточке Tasks.

Нужно определить режим старых страниц VirtualRef после cutover: readonly, redirect или compatibility view на Tasks по настройке проекта. Старые данные не должны изменяться скрыто после переключения, если выбран readonly.

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

В задачу входит только taskspecific логика миграции VirtualRef: профиль mapping, dryrun, production cutover, freeze/readonly, idempotency, сверка результата, legacyключи, audit миграции и Help/TestA-сценарии миграции.

В задачу не входит реализация общих модулей FT, TemporaryFiles, Collaboration, EventBus, Queue, FieldHistory, Security, Workflow*, WorkflowScreen, WorkflowView, WorkflowFilter, HealthCheck и TestA. Если нужного общего контракта не хватает, он должен быть оформлен как отдельная задача владельца соответствующего модуля, а не реализован частно внутри Tasks.

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

Dry-run запускается без записи изменений и показывает полный план миграции с ошибками, предупреждениями, счетчиками и примерами проблемных записей.

Production cutover переносит контрольный набор VirtualRef в Tasks без потери вопросов, заголовков, ответов, вложений, истории, статусов, workflowсостояний, FAQпризнаков, прав и публичной видимости.

Старые ключи VirtualRef сохраняются как legacyидентификаторы или alias. Уже опубликованные ссылки продолжают работать через явно выбранный readonly, redirect или compatibility режим.

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

Мигрированные записи открываются в списках и карточке Tasks, учитывают права Security и не раскрывают данные, которые были скрыты в VirtualRef.

Ошибки поврежденных вложений, неизвестных статусов, неоднозначных прав и неполного mapping не скрываются, а попадают в отчет миграции и диагностический журнал.

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

Должны быть подготовлены TestAсценарии на контрольном наборе VirtualRef: dryrun, успешный cutover, повторный запуск без дублей, поврежденное вложение, неизвестный статус, сохранение legacy-ключа, перенос истории, перенос FAQ и проверка прав.

Help должен содержать руководство администратора по подготовке mapping, запуску dryrun, анализу отчета, freeze/readonly, production cutover, сверке результата и rollback plan.

-

Реализован первый кодовый срез 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

Что сделано:

Границы:

Проверки:

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

1.1. 🔗 blocks: I128-2790

[I128-2790] Расширить Workflow* для промышленного контура задач Статус: Завершено | Автор: Ilya Mikhaylenko

1.2. 🔗 blocks: I128-2791

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

1.3. 🔗 blocks: I128-2793

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

1.4. 🔗 blocks: I128-2794

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

1.5. 🔗 blocks: I128-2795

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

1.6. 🔗 blocks: I128-2796

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

1.7. 🔗 blocks: I128-2797

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

1.8. 🔗 blocks: I128-2798

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

1.9. 🔗 blocks: I128-2799

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

1.10. 🔗 blocks: I128-2800

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

1.11. 🔗 blocks: I128-2801

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

1.12. 🔗 blocks: I128-2802

[I128-2802] Пакет разработчика, Help и TestA для Tasks Статус: Завершено | Автор: Ilya Mikhaylenko

1.13. 🔗 blocks: I128-2803

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

1.14. 🔗 blocks: I128-2804

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

1.15. 🔗 blocks: I128-2806

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

1.16. 🔗 blocks: I128-2807

[I128-2807] История значимых полей FieldHistory Статус: Завершено | Автор: Ilya Mikhaylenko

1.17. 🔗 blocks: I128-2809

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