Adds blog_post campaign type that publishes directly to the CircuitForge website via Directus CMS. Implements PostingStrategy ABC with: - supports_dupe_guard() → False (blog posts run on demand, no weekly guard) - execute() → wraps publish_blog_post() from directus.py - tags stored as JSON string in DB, decoded at post time Migration 017 adds slug, tags, seo_description columns to campaign_variants. Poster merges variant blog fields into extra dict before strategy execution. Seed script updated with blog campaign (id=9, target=blog/main). Registry updated; 6 new unit tests added. |
||
|---|---|---|
| .. | ||
| api | ||
| core | ||
| db | ||
| services | ||
| __init__.py | ||
| main.py | ||