intra_monitor/CHANGELOG.md
2026-03-23 22:54:13 +03:00

5.1 KiB
Raw Blame History

Changelog

[sync2 vibe] — 2026-03-23

Новое: «Служебный статус в интре» — двусторонняя синхронизация

Колонка в таблице заявок

  • Добавлена новая колонка «Служ. статус в интре» (servstatus) — отображает значение дополнительного поля addfield_2f6eaa2vnutrennij_statusSingleSelect из IntraDesk
  • Колонка интерактивная: при наведении открывается выпадающий пикер с полным списком внутренних статусов (аналогично колонке «Статус»)
  • Текущее значение подсвечивается цветом соответствующего внутреннего статуса (если совпадает по label)
  • Есть пункт «— очистить» для сброса значения в IntraDesk

Синхронизация IntraDesk → наш статус (входящая)

  • При каждом обновлении задачи в ходе инкрементального или полного сканирования проверяется значение доп. поля
  • Если значение доп. поля совпадает с label одного из активных внутренних статусов — этот статус автоматически выставляется через setExclusiveMark (без участия пользователя)
  • Управляется настройкой sync_addfield_status (по умолчанию выключена)

Синхронизация наш статус → IntraDesk (исходящая)

  • При смене внутреннего статуса через POST /api/marks значение нового статуса (его label) автоматически записывается в доп. поле IntraDesk через PUT /changes/v3/tasks/
  • Если статус снимается без замены — доп. поле очищается (null)
  • Работает только при включённом sync_addfield_status

Прямое редактирование из UI

  • Новый эндпоинт POST /api/tasks/:taskId/intra-addfield — позволяет записать произвольное значение в доп. поле IntraDesk напрямую, независимо от внутреннего статуса
  • После успешной записи локальный кеш задачи обновляется немедленно (без ожидания следующего сканирования)
  • SSE-событие intra_addfield рассылается всем подключённым клиентам — обновление отображается в реальном времени на других вкладках/у других пользователей
  • Тост-уведомление показывается другим пользователям при изменении

Настройки

  • Новая настройка «Синхронизировать служебный статус с доп. полем IntraDesk (двусторонняя)» в панели администратора → Status Automation
  • Ключ: sync_addfield_status, булева строка '0'/'1'

Запуск локально

  • Добавлен docker-compose.local.yml — compose-файл для локальной сборки из исходников (вместо пулла готового образа из registry), данные хранятся в ./data
  • Добавлен start-local.bat — батник для запуска локального Docker одним двойным кликом

Затронутые файлы

Файл Изменения
refresh-service.js Константа алиаса доп. поля; извлечение _addfield_status при fetch; updateIntraAdditionalField(); inbound-синхронизация в applyStatusAutomationForChangedTasks; sync_addfield_status в normalizeSettings
server.js Outbound-вызов после POST /api/marks; новый эндпоинт POST /api/tasks/:taskId/intra-addfield; настройка sync_addfield_status в ALLOWED_SETTINGS и GET/POST /api/settings
public/js/ui.js Колонка servstatus в ALL_COLS; функции _addfieldBadgeHtml, intraAddfieldPickerHtml, setIntraAddfield
public/js/sse.js Обработчик события intra_addfield
public/js/auth.js Загрузка/сохранение чекбокса sync_addfield_status
public/index.html Чекбокс настройки в панели Status Automation
docker-compose.local.yml Новый файл — compose для локальной разработки
start-local.bat Новый файл — скрипт запуска локального Docker