1.42M

final_prez

1.

Nobilis.Te
am
Индикатор динамики фактора
Percent-prev: период оценки, период сравнения и контракт интеграции

2.

Расчет: два периода, одна формула, массив факторов
Массив факторов

Цикл по факторам
Дельта

Массив
результатов

Период оценки

Период сравнения

Агрегация
delta_absolute = value(период оценки) - value(период сравнения)
delta_percent = 100 * delta_absolute / abs(value(период сравнения))
Nobilis.Te
am
0
2

3.

Вычислительный сервис уже закрывает базовую математику
Что делает percent_prev
Что не делает
Какие данные нужны
получает подготовленные данные,
выбирает два окна дат, агрегирует
значения и возвращает результат
не строит фактор, не строит прогноз, не
ходит сам в базу
factorId, DataFrame, date, fact_day; для
прогноза нужен predict_day
Если есть is_total_aggregate, сервис берет только строки true, чтобы не задвоить разрезы.
Nobilis.Te
am
0
3

4.

Период оценки задает, что считаем в числителе динамики
Текущий период
Завершенный период
Скользящее окно
с начала календарного периода до
текущей даты
последний полностью закрытый
период
последние N дней или N календарных
единиц
Последняя точка
Прогнозный период
последнее значение, где value != null
ближайший полный будущий период
по predict_day
Пользовательский термин: «Период оценки». Target можно оставить только как технический аналог.
Nobilis.Te
am
0
4

5.

Текущий и завершенный период отвечают на разные вопросы
Дата примера: 12.06.2026
Текущий период: «как идем сейчас». Завершенный период: «как закончился последний полный
период».
Nobilis.Te
am
0
5

6.

Скользящее окно и последняя точка требуют отдельных правил
Скользящее окно по дням
Неделя / месяц / квартал / год
последние N календарных дней до последней доступной
даты включительно
текущий неполный период + N-1 полных предыдущих
периодов
Последняя точка
берем последнее не null значение;
0 считается валидным
Nobilis.Te
am
0
6

7.

Forecast mode использует готовый прогноз, а не строит его
Fact data
Prediction data
Фильтр прогноза
обычный режим берет factordata.parquet и колонку fact_day
forecast mode дополнительно берет
predict.parquet
нужно явно выбрать predictModel и
predictValueType
Как считаем
Период оценки по predict_day;
период сравнения обычно по
fact_day
Сервис не прогнозирует: он только использует уже подготовленный prediction artifact.
Nobilis.Te
am
0
7

8.

Период сравнения задает базу для индикатора
Предыдущий период
Прошлый год
строится относительно периода оценки: текущий месяц 01.0612.06 сравниваем с 01.05-12.05
тот же диапазон дат, сдвинутый на год назад: 01.0612.06.2025
Для скользящего окна
предыдущий период не пересекается с периодом оценки: 03.06-12.06 сравниваем с 24.05-02.06
Пользовательский термин: «Период сравнения». Baseline не выводим как основной термин интерфейса.
Nobilis.Te
am
0
8

9.

После дат остаются три расчетные политики
Агрегации
Полнота данных
Нулевая база
sum, average, median, min,
max, last
null = нет данных
0 = валидное значение
hide или show_absolute
coverage = days_with_data / total_days_in_period * 100%
Расхождение нужно зафиксировать: в коде minCoveragePercent по умолчанию 20%, в постановке нового
фактора указано 10%.
Nobilis.Te
am
0
9

10.

Новый интерфейс: сначала периоды
1. Сначала Период оценки
пользователь выбирает, что именно считаем
2. Затем Период сравнения
выбираем базу: предыдущий период или прошлый год
3. Общие настройки ниже
агрегация, полнота, деление на 0 и формат вывода
Показываем крупный фрагмент формы; полный старый
список настроек здесь убран.
1
0

11.

Frontend отвечает за понятную форму и дефолты нового
фактора
Период оценки
тип оценки; календарный период или
rolling-окно
Период сравнения
предыдущий период или прошлый год
Дефолты
10% полноты в постановке, hide для
нулевой базы, только проценты
Nobilis.Te
am
1
1

12.

Backend: POST /api/percent-prev, JSON, без Kafka
POST JSON

массив факторов

цикл по факторам

загрузить parquet

массив
результатов
Обычный режим
Forecast mode
Результат
для каждого фактора backend
использует factor-data.parquet
дополнительно нужен prediction
artifact: predict.parquet
deltas[] и errors[]; полный ответ
полезнее одного процента
{ "factors": [{ "factorId": "UUID", "factorDataUrl": ".../factor-data.parquet",
"settings": { "targetType": "forecast_period", "predictModel": "RANDOM_FOREST",
"predictValueType": "MID", "baselineType": "aligned_previous_period" } }] }
Nobilis.Te
am
1
2

13.

На груминге нужно зафиксировать контракт и расхождения
Важно
percent_prev не строит прогноз: сервис использует готовые прогнозные данные
Nobilis.Te
am
1
3

14.

Итог: считаем динамику и фиксируем интеграционный
контракт
Вычислительная часть
выбрать два периода, агрегировать окна и посчитать
дельту
Frontend
простая форма: сначала период оценки, затем период
сравнения
Backend
endpoint с JSON принимает массив факторов и
возвращает массив результатов
Nobilis.Te
am
Forecast mode остается в контракте: готовый
predict.parquet, predictModel, predictValueType.
1
4
English     Русский Правила