Matthew Trejo 1 hónapja
szülő
commit
4f5c8e72c5

+ 1 - 0
src/app/api/chat/report/route.ts

@@ -54,6 +54,7 @@ export async function POST(request: NextRequest) {
     return NextResponse.json(
       { 
         message: "Reporte guardado exitosamente",
+        id: record.id,  // Agregar ID en el nivel superior para fácil acceso
         record
       },
       { status: 201 }

+ 8 - 1
src/components/chatbot/MedicalAlert.tsx

@@ -32,13 +32,20 @@ const alertConfig = {
     description: "Requiere atención médica inmediata",
     className: "bg-red-500 border-red-600 text-white",
     iconClassName: "text-white"
+  },
+  SOLICITUD_MANUAL: {
+    icon: Calendar,
+    text: "Solicitud de cita",
+    description: "El usuario solicitó agendar una cita",
+    className: "bg-blue-50 border-blue-200 text-blue-800",
+    iconClassName: "text-blue-600"
   }
 };
 
 export const MedicalAlert = ({ alert, className, onAppointmentClick }: MedicalAlertProps) => {
   const config = alertConfig[alert];
   const Icon = config.icon;
-  const shouldShowButton = onAppointmentClick && (alert === "RECOMENDADO" || alert === "URGENTE");
+  const shouldShowButton = onAppointmentClick && (alert === "RECOMENDADO" || alert === "URGENTE" || alert === "SOLICITUD_MANUAL");
 
   return (
     <div className={cn(

+ 1 - 0
src/components/chatbot/types.ts

@@ -28,4 +28,5 @@ export interface ChatState {
   isLimitReached: boolean;
   reportGenerated: boolean;
   currentSuggestions?: SuggestedPrompt[];
+  sessionRecordId?: string | null;
 }

+ 15 - 1
src/hooks/useChat.ts

@@ -53,6 +53,11 @@ export const useChat = ({ chatType }: UseChatProps) => {
         setIsLimitReached(parsed.isLimitReached || false);
         setReportGenerated(parsed.reportGenerated || false);
         setCurrentSuggestions(parsed.currentSuggestions || []);
+        // Cargar sessionRecordId si existe
+        if (parsed.sessionRecordId) {
+          setSessionRecordId(parsed.sessionRecordId);
+          console.log("📂 [useChat] SessionRecordId cargado desde localStorage:", parsed.sessionRecordId);
+        }
         // Si hay mensajes guardados, ocultar sugerencias iniciales
         if (messagesWithDates && messagesWithDates.length > 0) {
           setShowSuggestions(false);
@@ -83,9 +88,11 @@ export const useChat = ({ chatType }: UseChatProps) => {
       isLimitReached,
       reportGenerated,
       currentSuggestions,
+      sessionRecordId,
     };
+    console.log("💾 [useChat] Guardando estado en localStorage, sessionRecordId:", sessionRecordId);
     localStorage.setItem(storageKey, JSON.stringify(stateToSave));
-  }, [messages, messageCount, isLimitReached, reportGenerated, currentSuggestions, chatType]);
+  }, [messages, messageCount, isLimitReached, reportGenerated, currentSuggestions, chatType, sessionRecordId]);
 
   // Función para generar reporte usando useCallback para evitar re-renderizados
   const generateMedicalReport = useCallback(async () => {
@@ -539,6 +546,8 @@ export const useChat = ({ chatType }: UseChatProps) => {
 
   const handleScheduleFromAlert = async (onSuccess: (recordId: string) => void) => {
     console.log("🚀 [useChat] handleScheduleFromAlert iniciado");
+    console.log("🔍 [useChat] sessionRecordId actual:", sessionRecordId);
+    console.log("🔍 [useChat] Tipo de sessionRecordId:", typeof sessionRecordId);
     
     // Si ya existe un recordId de esta sesión, reutilizarlo
     if (sessionRecordId) {
@@ -550,6 +559,8 @@ export const useChat = ({ chatType }: UseChatProps) => {
       return;
     }
     
+    console.log("➡️ [useChat] No hay sessionRecordId, creando nuevo reporte...");
+    
     setIsSchedulingFromAlert(true);
     
     try {
@@ -573,10 +584,13 @@ export const useChat = ({ chatType }: UseChatProps) => {
         const data = await response.json();
         const recordId = data.id; // ID del Record creado
         console.log("✅ [useChat] Record creado exitosamente, ID:", recordId);
+        console.log("💾 [useChat] Guardando recordId en sessionRecordId...");
         
         // Guardar el recordId en el estado de la sesión
         setSessionRecordId(recordId);
         
+        console.log("✅ [useChat] sessionRecordId actualizado a:", recordId);
+        
         // Callback con el recordId para abrir el modal de cita
         onSuccess(recordId);