diff --git a/lib/services/gemini_service.dart b/lib/services/gemini_service.dart index 08b0273..067f786 100644 --- a/lib/services/gemini_service.dart +++ b/lib/services/gemini_service.dart @@ -150,6 +150,12 @@ class GeminiService { return _callDirectApi(imagePaths, null, forceRefresh: forceRefresh); } + // Stage1 で name/brand が両方 null = ラベルを読めなかった → 2段階の意味なし + if (ocr['name'] == null && ocr['brand'] == null) { + debugPrint('Stage1 returned no text, falling back to single-stage'); + return _callDirectApi(imagePaths, null, forceRefresh: forceRefresh); + } + // Stage 1 完了を UI に通知(AnalyzingDialog のメッセージを Stage2 用に切り替え) onStep1Complete?.call(); @@ -225,9 +231,9 @@ class GeminiService { final brandConstraint = brand != null ? '「$brand」(確定済み — 変更禁止)' : 'null(確定済み)'; final prefConstraint = prefecture != null ? '「$prefecture」(確定済み — 変更禁止)' : 'null(確定済み)'; - final nameJson = name != null ? '"$name"' : 'null'; - final brandJson = brand != null ? '"$brand"' : 'null'; - final prefJson = prefecture != null ? '"$prefecture"' : 'null'; + final nameJson = name != null ? jsonEncode(name) : 'null'; + final brandJson = brand != null ? jsonEncode(brand) : 'null'; + final prefJson = prefecture != null ? jsonEncode(prefecture) : 'null'; return ''' あなたは日本酒ラベル解析の専門家です。