/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(). Проверка, которая пересчитывает логику своими руками, проверяет саму себя.