refactor(llm): split 694-line LLM class into 4 focused files

The monolithic Peptide_News_LLM class mixed HTTP transport, prompt
construction, batch orchestration, and AJAX handling. Split into:

- class-peptide-news-llm-client.php (199 lines) — OpenRouter HTTP
  transport with retry logic and response parsing
- class-peptide-news-llm-prompt-builder.php (142 lines) — keyword
  and summary prompt construction, article text fetching
- class-peptide-news-llm-ajax.php (87 lines) — bulk-generate AJAX
  handler
- class-peptide-news-llm.php (300 lines) — orchestrator with
  backward-compatible proxies for is_valid_model(), call_openrouter(),
  and call_openrouter_with_usage()

Extracted run_llm_task() helper to deduplicate the keyword/summary
processing blocks. All public API preserved — no test changes needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
peptiderepo
2026-04-16 22:22:45 +07:00
parent 19fea30932
commit 69cb00063f
6 changed files with 529 additions and 489 deletions

View File

@@ -235,7 +235,10 @@ if ( ! class_exists( 'WP_Error' ) ) {
// Content filter can be loaded standalone (no WordPress runtime needed).
require_once PEPTIDE_NEWS_PLUGIN_DIR . 'includes/class-peptide-news-content-filter.php';
// LLM class provides is_valid_model() used by Admin sanitize callbacks.
// LLM subsystem: client and prompt-builder must load before the orchestrator.
require_once PEPTIDE_NEWS_PLUGIN_DIR . 'includes/class-peptide-news-llm-client.php';
require_once PEPTIDE_NEWS_PLUGIN_DIR . 'includes/class-peptide-news-llm-prompt-builder.php';
require_once PEPTIDE_NEWS_PLUGIN_DIR . 'includes/class-peptide-news-llm-ajax.php';
require_once PEPTIDE_NEWS_PLUGIN_DIR . 'includes/class-peptide-news-llm.php';
// Stub AJAX-related functions used by cost tracker and other modules.