Посібник з усунення несправностей
Поширені проблеми та рішення для модуля синхронізації API BJET.
Проблеми автентифікації
Помилка 401 Неавторизовано
Симптоми:
- API повертає код статусу 401
- Повідомлення "Автентифікація не вдалася"
Рішення:
-
Перевірка облікових даних
- Перевірте ім'я користувача та пароль для базової автентифікації
- Підтвердьте, що Bearer Token дійсний та не прострочений
- Переконайтеся, що облікові дані відповідають налаштованим в Odoo
-
Перевірка формату заголовків
# Базова автентифікація - Правильний формат
Authorization: Basic dXNlcjpwYXNz
# Bearer Token - Правильний формат
Authorization: Bearer your_token_here -
Перевірка конфігурації
- Переконайтеся, що тип автентифікації встановлений правильно в конфігурації API
- Перевірте, що користувач має відповідні дозволи в Odoo
Закінчення терміну дії токена
Рішення: Згенеруйте новий токен або реалізуйте логіку оновлення токена у вашій програмі.
Проблеми з'єднання
Помилки тайм-ауту
Симптоми:
- 408 Тайм-аут запиту
- Перевищено тайм-аут з'єднання
Рішення:
-
Збільшення значень тайм-ауту
Connection Timeout: 10 # Збільшити з стандартних 5
Read Timeout: 30 # Збільшити з стандартних 15 -
Перевірка підключення до мережі
- Перевірте, що правила брандмауера дозволяють з'єднання
- Протестуйте підключення за допомогою ping або curl
- Перевірте налаштування проксі, якщо застосовно
-
Оптимізація продуктивності запитів
- Додайте фільтри домену для зменшення даних
- Використовуйте пагінацію для великих наборів даних
- Індексуйте поля бази даних, які використовуються у фільтрах
404 Не знайдено
Симптоми:
- Ендпоінт не знайдено
- Конфігурацію не знайдено
Рішення:
- Перевірте, що назва ендпоінту відповідає конфігурації
- Перевірте формат URL:
/bj_api_sync/v1/<endpoint_name> - Переконайтеся, що конфігурація активна та збережена
Проблеми з даними
Проблеми мапування полів
Симптоми:
- Поля не синхронізуються пр авильно
- Невідповідність типів даних
- Відсутні обов'язкові поля
Рішення:
-
Валідація назв полів
- Перевірте точні назви полів в моделі Odoo
- Переконайтеся в назвах ключів зовнішнього API
- Враховується регістр символів
-
Перевірка типів даних
# Приклад: Конвертація рядка у число з плаваючою комою
amount = float(request_data.get('amount', 0)) -
Обов'язкові поля
- Переконайтеся, що всі обов'язкові поля Odoo мапуються
- Позначте рівно одне поле як ідентифікатор запису
Помилки Python скриптів
Симптоми:
- Виконання скрипта не вдається
- Неочікувані трансформації даних
Рішення:
-
Тестування скриптів незалежно
# Тест в оболонці Odoo
python odoo-bin shell
>>> env = self.env
>>> request_data = {'test': 'data'}
>>> # Ваш скрипт тут -
Додавання обробки помилок
try:
result = complex_operation()
except Exception as e:
raise UserError(f'Помилка скрипта: {str(e)}') -
Використання логування
import logging
_logger = logging.getLogger(__name__)
_logger.info(f'Обробка: {request_data}')
Проблеми продуктивності
Повільний час відповіді
Рішення:
-
Оптимізація розміру пакету
- Зменште розмір сторінки для складних операцій
- За замовчуванням: 100, спробуйте 50 або 25
-
Додавання індексів
CREATE INDEX idx_partner_ref ON res_partner(ref); -
Використання ефективних фільтрів
# Добре - специфічний фільтр
[('active', '=', True), ('customer_rank', '>', 0)]
# Погано - без фільтра
[]
Проблеми з пам'яттю
Рішення:
- Увімкнути пагінацію
- Обробляти записи пакетами
- Періодично очищати кеш
Проблеми з HTTP методами
405 Метод не дозволений
Симптоми:
- Конкретний HTTP метод відхилено
Рішення:
- Увімкнути метод у конфігурації
- Для вихідного, вибрати рівно один метод
- Переконатися, що метод підтримується зовнішнім API
Логування та налагодження
Увімкнення логування налагодження
-
У конфігурації Odoo
[options]
log_level = debug
log_handler = bj.api:DEBUG -
Перевірка розташування логів
tail -f /var/log/odoo/odoo.log -
Перегляд логів API
- Перейдіть до: Налаштування > Технічні > BJ API > Логи
- Фільтруйте за конфігурацією або датою
- Перевірте деталі запиту та відповіді
Поширені коди помилок
| Код | Опис | Поширена причина | Рішення |
|---|---|---|---|
| 400 | Поганий запит | Недійсний JSON | Валідація формату JSON |
| 401 | Неавторизовано | Недійсні облікові дані | Перевірка автентифікації |
| 403 | Заборонено | Немає дозволів | Перевірка прав доступу користувача |
| 404 | Не знайдено | Неправильний ендпоінт | Перевірка конфігурації |
| 405 | Метод не дозволений | Метод не увімкнений | Увімкнути в конфігурації |
| 408 | Тайм-аут запиту | Повільна відповідь | Збільшити тайм-аут |
| 500 | Помилка сервера | Помилка Odoo | Перевірка логів сервера |
Найкращі практики для усунення несправностей
-
Почніть просто
- Тестуйте з мінімальною конфігурацією
- Додавайте складність поступово
- Переконуйтеся, що кожен крок працює
-
Використовуйте тестові дані
- Створюйте тестові записи
- Використовуйте непродуктивне середовище
- Зберігайте резервні копії
-
Відстежуйте логи
- Увімкніть логування налагодження під час налаштування
- Перевіряйте як логи Odoo, так і зовнішнього API
- Шукайте патерни в помилках
-
Документуйте проблеми
- Відстежуйте помилки та рішення
- Записуйте зміни конфігурації
- Діліться знаннями з командою
Отримання допомоги
Якщо ви продовжуєте стикатися з проблемами:
-
Перевірте документацію
- Переглядайте посібники з конфігурації
- Перевірте довідник API
- Читайте приклади Python скриптів
-
Зберіть інформацію
- Повідомлення про помилки та коди
- Знімки екрану конфігурації
- Витяги з логів
- Кроки для відтворення
-
Зв'яжіться з підтримкою
- Email: support@bjetpro.com
- Вкажіть версію Odoo та версію модуля
- Надайте детальний опис проблеми
Контрольний список швидких виправлень
- Облікові дані автентифікації правильні?
- URL ендпоінту правильно відформатований?
- HTTP метод увімкнений у конфігурації?
- Обов'язкові поля мапуються?
- Встановлено ідентифікатор запису?
- Мережеве підключення працює?
- Значення тайм-ауту достатні?
- Користувач має відповідні дозволи?
- Формат JSON дійсний?
- Python скрипти протестовані?