Перейти до основного вмісту

Посібник з усунення несправностей

Поширені проблеми та рішення для модуля синхронізації API BJET.

Проблеми автентифікації

Помилка 401 Неавторизовано

Симптоми:

  • API повертає код статусу 401
  • Повідомлення "Автентифікація не вдалася"

Рішення:

  1. Перевірка облікових даних

    • Перевірте ім'я користувача та пароль для базової автентифікації
    • Підтвердьте, що Bearer Token дійсний та не прострочений
    • Переконайтеся, що облікові дані відповідають налаштованим в Odoo
  2. Перевірка формату заголовків

    # Базова автентифікація - Правильний формат
    Authorization: Basic dXNlcjpwYXNz

    # Bearer Token - Правильний формат
    Authorization: Bearer your_token_here
  3. Перевірка конфігурації

    • Переконайтеся, що тип автентифікації встановлений правильно в конфігурації API
    • Перевірте, що користувач має відповідні дозволи в Odoo

Закінчення терміну дії токена

Рішення: Згенеруйте новий токен або реалізуйте логіку оновлення токена у вашій програмі.

Проблеми з'єднання

Помилки тайм-ауту

Симптоми:

  • 408 Тайм-аут запиту
  • Перевищено тайм-аут з'єднання

Рішення:

  1. Збільшення значень тайм-ауту

    Connection Timeout: 10  # Збільшити з стандартних 5
    Read Timeout: 30 # Збільшити з стандартних 15
  2. Перевірка підключення до мережі

    • Перевірте, що правила брандмауера дозволяють з'єднання
    • Протестуйте підключення за допомогою ping або curl
    • Перевірте налаштування проксі, якщо застосовно
  3. Оптимізація продуктивності запитів

    • Додайте фільтри домену для зменшення даних
    • Використовуйте пагінацію для великих наборів даних
    • Індексуйте поля бази даних, які використовуються у фільтрах

404 Не знайдено

Симптоми:

  • Ендпоінт не знайдено
  • Конфігурацію не знайдено

Рішення:

  1. Перевірте, що назва ендпоінту відповідає конфігурації
  2. Перевірте формат URL: /bj_api_sync/v1/<endpoint_name>
  3. Переконайтеся, що конфігурація активна та збережена

Проблеми з даними

Проблеми мапування полів

Симптоми:

  • Поля не синхронізуються правильно
  • Невідповідність типів даних
  • Відсутні обов'язкові поля

Рішення:

  1. Валідація назв полів

    • Перевірте точні назви полів в моделі Odoo
    • Переконайтеся в назвах ключів зовнішнього API
    • Враховується регістр символів
  2. Перевірка типів даних

    # Приклад: Конвертація рядка у число з плаваючою комою
    amount = float(request_data.get('amount', 0))
  3. Обов'язкові поля

    • Переконайтеся, що всі обов'язкові поля Odoo мапуються
    • Позначте рівно одне поле як ідентифікатор запису

Помилки Python скриптів

Симптоми:

  • Виконання скрипта не вдається
  • Неочікувані трансформації даних

Рішення:

  1. Тестування скриптів незалежно

    # Тест в оболонці Odoo
    python odoo-bin shell
    >>> env = self.env
    >>> request_data = {'test': 'data'}
    >>> # Ваш скрипт тут
  2. Додавання обробки помилок

    try:
    result = complex_operation()
    except Exception as e:
    raise UserError(f'Помилка скрипта: {str(e)}')
  3. Використання логування

    import logging
    _logger = logging.getLogger(__name__)
    _logger.info(f'Обробка: {request_data}')

Проблеми продуктивності

Повільний час відповіді

Рішення:

  1. Оптимізація розміру пакету

    • Зменште розмір сторінки для складних операцій
    • За замовчуванням: 100, спробуйте 50 або 25
  2. Додавання індексів

    CREATE INDEX idx_partner_ref ON res_partner(ref);
  3. Використання ефективних фільтрів

    # Добре - специфічний фільтр
    [('active', '=', True), ('customer_rank', '>', 0)]

    # Погано - без фільтра
    []

Проблеми з пам'яттю

Рішення:

  1. Увімкнути пагінацію
  2. Обробляти записи пакетами
  3. Періодично очищати кеш

Проблеми з HTTP методами

405 Метод не дозволений

Симптоми:

  • Конкретний HTTP метод відхилено

Рішення:

  1. Увімкнути метод у конфігурації
  2. Для вихідного, вибрати рівно один метод
  3. Переконатися, що метод підтримується зовнішнім API

Логування та налагодження

Увімкнення логування налагодження

  1. У конфігурації Odoo

    [options]
    log_level = debug
    log_handler = bj.api:DEBUG
  2. Перевірка розташування логів

    tail -f /var/log/odoo/odoo.log
  3. Перегляд логів API

    • Перейдіть до: Налаштування > Технічні > BJ API > Логи
    • Фільтруйте за конфігурацією або датою
    • Перевірте деталі запиту та відповіді

Поширені коди помилок

КодОписПоширена причинаРішення
400Поганий запитНедійсний JSONВалідація формату JSON
401НеавторизованоНедійсні облікові даніПеревірка автентифікації
403ЗабороненоНемає дозволівПеревірка прав доступу користувача
404Не знайденоНеправильний ендпоінтПеревірка конфігурації
405Метод не дозволенийМетод не увімкненийУвімкнути в конфігурації
408Тайм-аут запитуПовільна відповідьЗбільшити тайм-аут
500Помилка сервераПомилка OdooПеревірка логів сервера

Найкращі практики для усунення несправностей

  1. Почніть просто

    • Тестуйте з мінімальною конфігурацією
    • Додавайте складність поступово
    • Переконуйтеся, що кожен крок працює
  2. Використовуйте тестові дані

    • Створюйте тестові записи
    • Використовуйте непродуктивне середовище
    • Зберігайте резервні копії
  3. Відстежуйте логи

    • Увімкніть логування налагодження під час налаштування
    • Перевіряйте як логи Odoo, так і зовнішнього API
    • Шукайте патерни в помилках
  4. Документуйте проблеми

    • Відстежуйте помилки та рішення
    • Записуйте зміни конфігурації
    • Діліться знаннями з командою

Отримання допомоги

Якщо ви продовжуєте стикатися з проблемами:

  1. Перевірте документацію

    • Переглядайте посібники з конфігурації
    • Перевірте довідник API
    • Читайте приклади Python скриптів
  2. Зберіть інформацію

    • Повідомлення про помилки та коди
    • Знімки екрану конфігурації
    • Витяги з логів
    • Кроки для відтворення
  3. Зв'яжіться з підтримкою

    • Email: support@bjetpro.com
    • Вкажіть версію Odoo та версію модуля
    • Надайте детальний опис проблеми

Контрольний список швидких виправлень

  • Облікові дані автентифікації правильні?
  • URL ендпоінту правильно відформатований?
  • HTTP метод увімкнений у конфігурації?
  • Обов'язкові поля мапуються?
  • Встановлено ідентифікатор запису?
  • Мережеве підключення працює?
  • Значення тайм-ауту достатні?
  • Користувач має відповідні дозволи?
  • Формат JSON дійсний?
  • Python скрипти протестовані?