{
    "generated_at": "2026-10-30T15:06:29+03:00",
    "scope": "read-only; no orders, payment requests, SMS or config writes",
    "automatic_checks_passed": false,
    "production_launch_confirmed": false,
    "failures": 4,
    "warnings": 12,
    "checks": [
        {
            "id": "php.support",
            "status": "fail",
            "message": "PHP 8.1.9: поддержка этой ветки не подтверждена; для выпуска выберите поддерживаемую версию и повторите тесты."
        },
        {
            "id": "php.pdo_mysql",
            "status": "pass",
            "message": "Расширение pdo_mysql доступно."
        },
        {
            "id": "php.mbstring",
            "status": "pass",
            "message": "Расширение mbstring доступно."
        },
        {
            "id": "php.fileinfo",
            "status": "pass",
            "message": "Расширение fileinfo доступно."
        },
        {
            "id": "php.gd",
            "status": "pass",
            "message": "Расширение gd доступно."
        },
        {
            "id": "php.curl",
            "status": "pass",
            "message": "Расширение curl доступно."
        },
        {
            "id": "php.openssl",
            "status": "pass",
            "message": "Расширение openssl доступно."
        },
        {
            "id": "php.dom",
            "status": "pass",
            "message": "Расширение dom доступно."
        },
        {
            "id": "php.simplexml",
            "status": "pass",
            "message": "Расширение simplexml доступно."
        },
        {
            "id": "php.webp",
            "status": "pass",
            "message": "Сохранение загруженных фотографий в WebP доступно."
        },
        {
            "id": "php.errors",
            "status": "warn",
            "message": "На рабочем PHP отключите display_errors и включите закрытый error_log; CLI и PHP-FPM могут иметь разные настройки."
        },
        {
            "id": "files.writable.storage",
            "status": "pass",
            "message": "storage: доступна запись CLI-пользователю; права PHP-FPM проверьте отдельно."
        },
        {
            "id": "files.writable.config",
            "status": "pass",
            "message": "config: доступна запись CLI-пользователю; права PHP-FPM проверьте отдельно."
        },
        {
            "id": "files.writable.public/assets/uploads",
            "status": "pass",
            "message": "public/assets/uploads: доступна запись CLI-пользователю; права PHP-FPM проверьте отдельно."
        },
        {
            "id": "database.account",
            "status": "fail",
            "message": "Для хостинга нужна отдельная учётная запись БД с паролем, без root."
        },
        {
            "id": "database.connection",
            "status": "pass",
            "message": "Соединение установлено; проверка выполняется в транзакции только для чтения."
        },
        {
            "id": "database.schema",
            "status": "pass",
            "message": "Основные таблицы и обязательные поля присутствуют."
        },
        {
            "id": "admin.owner",
            "status": "pass",
            "message": "Проверено наличие владельца админки; логин и хеш пароля не выводятся."
        },
        {
            "id": "telegram.config",
            "status": "warn",
            "message": "Telegram пока выключен. Настройте бота и группу в админке."
        },
        {
            "id": "catalog.real",
            "status": "pass",
            "message": "Настоящих опубликованных товаров: 10."
        },
        {
            "id": "catalog.saleable",
            "status": "pass",
            "message": "Товаров с ценой и положительным остатком: 10."
        },
        {
            "id": "store.preview",
            "status": "pass",
            "message": "Предварительный просмотр выключен."
        },
        {
            "id": "store.checkout",
            "status": "pass",
            "message": "Оформление заказов разрешено настройками."
        },
        {
            "id": "store.legal",
            "status": "fail",
            "message": "Не завершены сведения и проверка: Порядок и срок рассмотрения обращений покупателей; Возврат и претензии; Политика персональных данных; Условия продажи."
        },
        {
            "id": "store.override",
            "status": "warn",
            "message": "Включено разрешение заказов без завершённой юридической проверки. Оно не открывает индексацию или WEBPAY."
        },
        {
            "id": "seo.domain",
            "status": "pass",
            "message": "Публичный HTTPS-домен задан."
        },
        {
            "id": "seo.indexing",
            "status": "fail",
            "message": "Индексация закрыта общей проверкой готовности."
        },
        {
            "id": "fulfillment.available",
            "status": "pass",
            "message": "Доступен самовывоз или доставка."
        },
        {
            "id": "delivery.payment.soligorsk",
            "status": "pass",
            "message": "У города доставки есть доступный способ оплаты."
        },
        {
            "id": "delivery.indexing.soligorsk",
            "status": "warn",
            "message": "Страница города пока не включена в индекс: проверьте публикацию и содержание в SEO."
        },
        {
            "id": "delivery.payment.slutsk",
            "status": "pass",
            "message": "У города доставки есть доступный способ оплаты."
        },
        {
            "id": "delivery.indexing.slutsk",
            "status": "warn",
            "message": "Страница города пока не включена в индекс: проверьте публикацию и содержание в SEO."
        },
        {
            "id": "delivery.payment.lyuban",
            "status": "pass",
            "message": "У города доставки есть доступный способ оплаты."
        },
        {
            "id": "delivery.indexing.lyuban",
            "status": "warn",
            "message": "Страница города пока не включена в индекс: проверьте публикацию и содержание в SEO."
        },
        {
            "id": "webpay.settings",
            "status": "warn",
            "message": "WEBPAY выключен. Для онлайн-оплаты нужны реквизиты и отдельная проверка платежа и уведомления."
        },
        {
            "id": "sms.login",
            "status": "warn",
            "message": "Вход по SMS пока недоступен: проверьте настройки провайдера и отправителя."
        },
        {
            "id": "sms.reminders",
            "status": "warn",
            "message": "SMS-напоминания ещё не прошли все условия включения."
        },
        {
            "id": "sms.override",
            "status": "warn",
            "message": "Для SMS включён пропуск юридической проверки; проверка документов остаётся незавершённой."
        },
        {
            "id": "catalog.images",
            "status": "pass",
            "message": "Фотографии опубликованных товаров найдены локально."
        },
        {
            "id": "http.unverified",
            "status": "warn",
            "message": "HTTP и HTTPS не проверялись. Повторите с --base-url=https://ваш-домен после размещения."
        },
        {
            "id": "manual.operations",
            "status": "warn",
            "message": "Отдельно подтвердите восстановление резервной копии, защищённый доступ владельца, реальный заказ, платёж и SMS с разрешения владельца. Эта проверка не выполняет отправки и покупки."
        }
    ]
}