Перевод моделей в архив (arc / Done)
Ключевая идея#
В интерфейсе вкладка Actual Models показывает модели с флагом arc = 0, а вкладки Archive / … — модели с arc = 1.
Флаг arc выставляется не по индикатору прогресса Time Depth в интерфейсе, а по вычисленному статусу завершенности модели: Levels -> Done, который формируется в коде.
Где определяется, активная модель или архивная#
Отбор в списках#
- Actual Models: фильтр по
arc = 0. - Archive / Community Archive / Highlights Archive: фильтр по
arc = 1.
См. mp_prism_list.php.
Как появляется arc#
- В процессе пересчета модели строится ветка
Levels. - Поле
Levels[Done]становится равным1, когда по всем релевантным aim-веткам появляется признак завершения вControls[aimName][Done]. - Значение
Levels[Done]записывается вmp_models.arc.
См. inc_mp_calcModels.php.
Что именно “закрывает” модель (ставит Controls[..][Done])#
Ветка Controls[...][Done] выставляется при расчете контрольных параметров в inc_calc_controls.php, когда наступает один из завершающих сценариев. Типовые значения Done:
APPROACH— достигнут уровень подхода.LOST AM— пробит уровень потери.BREAK LT— пробитаLTв сценариях, где она проверяется.REACHED— достигнут уровеньP6.AIM1 / AIM2 / AIM3 / AIM4— достигнута соответствующая цель.- Для reverse/over-сценариев используются значения вида
REVERSE,OVER,OVER LOST; они тоже означают завершение текущего сценария контроля.
Почему “Time Depth = 100%” не означает архив#
Time Depth в блоке Analysis — это расчетная UI-метрика, показывающая прогресс или возраст модели. Сам по себе этот показатель не меняет значение arc.
Чтобы модель ушла в архив, должно быть выставлено Controls[..][Done], после чего формируется Levels[Done] = 1.
DEPTH APPROACH и онлайн-режим#
Событие DEPTH APPROACH означает, что подход ожидался, но так и не произошел до достижения предельной глубины. В коде оно выставляется только при условии !NEXT_NEEDED.
В онлайн-режиме NEXT_NEEDED включен, поэтому ветка DEPTH APPROACH фактически не срабатывает. Следовательно, только по одному Time Depth модель в архив не уходит.
TIME_DEPTH_AIMS — это другое#
TIME_DEPTH_AIMS — это отдельное ограничение глубины отслеживания целей на стадии постконтроля. Оно определяет, до какого момента продолжается поиск достижения целей, но не равно DEPTH APPROACH и относится к другому этапу логики.
Практическая диагностика#
Для конкретной модели имеет смысл последовательно проверить:
mp_models.arc— текущее значение0/1.- Ветки
ControlsиLevels, в том числеControls[..][Done]иLevels[Done]. - Условия расчета: онлайн-режим или нет, а также состояние
NEXT_NEEDED.
Важно: arc должен обновляться вместе с пересчётом#
В текущей версии системы поле mp_models.arc обновляется при любом штатном пересчете модели: через воркер, API или CLI.
- Ветка
Levelsстроится изControls(см.inc_mp_calcModels.php,addLevels()). - Значение
Levels[Done]записывается вmp_models.arcпри сохранении или обновлении модели. - Обновление не зависит от источника запуска пересчета: из
mp_multi_calc.php, из API или из CLI. Список колонокmp_modelsподгружается лениво внутриupdateModelInDB()/insertModelIntoDB(), поэтомуarcвсегда попадает в SQLUPDATE.
Если вы видите несоответствие, например Controls[..][Done] уже финальный, а mp_models.arc все еще равен 0, на практике обычно причина одна из двух:
- Модель давно не пересчитывалась, и в БД остались старые значения.
- Сравниваются разные БД или разные инстансы системы.
Для синхронизации достаточно запустить пересчет модели, например через /api/recalc_model_params.php?modelId=..., а затем повторно проверить mp_models.arc и ветки Controls / Levels.
Быстрый просмотр данных модели#
Для просмотра текущего состояния модели, включая arc, Controls и Levels, можно использовать:
- Web:
mp_show_model.php?id=2415444 - CLI:
php mp_show_model_json.php 2415444— идентификатор можно передавать как позиционный аргумент или какid=2415444.