У цій статті ми розглянемо користувацькі модулі, живий чат та публікації в блозі в headless-режимі через REST API. Для фронтенду ми використаємо додаток Next.js.
Docker через успадкування образу
Замість того, щоб створювати середовище виконання Odoo з нуля, наш Dockerfile успадковує з офіційного образу з FROM odoo:19.0. Це дає нам повний, протестований стек Odoo 19 (залежності Python, сервер, точка входу) безкоштовно, і ми лише накладаємо свої зміни поверх.
Налаштування є мінімальним і явним:
- переключитися на root, щоб створити /mnt/extra-addons і передати право власності користувачу Odoo;
- СКОПІЮВАТИ наші користувацькі модулі (website_blog_api, livechat_api) у цю папку, щоб образ був самодостатнім і працював навіть без монтування прив'язки;
- Повернутися до непривілейованого користувача Odoo та відкрити порти 8069 / 8072.
docker-compose.yml об'єднує це: служба postgres:16 з перевіркою стану та служба Odoo, яка чекає, поки база даних стане робочою. Для розробки папка ./addons на хості монтується на /mnt/extra-addons (:rw), тому зміни в коді відстежуються в реальному часі без повторного створення образу. Іменовані томи зберігаються в базі даних та файловому сховищі Odoo.
Результат - це чиста двошарова модель: базовий образ залишається стандартним і оновлювальним, тоді як наші модулі існують у тонкому шарі зверху — та ж ідея успадкування, яку Odoo сам використовує для модулів.
Модулі
website_blog_api— публічний, доступний лише для читання REST API для website_blog. Він надає блоги, пости та теги у форматі JSON, готові для хедлесс фронтендів (Next.js, Nuxt, мобільні).
livechat_api— хедлесс REST міст через im_livechat, щоб вебсайт міг спілкуватися з оператором без вбудованого віджета Odoo (почати/продовжити сесію, надсилати та опитувати повідомлення, закрити). Вхідні повідомлення відповідаються синхронно агентом з продажу на базі OpenAI. Агент з продажу AI публікуючи як спеціалізований бот-користувач; він автоматично вимикається при передачі людині і налаштовується через системні параметри.
Дивіться вихідний код:https://github.com/StackThrower/Live-Chat-and-Blog-Headless-Odoo