Задача
«История прогонов» в главном окне должна обновляться в реальном времени. Сейчас список грузится только при смене проекта — прогон, запущенный/завершённый/прерванный в отдельном окне (drill/expose/mill), не появляется и не меняет статус, пока не переоткроешь проект.
Решение
- Бэк: журнальные команды
operation_run_log_start / operation_run_log_finish / operation_runs_reconcile после успешной записи эмитят глобальное событие operation-runs://changed.
- Фронт:
OperationHistory слушает событие и перечитывает загруженный диапазон строк (offset 0, текущее число строк) — новая строка появляется, «Идёт» → «Завершён»/«Остановлен»/«Прервано» меняется без переоткрытия.
- Перечит безусловный (событие без payload) — дёшево и идемпотентно;
finish не несёт project_path.
Проверить после слияния
Задача
«История прогонов» в главном окне должна обновляться в реальном времени. Сейчас список грузится только при смене проекта — прогон, запущенный/завершённый/прерванный в отдельном окне (
drill/expose/mill), не появляется и не меняет статус, пока не переоткроешь проект.Решение
operation_run_log_start/operation_run_log_finish/operation_runs_reconcileпосле успешной записи эмитят глобальное событиеoperation-runs://changed.OperationHistoryслушает событие и перечитывает загруженный диапазон строк (offset 0, текущее число строк) — новая строка появляется, «Идёт» → «Завершён»/«Остановлен»/«Прервано» меняется без переоткрытия.finishне несёт project_path.Проверить после слияния