/**
 * আঁকা বন্ধু — describe a child's canvas drawing with warm encouragement.
 * Falls back to generic praise in DEMO_MODE / without an AI key.
 * Server-only.
 */
import { canUseAi } from '../env';
import type { AgeBand } from '../types';
import { callVision } from './provider';
import { SAFETY_RULES } from './prompts';
import { moderateOutput } from './moderation';

const FALLBACK = [
  'বাহ, দারুণ এঁকেছ! 🎨 রংগুলো খুব সুন্দর হয়েছে। আরও আঁকো!',
  'কী সুন্দর ছবি! 🌟 তোমার হাত তো জাদুকরী। আরেকটা এঁকে দেখাও!',
  'অসাধারণ! 👏 তুমি খুব ভালো আঁকো। এবার অন্য কিছু আঁকার চেষ্টা করো!',
];

export async function describeDrawing(dataUrl: string, band: AgeBand): Promise<string> {
  if (!canUseAi()) {
    return FALLBACK[Math.floor(Math.random() * FALLBACK.length)];
  }
  try {
    const prompt = [
      'একটা বাচ্চা এই ছবিটা এঁকেছে।',
      'উৎসাহ দিয়ে সহজ বাংলায় বলো তুমি কী দেখছ (২-৩ ছোট বাক্য), আর একটা আন্তরিক প্রশংসা করো।',
      'যদি স্পষ্ট কিছু বোঝা না যায়, তবু ইতিবাচকভাবে উৎসাহ দাও।',
    ].join(' ');
    const text = await callVision(prompt, dataUrl, { system: SAFETY_RULES, maxTokens: 250 });
    const out = moderateOutput(text.trim());
    if (out.safe && out.message) return out.message;
  } catch (err) {
    console.error('[ai/vision] failed, using fallback:', err);
  }
  return FALLBACK[Math.floor(Math.random() * FALLBACK.length)];
}
