186 lines
5.9 KiB
Markdown
186 lines
5.9 KiB
Markdown
# Phase 5 Implementation Summary
|
|
|
|
## Overview
|
|
Phase 5 implementation adds Planner, Linker, and Optimizer module hooks to the WordPress bridge plugin.
|
|
|
|
## Implemented Features
|
|
|
|
### 5.1 Planner Briefs Display & Refresh Actions ✅
|
|
|
|
**Files Created:**
|
|
- `admin/class-post-meta-boxes.php` - Meta boxes for post editor
|
|
- `admin/assets/js/post-editor.js` - JavaScript for AJAX interactions
|
|
|
|
**Features:**
|
|
- **Planner Brief Meta Box** in post editor sidebar
|
|
- Displays cached brief with title, content, outline, keywords, and tone
|
|
- Shows cache timestamp
|
|
- "Fetch Brief" button to load from IGNY8 API
|
|
- "Request Refresh" button to trigger Planner refresh
|
|
|
|
**API Endpoints Used:**
|
|
- `GET /planner/tasks/{id}/brief/` - Fetch Planner brief (with fallback to Writer brief)
|
|
- `POST /planner/tasks/{id}/refresh/` - Request Planner task refresh
|
|
|
|
**Meta Fields Added:**
|
|
- `_igny8_task_brief` - Cached brief data
|
|
- `_igny8_brief_cached_at` - Brief cache timestamp
|
|
|
|
**AJAX Handlers:**
|
|
- `igny8_fetch_planner_brief` - Fetches and caches brief
|
|
- `igny8_refresh_planner_task` - Requests Planner refresh
|
|
|
|
---
|
|
|
|
### 5.2 Link Graph Export ✅
|
|
|
|
**Files Created:**
|
|
- `data/link-graph.php` - Link graph extraction and export
|
|
|
|
**Features:**
|
|
- **Link Extraction** from post content
|
|
- Extracts all internal links (anchor tags)
|
|
- Captures source URL, target URL, and anchor text
|
|
- Filters to only internal links (same domain)
|
|
- Normalizes URLs for consistency
|
|
|
|
- **Link Graph Collection**
|
|
- Processes all enabled post types
|
|
- Extracts links from published posts
|
|
- Configurable batch processing (max 1000 posts per run)
|
|
|
|
- **Automatic Export During Site Scans**
|
|
- Integrated into `igny8_collect_site_data()`
|
|
- Included in site data payload
|
|
- Also sent separately to Linker module endpoint
|
|
|
|
**API Endpoints Used:**
|
|
- `POST /linker/link-map/` - Send link graph to Linker module
|
|
|
|
**Functions:**
|
|
- `igny8_extract_post_links($post_id)` - Extract links from single post
|
|
- `igny8_extract_link_graph($post_ids)` - Extract links from multiple posts
|
|
- `igny8_send_link_graph_to_igny8($site_id, $link_graph)` - Send to IGNY8 API
|
|
|
|
**Integration Points:**
|
|
- `igny8_collect_site_data()` - Includes link graph in site data
|
|
- `igny8_send_site_data_to_igny8()` - Sends link graph after site import
|
|
- `igny8_perform_full_site_scan()` - Sends link graph during full scans
|
|
|
|
**Options Stored:**
|
|
- `igny8_last_link_graph_sync` - Last sync timestamp
|
|
- `igny8_last_link_graph_count` - Number of links sent
|
|
|
|
---
|
|
|
|
### 5.4 Optimizer Triggers ✅
|
|
|
|
**Features:**
|
|
- **Optimizer Meta Box** in post editor sidebar
|
|
- Displays current optimizer job ID and status
|
|
- "Request Optimization" button to create new job
|
|
- "Check Status" button to fetch latest job status
|
|
- Shows score changes and recommendations when available
|
|
|
|
**API Endpoints Used:**
|
|
- `POST /optimizer/jobs/` - Create optimizer job
|
|
- `GET /optimizer/jobs/{id}/` - Get optimizer job status
|
|
|
|
**Meta Fields Added:**
|
|
- `_igny8_optimizer_job_id` - Optimizer job ID
|
|
- `_igny8_optimizer_status` - Job status (pending, processing, completed, failed)
|
|
- `_igny8_optimizer_score_changes` - Score changes from optimization
|
|
- `_igny8_optimizer_recommendations` - Optimization recommendations
|
|
- `_igny8_optimizer_job_created_at` - Job creation timestamp
|
|
|
|
**AJAX Handlers:**
|
|
- `igny8_create_optimizer_job` - Creates new optimizer job
|
|
- `igny8_get_optimizer_status` - Fetches job status and updates meta
|
|
|
|
**Job Parameters:**
|
|
- `post_id` - WordPress post ID
|
|
- `task_id` - IGNY8 task ID
|
|
- `job_type` - Type of job (default: 'audit')
|
|
- `priority` - Job priority (default: 'normal')
|
|
|
|
---
|
|
|
|
## Module Toggle Support
|
|
|
|
All Phase 5 features respect the module toggle settings:
|
|
- **Planner** module must be enabled for brief fetching/refresh
|
|
- **Linker** module must be enabled for link graph export
|
|
- **Optimizer** module must be enabled for optimizer jobs
|
|
|
|
Features also check `igny8_is_connection_enabled()` to ensure sync operations are active.
|
|
|
|
---
|
|
|
|
## UI/UX Features
|
|
|
|
### Post Editor Meta Boxes
|
|
- Clean, organized display in sidebar
|
|
- Real-time AJAX updates
|
|
- Success/error message display
|
|
- Auto-refresh after operations
|
|
- Disabled state when connection is off
|
|
|
|
### JavaScript Enhancements
|
|
- Loading states on buttons
|
|
- Confirmation dialogs for destructive actions
|
|
- Error handling and user feedback
|
|
- Non-blocking AJAX requests
|
|
|
|
---
|
|
|
|
## Integration with Existing Code
|
|
|
|
### Modified Files:
|
|
- `igny8-bridge.php` - Added meta boxes class loading
|
|
- `includes/functions.php` - Added optimizer meta field registrations
|
|
- `data/site-collection.php` - Integrated link graph extraction
|
|
|
|
### New Dependencies:
|
|
- None (uses existing Igny8API class)
|
|
|
|
---
|
|
|
|
## Testing Checklist
|
|
|
|
- [ ] Planner brief displays correctly in post editor
|
|
- [ ] Fetch brief button works and caches data
|
|
- [ ] Request refresh button triggers Planner refresh
|
|
- [ ] Link graph extraction works on posts with links
|
|
- [ ] Link graph is included in site scans
|
|
- [ ] Link graph is sent to Linker endpoint
|
|
- [ ] Optimizer job creation works
|
|
- [ ] Optimizer status check works
|
|
- [ ] All features respect module toggles
|
|
- [ ] All features respect connection enabled toggle
|
|
- [ ] Meta boxes only show for posts with task IDs
|
|
- [ ] Error handling works correctly
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
1. **Link Graph Processing**: Currently limited to 1000 posts per run to prevent timeouts. Can be increased or made configurable.
|
|
|
|
2. **Brief Caching**: Briefs are cached in post meta to reduce API calls. Cache can be refreshed manually.
|
|
|
|
3. **Optimizer Jobs**: Jobs are created asynchronously. Status must be checked manually or via webhook (Phase 6).
|
|
|
|
4. **Module Dependencies**: All features check module enablement before executing.
|
|
|
|
5. **Connection Toggle**: All features respect the master connection toggle added earlier.
|
|
|
|
---
|
|
|
|
## Next Steps (Phase 6)
|
|
|
|
Phase 5.3 (Accept link recommendations via webhook) is deferred to Phase 6, which will implement:
|
|
- REST endpoint `/wp-json/igny8/v1/event` with shared secret
|
|
- Webhook handler for link recommendations
|
|
- Link insertion queue system
|
|
|