/dev/arena/integrity/check

Прогнать проверку инвариантов арены. Ничего не меняет.

Адрес метода

/dev/arena/integrity/check

Требует сессию пользователя

Только не-прод или админ

Весь раздел /dev/arena доступен, если сервер не продовый либо у игрока стоит флаг админа.

Параметры

Параметр Обязательный Тип Описание
limit НЕТ int(0+) сколько игроков в дорогих проверках (ранг, сила защиты); 0 — по умолчанию 200

Результат

{
    "response": {
        "success": 1,
        "findings": [
            { "check": "double_seat", "title": "Игрок в двух живых группах одновременно",
              "count": 0, "samples": [], "fixable": true, "info": false },
            { "check": "rank_drift", "title": "Хранимый ранг отстаёт от пересчитанного (норма, см. BUG-07)",
              "count": 189, "samples": ["4769: 295 против 1658"], "fixable": false, "info": true }
        ]
    }
}

Что важно знать

За методом тот же код, что за командой cli://arena/check — base\model\arena\ArenaIntegrity. Эндпоинт существует ради тестируемости: CLI из чёрного ящика по HTTP недостижим.

info: true — справка, а не нарушение. Единственная такая проверка сейчас — rank_drift: хранимый ранг обновляется только у своей строки и только когда сам игрок что-то сделал (BUG-07, пересчёт всей группы переписывал 227 строк из 233), поэтому отставание от чужих боёв — норма. Считать его нарушением значило бы всегда показывать сотни «поломок», в которых утонет настоящая.

fixable: true — чинится вызовом /dev/arena/integrity/repair. Чинится только то, где верное значение известно однозначно: осиротевшие места, пустые группы закончившихся сезонов, денормализованные копии. Несовпадение сезона, переполнение группы и неразрешимые cid — только отчёт.

Дорогие проверки ограничены limit: ранг и сила защиты считаются продовым кодом, то есть запросом на игрока. Дешёвые идут по всей популяции.

Считается продовым кодом, а не своим запросом — ArenaManager::liveRank(), defenseStrength(). Проверка, которая пересчитывает логику своими руками, проверяет саму себя.