fix: image style suffix empty-string bypass and image cost run_id mismatch (v0.12.2)

Bug 1: Image style suffix empty-string bypass
- get_option() for prautoblogger_image_style_suffix returns empty string from DB instead of default
- Root cause of post #675 rendering photorealistically instead of newspaper comic
- Fixed by extracting private helper get_style_suffix() that treats both absent AND empty as default
- Applied to all three call sites in class-image-prompt-builder.php (lines 85, 107, 272)

Bug 2: Image cost logged under wrong run_id
- class-image-pipeline.php created fresh cost tracker when invoked without argument
- Image costs logged under different run_id than article's other stages
- Cost breakdowns aggregating by run_id silently excluded image line items
- Fixed by threading article worker's cost tracker through Publisher to image pipeline
- Modified publisher.php and post-assembler.php to accept and pass cost_tracker
- Updated article-worker.php to pass cost_tracker to publisher methods
- Image costs now share same run_id as analysis, draft, review, and llm_research stages

Version: 0.12.1 -> 0.12.2
CHANGELOG: Added comprehensive entry describing both fixes
This commit is contained in:
peptiderepo
2026-04-23 18:06:54 +00:00
parent 58710a0263
commit 9bd843297d
6 changed files with 48 additions and 19 deletions

View File

@@ -138,13 +138,13 @@ class PRAutoBlogger_Article_Worker {
: $content;
if ( $auto_publish ) {
$publisher->publish( $final, $idea, $review, $run_id );
$publisher->publish( $final, $idea, $review, $run_id, $this->cost_tracker );
++$result['published'];
} else {
$publisher->save_as_draft( $final, $idea, $review, $run_id );
$publisher->save_as_draft( $final, $idea, $review, $run_id, $this->cost_tracker );
}
} else {
$publisher->save_as_draft( $content, $idea, $review, $run_id );
$publisher->save_as_draft( $content, $idea, $review, $run_id, $this->cost_tracker );
++$result['rejected'];
PRAutoBlogger_Logger::instance()->info(
'Article rejected by editor: ' . $idea->get_topic(),