From 6c69ca3feb4402407465b05331a087f9fc057aaf Mon Sep 17 00:00:00 2001 From: "IGNY8 VPS (Salman)" Date: Sun, 18 Jan 2026 15:18:25 +0000 Subject: [PATCH] Version 1.8.1 --- CHANGELOG.md | 184 +++++++++++++++++++- docs/10-MODULES/AUTOMATION.md | 78 ++++++++- docs/20-API/ENDPOINTS.md | 43 ++++- docs/INDEX.md | 7 +- docs/plans/LAUNCH-VERIFICATION-CHECKLIST.md | 5 +- 5 files changed, 302 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74dad985..c990298e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # IGNY8 Change Log -**Current Version:** 1.8.0 -**Last Updated:** January 17, 2026 +**Current Version:** 1.8.1 +**Last Updated:** January 18, 2026 --- @@ -9,6 +9,7 @@ | Version | Date | Summary | |---------|------|---------| +| 1.8.1 | Jan 18, 2026 | **Automation Scheduling Overhaul** - Hourly scheduling (replaces 15-min windows), DefaultAutomationConfig singleton for centralized defaults, test mode for admin testing, Reset button fetches from backend, new migrations 0009-0012 | | 1.8.0 | Jan 17, 2026 | **Major** - Unified Settings Consolidation: AI & Automation settings merged into Site Settings > Automation tab; Navigation Refactor Complete; Automation Overview & Run Detail pages; Publishing & Scheduling UX improvements; Skip Stage configuration; Content Calendar fixes | | 1.7.6 | Jan 15, 2026 | **Navigation Refactor Complete** - Complete sidebar restructure, new Automation Overview page, Publish Settings page, Content Calendar improvements | | 1.7.5 | Jan 14, 2026 | **Automation Overview** - New dashboard for automation runs, detailed run history, real-time progress tracking | @@ -47,6 +48,185 @@ --- +## v1.8.1 - January 18, 2026 + +### Automation Scheduling Overhaul & Centralized Default Settings + +This release introduces a complete overhaul of the automation scheduling system, moving from 15-minute window checking to hourly scheduling. It also introduces the `DefaultAutomationConfig` singleton model for centralized default settings management, test mode functionality for admins, and backend-driven reset functionality for the frontend. + +--- + +### โฐ Hourly Scheduling System + +**Previous Behavior (v1.8.0):** +- Celery checked every 15 minutes for automations within a 15-minute window +- Complex time window calculations prone to edge cases + +**New Behavior (v1.8.1):** +- Celery checks **every hour at `:05`** (`crontab(minute=5)`) +- Simple hour matching: `scheduled_hour == current_hour` +- Users select hour only (12-hour AM/PM format in UI, stored as 24-hour `HH:00`) + +**Celery Beat Schedule:** +| Task | Schedule | Purpose | +|------|----------|---------| +| `check_scheduled_automations` | Every hour at `:05` | Check if automations should run | +| `check_test_triggers` | Every minute | Check for admin test triggers | +| `schedule_approved_content` | Every hour at `:00` | Schedule approved content | +| `process_scheduled_publications` | Every 5 minutes | Publish scheduled content | + +--- + +### ๐Ÿ”ง DefaultAutomationConfig Model + +**New Singleton Model** (`backend/igny8_core/business/automation/models.py`): + +A centralized configuration model for all default automation settings: + +**Scheduling Defaults:** +- `is_enabled`, `frequency` (daily/weekly/monthly) +- `base_scheduled_hour`, `next_scheduled_hour` (auto-increment for new sites) + +**Stage Defaults (per stage 1-7):** +- `stage_X_enabled` - Enable/disable individual stages +- `stage_X_batch_size` - Items per batch +- `stage_X_use_testing` - Use test AI model (AI stages only) +- `stage_X_budget_pct` - Credit budget percentage (AI stages only) + +**Per-Run Limits:** +- `max_keywords_per_run`, `max_clusters_per_run`, etc. +- `max_credits_per_run` + +**Publishing Defaults:** +- `auto_approval_enabled`, `auto_publish_enabled` +- `daily_publish_limit`, `weekly_publish_limit`, `monthly_publish_limit` +- `publish_days` (JSONField - e.g., `['mon', 'tue', 'wed', 'thu', 'fri']`) +- `publish_time_slots` (JSONField - e.g., `['09:00', '14:00', '18:00']`) + +**Image Defaults:** +- `image_style` (default: 'photorealistic') +- `max_images_per_article` (default: 4) + +--- + +### ๐Ÿงช Test Mode (Admin Feature) + +New fields on `AutomationConfig` for admin testing: + +- `test_mode_enabled` - Enable test functionality for a config +- `test_trigger_at` - When to trigger (set to `now` for immediate) + +**How It Works:** +1. Admin enables test mode and sets trigger time +2. `check_test_triggers` task runs every minute +3. When `test_trigger_at <= now`, automation starts with `trigger_type='test'` +4. Bypasses 23-hour blocking and schedule requirements + +**Admin Actions:** +- ๐Ÿงช **Trigger test run** - Sets test mode and immediate trigger +- ๐Ÿงน **Clear test mode** - Disables and clears trigger + +--- + +### ๐Ÿ”„ Reset Button Backend Integration + +**New API Endpoint:** `GET /api/v1/integration/settings/defaults/` + +Frontend reset button now fetches defaults from backend instead of using hardcoded values: + +**Response Format:** +```json +{ + "automation": { + "enabled": false, + "frequency": "daily", + "time": "02:00" + }, + "stages": [ + {"number": 1, "enabled": true, "batch_size": 50, "per_run_limit": 0, "use_testing": false, "budget_pct": 15}, + ... + ], + "delays": { + "within_stage": 3, + "between_stage": 5 + }, + "publishing": { + "auto_approval_enabled": false, + "auto_publish_enabled": false, + "daily_publish_limit": 3, + "weekly_publish_limit": 15, + "monthly_publish_limit": 50, + "publish_days": ["mon", "tue", "wed", "thu", "fri"], + "time_slots": ["09:00", "14:00", "18:00"] + }, + "images": { + "style": "photorealistic", + "max_images": 4 + } +} +``` + +**Note:** Image settings are NOT reset by the reset button - they come from a separate global system (`/api/v1/account/settings/ai/`). + +--- + +### ๐Ÿ—„๏ธ Database Migrations + +| Migration | Description | +|-----------|-------------| +| `0009_add_stage_use_testing_and_budget_pct.py` | Adds `use_testing` and `budget_pct` fields per AI stage | +| `0010_add_test_mode_fields.py` | Adds `test_mode_enabled` and `test_trigger_at` fields | +| `0011_add_default_automation_config.py` | Creates `DefaultAutomationConfig` singleton model | +| `0012_add_publishing_image_defaults.py` | Adds publishing and image default fields to `DefaultAutomationConfig` | + +--- + +### ๐Ÿ–ฅ๏ธ Admin Interface + +**DefaultAutomationConfig Admin:** +- New admin page for managing centralized defaults +- Organized fieldsets: Scheduling, Stage Toggles, Batch Sizes, Testing Models, Budget Allocation, Per-Run Limits, Delays, Publishing, Images + +**AutomationConfig Admin:** +- New Test Mode actions: "๐Ÿงช Trigger test run", "๐Ÿงน Clear test mode" +- Display of test mode status in list view + +--- + +### ๐ŸŽจ Frontend Fixes + +**AIAutomationSettings Component:** +- Reset button fetches from `/api/v1/integration/settings/defaults/` +- Fixed Run Time dropdown layout (was bleeding outside card) +- Uses `grid grid-cols-2 gap-2` with wrapped dropdowns +- Toast message clarifies which settings are reset + +**Dropdown Fixes:** +- Fixed `SelectDropdown` width issues in Run Time selection +- Hour and AM/PM dropdowns no longer overlap or bleed + +--- + +### ๐Ÿ“š Documentation + +**New Documentation:** +- [AUTOMATION-AND-PUBLISHING-SCHEDULING.md](docs/40-WORKFLOWS/AUTOMATION-AND-PUBLISHING-SCHEDULING.md) - Comprehensive guide to the scheduling system + +**Reorganized:** +- Moved `AUTOMATION-ENHANCEMENT-PLAN.md` to `docs/plans/automation/` +- Moved `FINAL-PRELAUNCH-*.md` to `docs/plans/implemented/` + +--- + +### ๐Ÿ› Bug Fixes + +- Fixed 404 on `/v1/settings/defaults/` (correct path: `/v1/integration/settings/defaults/`) +- Fixed "Cannot read properties of undefined (reading 'automation')" error in reset handling +- Fixed SelectDropdown bleeding outside card boundaries +- Fixed dropdown portals not opening when `overflow-hidden` was applied + +--- + ## v1.8.0 - January 17, 2026 ### Unified Settings Consolidation & Navigation Refactor Complete diff --git a/docs/10-MODULES/AUTOMATION.md b/docs/10-MODULES/AUTOMATION.md index aa837dbd..4a9c9cba 100644 --- a/docs/10-MODULES/AUTOMATION.md +++ b/docs/10-MODULES/AUTOMATION.md @@ -1,7 +1,7 @@ # Automation Module -**Last Verified:** January 17, 2026 -**Version:** 1.8.0 +**Last Verified:** January 18, 2026 +**Version:** 1.8.1 **Status:** โœ… Active **Backend Path:** `backend/igny8_core/business/automation/` **Frontend Path:** `frontend/src/pages/Automation/` @@ -12,18 +12,20 @@ | What | File | Key Items | |------|------|-----------| -| Models | `business/automation/models.py` | `AutomationConfig`, `AutomationRun` | +| Models | `business/automation/models.py` | `AutomationConfig`, `AutomationRun`, `DefaultAutomationConfig` | | Service | `business/automation/services/automation_service.py` | `AutomationService` | | Logger | `business/automation/services/automation_logger.py` | `AutomationLogger` | -| Celery Tasks | `business/automation/tasks.py` | `run_automation_task`, `check_scheduled_automations` | +| Celery Tasks | `business/automation/tasks.py` | `run_automation_task`, `check_scheduled_automations`, `check_test_triggers` | | Publishing Tasks | `igny8_core/tasks/publishing_scheduler.py` | Scheduled publishing | -| **Unified Settings** | `modules/integration/views/unified_settings.py` | **v1.8.0** Consolidated settings API | +| **Unified Settings** | `api/unified_settings.py` | **v1.8.0** Consolidated settings API | +| **Default Settings API** | `api/unified_settings.py` | **v1.8.1** `DefaultSettingsAPIView` for reset | | Frontend Overview | `pages/Automation/AutomationOverview.tsx` | **v1.8.0** Run history dashboard | | Frontend Run Detail | `pages/Automation/AutomationRunDetail.tsx` | **v1.8.0** Detailed run view | | Frontend Manual Run | `pages/Automation/AutomationPage.tsx` | Manual run UI | | **Site Settings** | `pages/Sites/AIAutomationSettings.tsx` | **v1.8.0** Unified settings UI | | Progress Bar | `components/Automation/GlobalProgressBar.tsx` | Full pipeline progress | | Processing Card | `components/Automation/CurrentProcessingCard.tsx` | Real-time progress | +| **Scheduling Doc** | `docs/40-WORKFLOWS/AUTOMATION-AND-PUBLISHING-SCHEDULING.md` | **v1.8.1** Complete scheduling guide | --- @@ -35,7 +37,26 @@ The Automation module runs the complete 7-stage content pipeline automatically: Keywords โ†’ Clusters โ†’ Ideas โ†’ Tasks โ†’ Content โ†’ Image Prompts โ†’ Images โ†’ Published ``` -**Settings Location (v1.8.0):** Site Settings โ†’ Automation tab +**Settings Location (v1.8.0+):** Site Settings โ†’ Automation tab + +--- + +## Scheduling (v1.8.1) + +| Task | Schedule | Purpose | +|------|----------|---------| +| `check_scheduled_automations` | Every hour at `:05` | Check if automations should run | +| `check_test_triggers` | Every minute | Check for admin test triggers | + +**How it works:** +- Users select hour (12-hour AM/PM format), stored as `HH:00` (24-hour) +- Celery compares `scheduled_hour == current_hour` +- 23-hour block prevents re-runs within same day + +**Test Mode (Admin):** +- `test_mode_enabled` + `test_trigger_at` fields on `AutomationConfig` +- Allows immediate triggering without waiting for schedule +- Bypasses 23-hour blocking --- @@ -79,6 +100,8 @@ Keywords โ†’ Clusters โ†’ Ideas โ†’ Tasks โ†’ Content โ†’ Image Prompts โ†’ Imag | **stage_5_enabled** | Boolean | **v1.8.0** Enable stage 5 | | **stage_6_enabled** | Boolean | **v1.8.0** Enable stage 6 | | **stage_7_enabled** | Boolean | **v1.8.0** Enable stage 7 | +| **stage_X_use_testing** | Boolean | **v1.8.1** Use testing model (AI stages 1,2,4,5,6) | +| **stage_X_budget_pct** | Integer | **v1.8.1** Credit budget % (AI stages) | | **max_keywords_per_run** | Integer | **v1.8.0** Per-run limit stage 1 | | **max_clusters_per_run** | Integer | **v1.8.0** Per-run limit stage 2 | | **max_ideas_per_run** | Integer | **v1.8.0** Per-run limit stage 3 | @@ -89,6 +112,27 @@ Keywords โ†’ Clusters โ†’ Ideas โ†’ Tasks โ†’ Content โ†’ Image Prompts โ†’ Imag | between_stage_delay | Integer | Seconds between stages | | last_run_at | DateTime | Last execution | | next_run_at | DateTime | Next scheduled run | +| **test_mode_enabled** | Boolean | **v1.8.1** Enable test mode for admin | +| **test_trigger_at** | DateTime | **v1.8.1** When to trigger test run | + +### DefaultAutomationConfig (v1.8.1) + +Singleton model for centralized default settings. See [AUTOMATION-AND-PUBLISHING-SCHEDULING.md](../40-WORKFLOWS/AUTOMATION-AND-PUBLISHING-SCHEDULING.md) for full schema. + +| Field | Type | Purpose | +|-------|------|---------| +| is_enabled | Boolean | Default: Enable scheduled automation | +| frequency | CharField | Default frequency (daily/weekly/monthly) | +| next_scheduled_hour | Integer | Next hour to assign (auto-increments) | +| stage_X_enabled | Boolean | Default: Enable each stage | +| stage_X_batch_size | Integer | Default: Batch size per stage | +| stage_X_use_testing | Boolean | Default: Use testing model | +| stage_X_budget_pct | Integer | Default: Credit budget % | +| max_X_per_run | Integer | Default: Per-run limits | +| auto_approval_enabled | Boolean | Default: Auto-approve content | +| auto_publish_enabled | Boolean | Default: Auto-publish content | +| publish_days | JSONField | Default: Days to publish | +| publish_time_slots | JSONField | Default: Time slots to publish | ### AutomationRun @@ -133,9 +177,31 @@ Keywords โ†’ Clusters โ†’ Ideas โ†’ Tasks โ†’ Content โ†’ Image Prompts โ†’ Imag | GET | `/api/v1/automation/history/` | Get history | Last 20 runs | | GET | `/api/v1/automation/logs/` | Get logs | Activity log for run | | GET | `/api/v1/automation/estimate/` | Get estimate | Credit estimate | +| **GET** | `/api/v1/integration/settings/defaults/` | **v1.8.1** | Get default settings for reset | **Query Parameters:** All require `?site_id=`, run-specific require `?run_id=` +### Default Settings Endpoint (v1.8.1) + +Returns centralized defaults from `DefaultAutomationConfig`: +```json +{ + "automation": { "enabled": false, "frequency": "daily", "time": "02:00" }, + "stages": [ + { "number": 1, "enabled": true, "batch_size": 50, "per_run_limit": 0, "use_testing": false, "budget_pct": 15 }, + ... + ], + "delays": { "within_stage": 3, "between_stage": 5 }, + "publishing": { + "auto_approval_enabled": false, + "auto_publish_enabled": false, + "daily_publish_limit": 3, + "publish_days": ["mon", "tue", "wed", "thu", "fri"], + "time_slots": ["09:00", "14:00", "18:00"] + } +} +``` + ### run_progress Endpoint (v1.3.0) Returns unified progress data for frontend: diff --git a/docs/20-API/ENDPOINTS.md b/docs/20-API/ENDPOINTS.md index 79ff5457..c8758c85 100644 --- a/docs/20-API/ENDPOINTS.md +++ b/docs/20-API/ENDPOINTS.md @@ -1,7 +1,7 @@ # API Endpoints Reference -**Last Verified:** January 17, 2026 -**Version:** 1.8.0 +**Last Verified:** January 18, 2026 +**Version:** 1.8.1 **Base URL:** `/api/v1/` **Documentation:** `/api/docs/` (Swagger) | `/api/redoc/` (ReDoc) @@ -155,6 +155,45 @@ POST /api/v1/writer/content/{id}/schedule/ |--------|------|---------|---------| | GET | `/sites/{site_id}/unified-settings/` | `UnifiedSiteSettingsViewSet.retrieve` | Get all site settings (automation, publishing, AI) | | PATCH | `/sites/{site_id}/unified-settings/` | `UnifiedSiteSettingsViewSet.partial_update` | Update settings (partial) | +| **GET** | `/settings/defaults/` | **v1.8.1** `DefaultSettingsAPIView` | Get default settings for reset functionality | + +### Default Settings Endpoint (v1.8.1) + +Returns centralized defaults from `DefaultAutomationConfig` singleton: + +```json +GET /api/v1/integration/settings/defaults/ + +{ + "automation": { + "enabled": false, + "frequency": "daily", + "time": "02:00" + }, + "stages": [ + {"number": 1, "enabled": true, "batch_size": 50, "per_run_limit": 0, "use_testing": false, "budget_pct": 15}, + {"number": 2, "enabled": true, "batch_size": 1, "per_run_limit": 0, "use_testing": false, "budget_pct": 10}, + // ... stages 3-7 + ], + "delays": { + "within_stage": 3, + "between_stage": 5 + }, + "publishing": { + "auto_approval_enabled": false, + "auto_publish_enabled": false, + "daily_publish_limit": 3, + "weekly_publish_limit": 15, + "monthly_publish_limit": 50, + "publish_days": ["mon", "tue", "wed", "thu", "fri"], + "time_slots": ["09:00", "14:00", "18:00"] + }, + "images": { + "style": "photorealistic", + "max_images": 4 + } +} +``` **Unified Settings Response:** ```json diff --git a/docs/INDEX.md b/docs/INDEX.md index 8348d17e..5b9e6117 100644 --- a/docs/INDEX.md +++ b/docs/INDEX.md @@ -1,7 +1,7 @@ # IGNY8 Technical Documentation -**Version:** 1.8.0 -**Last Updated:** January 17, 2026 +**Version:** 1.8.1 +**Last Updated:** January 18, 2026 **Purpose:** Complete technical reference for the IGNY8 AI content platform --- @@ -19,11 +19,12 @@ | **Read design guide** | [30-FRONTEND/DESIGN-GUIDE.md](30-FRONTEND/DESIGN-GUIDE.md) | | Understand frontend structure | [30-FRONTEND/PAGES.md](30-FRONTEND/PAGES.md) | | Trace a workflow end-to-end | [40-WORKFLOWS/](#workflows) | +| **Automation & Publishing Scheduling** | [40-WORKFLOWS/AUTOMATION-AND-PUBLISHING-SCHEDULING.md](40-WORKFLOWS/AUTOMATION-AND-PUBLISHING-SCHEDULING.md) | | **Manage WordPress plugin** | [60-PLUGINS/WORDPRESS-INTEGRATION.md](60-PLUGINS/WORDPRESS-INTEGRATION.md) | | **Release plugin update** | [60-PLUGINS/PLUGIN-UPDATE-WORKFLOW.md](60-PLUGINS/PLUGIN-UPDATE-WORKFLOW.md) | | Look up model fields | [90-REFERENCE/MODELS.md](90-REFERENCE/MODELS.md) | | **Payment system (Stripe/PayPal/Bank)** | [90-REFERENCE/PAYMENT-SYSTEM.md](90-REFERENCE/PAYMENT-SYSTEM.md) | -| See prelaunch checklist | [plans/FINAL-PRELAUNCH.md](plans/FINAL-PRELAUNCH.md) | +| See prelaunch checklist | [plans/LAUNCH-VERIFICATION-CHECKLIST.md](plans/LAUNCH-VERIFICATION-CHECKLIST.md) | | **Understand publishing flow** | [50-DEPLOYMENT/WORDPRESS-INTEGRATION-FLOW.md](50-DEPLOYMENT/WORDPRESS-INTEGRATION-FLOW.md) | | **AI model architecture (v1.4.0)** | [plans/4th-jan-refactor/final-model-schemas.md](plans/4th-jan-refactor/final-model-schemas.md) | diff --git a/docs/plans/LAUNCH-VERIFICATION-CHECKLIST.md b/docs/plans/LAUNCH-VERIFICATION-CHECKLIST.md index 27042293..9a535233 100644 --- a/docs/plans/LAUNCH-VERIFICATION-CHECKLIST.md +++ b/docs/plans/LAUNCH-VERIFICATION-CHECKLIST.md @@ -1,7 +1,8 @@ -# IGNY8 v1.8.0 Launch Verification Checklist +# IGNY8 v1.8.1 Launch Verification Checklist -**Version:** 1.8.0 +**Version:** 1.8.1 **Created:** January 17, 2026 +**Updated:** January 18, 2026 **Purpose:** Final end-to-end verification before production launch ---