mirror of
https://gitlab.com/itsulu-odoo/itsulu-blog-publisher.git
synced 2026-05-30 23:41:23 +00:00
Squash-merge of fix/ci-pipeline-corrections. Drives the full test suite
to 69/69 green on the ITSulu K8s cluster and fixes two production bugs.
Production fixes:
- Email template migrated from dead Odoo Mako (${}/% for) to Odoo 17
inline_template ({{ }}) + qweb body (type="html", t-out/t-foreach/t-if).
Notification emails previously rendered raw code in the subject/body.
- _create_blog_post now writes 'content': llm_response.body_html — every
auto-generated post was publishing empty.
- Removed duplicate itsulu_social_id field (startup warning).
Testing & infra:
- CI pipeline corrected (stage order, DB auth, junit artifact, addons path).
- E2E moved to ephemeral jobs in the itsulu-testing K8s namespace.
- Test code brought up to Odoo 17 (mail rendering, blog.post.content,
pytest-bdd env fixture, _render_field).
Versioning:
- Introduce MAJOR.MINOR.PATCH scheme, VERSION file, scripts/bump-version.sh,
CHANGELOG.md; first release v0.4.8. CLAUDE.md §15 documents the process.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
64 lines
2.5 KiB
Python
64 lines
2.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
{
|
|
'name': 'ITSulu Blog Publisher',
|
|
# Odoo manifest version = <odoo_series>.<product_version>. Product version
|
|
# is tracked in the repo-root VERSION file (currently 0.4.8). See CLAUDE.md §15.
|
|
'version': '17.0.0.4.8',
|
|
'summary': 'AI-powered blog post generation with multi-LLM support, scheduling, and social media copy',
|
|
'description': """
|
|
ITSulu Blog Publisher
|
|
=====================
|
|
Replaces the CoWork/Windows VM blog pipeline with a fully server-side Odoo addon.
|
|
|
|
Features
|
|
--------
|
|
* On-demand blog generation via backend button or website toolbar
|
|
* Three configurable daily schedule slots (morning / afternoon / evening)
|
|
* Multi-LLM provider support: Anthropic Claude, OpenAI, Google Gemini, Ollama / Open WebUI
|
|
* Independent image generation provider (DALL·E, etc.)
|
|
* Single structured-JSON LLM call per post — lowest possible token usage
|
|
* Auto-populates all SEO fields (meta title, description, keywords, tags)
|
|
* Per-schedule / per-run social media platform enable/disable
|
|
(X/Twitter A+B, BlueSky A+B, Fediverse/Mastodon, LinkedIn)
|
|
* Notification email with social copy ready to paste — matches ITSulu Insights template
|
|
* Topic queue from ITSulu/company services — priority-ordered
|
|
* Editable system prompt and user prompt templates
|
|
* Full generation log with token usage, duration, error messages, and Retry button
|
|
* Supports Anthropic Pro user account API tokens (claude.ai/api)
|
|
""",
|
|
'author': 'ITSulu',
|
|
'website': 'https://itsulu.com',
|
|
'category': 'Website/Blog',
|
|
'license': 'LGPL-3',
|
|
'depends': [
|
|
'base',
|
|
'base_setup',
|
|
'mail',
|
|
'website',
|
|
'website_blog',
|
|
],
|
|
'data': [
|
|
'security/ir.model.access.csv',
|
|
'data/mail_template_data.xml',
|
|
'data/ir_cron_data.xml',
|
|
'views/generate_now_wizard_views.xml',
|
|
'views/blog_topic_views.xml',
|
|
'views/blog_schedule_views.xml',
|
|
'views/blog_generation_log_views.xml',
|
|
'views/blog_post_social_views.xml',
|
|
# 'views/website_blog_publisher_templates.xml', # TODO: Fix RELAXNG validation for Odoo 17 template syntax
|
|
'views/menu_views.xml',
|
|
],
|
|
'assets': {
|
|
'web.assets_backend': [
|
|
'itsulu_blog_publisher/static/src/css/blog_publisher.css',
|
|
],
|
|
'website.assets_frontend': [
|
|
'itsulu_blog_publisher/static/src/css/website_blog_publisher.css',
|
|
],
|
|
},
|
|
'installable': True,
|
|
'application': True,
|
|
'auto_install': False,
|
|
'images': ['static/description/banner.png'],
|
|
}
|