From 54522a63d428818fa91813d3028d9737c26f54a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hartmut=20N=C3=B6renberg?= Date: Mon, 16 Mar 2026 10:35:19 +0100 Subject: [PATCH] feat: render metadata from render_log for past renderings find_product_renders now reads actual render metadata from the render_log JSONB (stored at render time) via COALESCE fallback: - engine: render_log.engine_used > render_log.engine > output_type setting - width/height: render_log > output_type.render_settings - samples: render_log > output_type.render_settings - render_type: still/turntable/cinematic from render_log.type - has_template: whether a .blend template was used All past renderings now have correct metadata without re-processing. Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/app/services/chat_service.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/backend/app/services/chat_service.py b/backend/app/services/chat_service.py index 3532aad..a22e0eb 100644 --- a/backend/app/services/chat_service.py +++ b/backend/app/services/chat_service.py @@ -731,10 +731,12 @@ async def _tool_find_product_renders( ot.name AS output_type, ot.transparent_bg, ot.output_format, ot.is_animation, ot.material_override AS ot_material_override, - ot.render_settings->>'width' AS ot_width, - ot.render_settings->>'height' AS ot_height, - ot.render_settings->>'engine' AS ot_engine, - ot.render_settings->>'samples' AS ot_samples, + COALESCE(ol.render_log->>'width', ot.render_settings->>'width') AS ot_width, + COALESCE(ol.render_log->>'height', ot.render_settings->>'height') AS ot_height, + COALESCE(ol.render_log->>'engine_used', ol.render_log->>'engine', ot.render_settings->>'engine') AS ot_engine, + COALESCE(ol.render_log->>'samples', ot.render_settings->>'samples') AS ot_samples, + ol.render_log->>'type' AS render_type, + ol.render_log->>'template' AS template_used, ol.material_override AS line_material_override, ol.render_overrides, ol.result_path, ol.id AS line_id, @@ -775,6 +777,7 @@ async def _tool_find_product_renders( "order_number": r["order_number"], "order_id": str(r["order_id"]), "output_type": r["output_type"], + "render_type": r.get("render_type") or ("animation" if r["is_animation"] else "still"), "output_format": overrides.get("output_format") or r["output_format"], "transparent_bg": r["transparent_bg"], "is_animation": r["is_animation"], @@ -782,6 +785,7 @@ async def _tool_find_product_renders( "engine": overrides.get("engine") or r["ot_engine"], "samples": overrides.get("samples") or r["ot_samples"], "material_override": material, + "has_template": bool(r.get("template_used")), "image_url": url, "line_id": str(r["line_id"]), "rendered_at": str(r["render_completed_at"]),