-
+
- {'진피즈'}
+ {cocktailNameKo}
+ 상세보기
diff --git a/src/domains/recommend/components/bot/BotMessage.tsx b/src/domains/recommend/components/bot/BotMessage.tsx
index b3f7655..d74afde 100644
--- a/src/domains/recommend/components/bot/BotMessage.tsx
+++ b/src/domains/recommend/components/bot/BotMessage.tsx
@@ -5,28 +5,25 @@ import Image from 'next/image';
import { useState } from 'react';
import BotCocktailCard from './BotCocktailCard';
import BotOptions from './BotOptions';
-import TypingIndicator from './TypingIndicator';
+import { StepOption, StepRecommendation, RecommendationItem } from '../../types/recommend';
-interface Message {
- id: number;
- message?: string;
- type?: 'radio' | 'text' | 'recommend';
+interface BotMessage {
+ id: string;
+ message: string;
+ type: string;
+ options?: StepOption[];
+ recommendations?: RecommendationItem[];
}
interface BotMessages {
- messages: Message[];
- isTyping?: boolean;
+ messages: BotMessage[];
+ stepData?: StepRecommendation | null;
+ currentStep?: number;
+ onSelectedOption?: (value: string) => void;
}
-function BotMessage({ messages, isTyping = false }: BotMessages) {
- const [selected, setSelected] = useState('option1');
-
- // 임시 radio 옵션
- const options = [
- { label: '옵션 1', value: 'option1' },
- { label: '옵션 2', value: 'option2' },
- { label: '옵션 3', value: 'option3' },
- ];
+function BotMessage({ messages, stepData, currentStep, onSelectedOption }: BotMessages) {
+ const [selected, setSelected] = useState('');
return (
@@ -47,31 +44,41 @@ function BotMessage({ messages, isTyping = false }: BotMessages) {
{messages.map((msg) => (
- {msg.type === 'recommend' ? (
+ {msg.type === 'CARD_LIST' && msg.recommendations?.length ? (
- -
-
-
- -
-
-
- -
-
-
+ {msg.recommendations.map((rec) => (
+ -
+
+
+ ))}
) : (
{msg.message &&
{msg.message}
}
{/* radio */}
- {msg.type === 'radio' && (
-
+ {msg.type === 'RADIO_OPTIONS' && msg.options?.length && (
+
{
+ setSelected(val);
+ onSelectedOption?.(val);
+ }}
+ />
)}
)}
))}
- {isTyping &&
}
);
diff --git a/src/domains/recommend/components/bot/BotOptions.tsx b/src/domains/recommend/components/bot/BotOptions.tsx
index 68fafee..7e6040c 100644
--- a/src/domains/recommend/components/bot/BotOptions.tsx
+++ b/src/domains/recommend/components/bot/BotOptions.tsx
@@ -3,34 +3,41 @@ interface Option {
value: string;
}
-interface RadioGroupProps {
+interface BotOptionsProps {
options: Option[];
value: string;
onChange: (value: string) => void;
+ step: number;
+ currentStep: number;
}
-function BotOptions({ options, value, onChange }: RadioGroupProps) {
+function BotOptions({ options, value, onChange, step, currentStep }: BotOptionsProps) {
return (