13. Дебаг та діагностика
Якщо ваше правило не працює як очікується (метод не показується, націнка не застосовується, умова не спрацьовує) - дебаг допоможе зрозуміти що саме відбувається. FCR має два рівні дебагу для різних задач.
Два рівні дебагу
| Рівень | Призначення | Що пише | Лог-файл |
|---|---|---|---|
| Дебаг умов (рівень 1) | Для адміністратора магазину | Зрозумілою мовою: які методи перевіряються, які умови пройшли/не пройшли, чому метод приховано | storage/logs/fcr_conditions.log |
| Дебаг розробника (рівень 2) | Для розробника / технічної підтримки | Технічна інформація: значення змінних, стан сесії, JSON-дампи об’єктів, виклики методів | storage/logs/fcr_debug.log |
FCR не пише в загальний error.log OpenCart. Це зроблено навмисно щоб не засмічувати загальний лог технічними повідомленнями. Усі логи FCR живуть у власних файлах.
Увімкнення дебагу
- Перейдіть на вкладку "Додатково"
- Знайдіть блок "Дебаг та діагностика"
- Увімкніть потрібний перемикач:
- Дебаг умов - для звичайної діагностики
- Дебаг розробника - для глибокого аналізу (тільки коли просить підтримка)
- Натисніть Save вгорі сторінки
- Виконайте дію яку треба продіагностувати (наприклад, оформіть тестове замовлення)
- Прочитайте лог-файл
Запис у лог-файли уповільнює роботу модуля. Не залишайте дебаг увімкненим на продакшн-магазині постійно - тільки на час діагностики. Після завершення обов’язково вимкніть.
Як читати fcr_conditions.log
Цей лог пише зрозумілою мовою що відбувається з умовами. Приклад вмісту:
[14:23:11] === Фільтрація доставки (кошик: 350.00 UAH, вага: 2.5 кг) ===
[14:23:11] Доставка "Кур’єр по Києву" (custom_courier.kyiv)
[14:23:11] ✓ $0 "city: [Київ] (actual: Київ)": PASSED
[14:23:11] ✓ $1 "weight <= 30 (actual: 2.5)": PASSED
[14:23:11] Результат: ПОКАЗАНО
[14:23:11] Доставка "Нова Пошта - Відділення" (nova_poshta.warehouse)
[14:23:11] ✗ $0 "country: [UA] (actual: PL)": FAILED
[14:23:11] Результат: ПРИХОВАНО
[14:23:11] === Фільтрація оплати ===
[14:23:11] Оплата "Накладений платіж" (cod)
[14:23:11] ✗ $0 "total >= 200 (actual: 150)": FAILED
[14:23:11] Результат: ЗАГЛУШКА
Як читати:
===рядки - початок нової фази (фільтрація доставки/оплати)✓- умова пройдена (true)✗- умова не пройдена (false)(actual: ...)- фактичне значення яке FCR обчислив для цієї умовиРезультат:- підсумкова дія: ПОКАЗАНО / ПРИХОВАНО / ЗАГЛУШКА
Типові сценарії використання
Метод не показується
- Увімкніть дебаг умов
- Зайдіть на чекаут (під клієнтом якого треба перевірити)
- Відкрийте лог - знайдіть назву методу
- Подивіться які умови
FAILEDі яке тамactual - Виправте умову (наприклад, помилкове значення) і перевірте знову
Націнка не застосовується
Те ж саме що і з методом - дивіться чи з’являється запис про націнку у лозі. Якщо немає взагалі - проблема з обраним методом оплати або з тим що націнка вимкнена. Якщо є але "ПРОПУЩЕНО" - значить умови не пройшли.
Складний вираз дає неочікуваний результат
Дебаг покаже значення кожної умови плюс розрахований результат виразу:
[14:25:33] ✓ $0 "category: [Меблі]": PASSED
[14:25:33] ✗ $1 "weight > 20 (actual: 15)": FAILED
[14:25:33] ✓ $2 "customer_group: [VIP]": PASSED
[14:25:33] Expression: ($0 AND $1) OR $2 = TRUE
Тут видно: $1 провалилось, але через OR $2 загальний результат = TRUE.
Дебаг у браузері (console.log)
На чекаутах SmartCheckout (OCTemplates) "Режим розробника" додатково виводить у JavaScript-консоль браузера перелік методів доставки, які пройшли фільтрацію, і вибраний покупцем метод. Керується тим же перемикачем у розділі "Додатково".
Щоб побачити повідомлення:
- Натисніть F12 у браузері
- Перейдіть на вкладку Console
- Шукайте повідомлення, що починаються з
FCR [
На стандартному чекауті OpenCart і на OnePageCheckout діагностика йде виключно у файли fcr_conditions.log і fcr_debug.log. Нічого при цьому не втрачається: у логах той самий перелік методів і значно більше подробиць - умови, розрахунок вартості, підсумки.