topic = $data['topic']; $this->article_type = $data['article_type']; $this->suggested_title = $data['suggested_title']; $this->summary = $data['summary']; $this->score = (float) ( $data['score'] ?? 0.0 ); $this->analysis_id = (int) ( $data['analysis_id'] ?? 0 ); $this->source_ids = $data['source_ids'] ?? []; $this->key_points = $data['key_points'] ?? []; $this->target_keywords = $data['target_keywords'] ?? []; } public function get_topic(): string { return $this->topic; } public function get_article_type(): string { return $this->article_type; } public function get_suggested_title(): string { return $this->suggested_title; } public function get_summary(): string { return $this->summary; } public function get_score(): float { return $this->score; } public function get_analysis_id(): int { return $this->analysis_id; } public function get_source_ids(): array { return $this->source_ids; } public function get_key_points(): array { return $this->key_points; } public function get_target_keywords(): array { return $this->target_keywords; } /** * Serialize to array for storage in options/transients. * * Used by the pipeline queue to persist ideas across chained cron jobs. * * @return array Constructor-compatible array. */ public function to_array(): array { return [ 'topic' => $this->topic, 'article_type' => $this->article_type, 'suggested_title' => $this->suggested_title, 'summary' => $this->summary, 'score' => $this->score, 'analysis_id' => $this->analysis_id, 'source_ids' => $this->source_ids, 'key_points' => $this->key_points, 'target_keywords' => $this->target_keywords, ]; } }