3D間取り instructions.kind のハードコードによるデシンク懸念

未対応 優先度: 低〜中

概要

3D間取りの生成エンジンを ChatGPT へ切り替えた際、生成結果の保存処理 (apps/user/app/api/solid-floor-plans/[solidFloorPlanId]/generate/route.ts)で instructions.kind"chatgpt" にハードコードしている。

data: {
  instructions: {
    version: 1,
    kind: "chatgpt",   // ← 実際に使ったエンジンと無関係に固定
    instructions: JSON.parse(JSON.stringify(instructions)),
  },
  ...
}

一方で実際のエンジン選択は generate-image/index.ts 側にあり、 Gemini 実装も lib/gemini/ にコメントアウトで温存されている。 エンジンを Gemini に戻すと、保存される kind"chatgpt" のままで、 中身は Gemini 形式(parts[].fileData 系)となりデシンクする。

影響

先送りとした理由

想定対応

generateImage の戻り値に kind を含め、 route.ts はその kind を保存する(ハードコードを廃止)。 あわせて instructionsSchemaz.discriminatedUnion("kind", ...) 化すると型・エラーメッセージが安全になる。

優先度

低〜中。ChatGPT 固定の間は実害なし。エンジンを切り替える前に必ず対応すること。

関連