Reels pre-gen: record true media count + real upsert for user_ai_prefs
- pregen_one recorded media_count as planned.len() (beat count); record the actual media item total (media.len(), photos + clips) in both the cache-hit and freshly-rendered ledger paths. Drops the redundant photo_count binding. - Replace upsert_prefs's insert-then-catch-error-then-update dance with a single atomic INSERT ... ON CONFLICT(id) DO UPDATE. Explicit id=1 makes the conflict target deterministic; explicit column .set((...)) keeps None -> NULL overwrite semantics so the row mirrors the latest request exactly, and genuine insert errors surface instead of being swallowed. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+4
-3
@@ -1075,6 +1075,8 @@ async fn pregen_one(
|
||||
// Flatten every media item across beats (in order) into the cache key.
|
||||
let media: Vec<SegmentMedia> = planned.iter().flat_map(|b| b.media.clone()).collect();
|
||||
let key = cache_key(&selector, &media, voice.as_deref());
|
||||
// Total media items shown (photos + clips), not beat count.
|
||||
let media_count = media.len() as i32;
|
||||
|
||||
// Dedup: check if fresh ledger row exists
|
||||
let now = std::time::SystemTime::now()
|
||||
@@ -1127,7 +1129,7 @@ async fn pregen_one(
|
||||
cache_key: key.clone(),
|
||||
output_path: mp4_path.to_string_lossy().to_string(),
|
||||
title,
|
||||
media_count: planned.len() as i32,
|
||||
media_count,
|
||||
render_version: RENDER_VERSION as i32,
|
||||
tz_offset_minutes: tz,
|
||||
voice: voice.clone(),
|
||||
@@ -1139,7 +1141,6 @@ async fn pregen_one(
|
||||
|
||||
// Generate the reel
|
||||
log::info!("Generating precomputed reel for span={}, key={}", span, key);
|
||||
let photo_count = planned.len() as i32;
|
||||
let (title, mp4) = produce_reel(
|
||||
app_state,
|
||||
insight_dao,
|
||||
@@ -1163,7 +1164,7 @@ async fn pregen_one(
|
||||
cache_key: key.clone(),
|
||||
output_path: mp4.to_string_lossy().to_string(),
|
||||
title,
|
||||
media_count: photo_count,
|
||||
media_count,
|
||||
render_version: RENDER_VERSION as i32,
|
||||
tz_offset_minutes: tz,
|
||||
voice: voice.clone(),
|
||||
|
||||
Reference in New Issue
Block a user