/**
 * AI 채팅 API.
 * - 백엔드 prediction 프록시 호출 (/api/prediction/chat)
 * - SSE 스트리밍 (현재 stub) - 향후 prediction 인증 통과 시 활성화
 *
 * 향후 SSE 구현 시:
 *   const ctrl = new AbortController();
 *   const res = await fetch(`${API_BASE}/prediction/chat`, {
 *     method: 'POST',
 *     credentials: 'include',
 *     headers: { 'Content-Type': 'application/json' },
 *     body: JSON.stringify({ message, stream: true }),
 *     signal: ctrl.signal,
 *   });
 *   const reader = res.body!.getReader();
 *   const decoder = new TextDecoder();
 *   while (true) {
 *     const { value, done } = await reader.read();
 *     if (done) break;
 *     const chunk = decoder.decode(value);
 *     // 'data: {...}\n\n' 파싱
 *   }
 */

const API_BASE = import.meta.env.VITE_API_URL ?? '/api';

export interface ChatMessage {
  role: 'user' | 'assistant' | 'system';
  content: string;
}

export interface ChatResponse {
  ok: boolean;
  reply?: string;
  message?: string;
  serviceAvailable?: boolean;
}

/**
 * 비동기 채팅 (SSE 미사용 버전).
 * Phase 8에서는 미연결 시 graceful 응답.
 */
export async function sendChatMessage(message: string): Promise<ChatResponse> {
  try {
    const res = await fetch(`${API_BASE}/prediction/chat`, {
      method: 'POST',
      credentials: 'include',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ message, stream: false }),
    });
    if (!res.ok) {
      return {
        ok: false,
        serviceAvailable: false,
        message: `Prediction 채팅 서비스 미연결 (HTTP ${res.status}). 향후 인증 연동 후 활성화 예정.`,
      };
    }
    const data = await res.json();
    return { ok: true, reply: data.reply || data.content || JSON.stringify(data) };
  } catch (e: unknown) {
    return {
      ok: false,
      serviceAvailable: false,
      message: 'Prediction 채팅 서비스 연결 실패: ' + (e instanceof Error ? e.message : 'unknown'),
    };
  }
}
