diff --git a/frontend/components/flow/FlowConditionBuilder.tsx b/frontend/components/flow/FlowConditionBuilder.tsx index 0440d049..70e8b91d 100644 --- a/frontend/components/flow/FlowConditionBuilder.tsx +++ b/frontend/components/flow/FlowConditionBuilder.tsx @@ -4,14 +4,17 @@ */ import { useState, useEffect } from "react"; -import { Plus, Trash2 } from "lucide-react"; +import { Plus, Trash2, Check, ChevronsUpDown } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; +import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "@/components/ui/command"; +import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Badge } from "@/components/ui/badge"; import { FlowConditionGroup, FlowCondition, ConditionOperator } from "@/types/flow"; import { getTableColumns } from "@/lib/api/tableManagement"; +import { cn } from "@/lib/utils"; interface FlowConditionBuilderProps { flowId: number; @@ -49,6 +52,7 @@ export function FlowConditionBuilder({ const [loadingColumns, setLoadingColumns] = useState(false); const [conditionType, setConditionType] = useState<"AND" | "OR">(condition?.type || "AND"); const [conditions, setConditions] = useState(condition?.conditions || []); + const [columnComboboxOpen, setColumnComboboxOpen] = useState>({}); // condition prop이 변경될 때 상태 동기화 useEffect(() => { @@ -238,27 +242,74 @@ export function FlowConditionBuilder({ className="h-8" /> ) : ( - + return ( + { + updateCondition(index, "column", currentValue); + setColumnComboboxOpen({ ...columnComboboxOpen, [index]: false }); + }} + className="text-xs" + > + +
+ {displayName} + ({dataType}) +
+
+ ); + })} + + + + + )} diff --git a/frontend/lib/api/client.ts b/frontend/lib/api/client.ts index 9aa0eb02..7dc811c9 100644 --- a/frontend/lib/api/client.ts +++ b/frontend/lib/api/client.ts @@ -11,6 +11,12 @@ const getApiBaseUrl = (): string => { if (typeof window !== "undefined") { const currentHost = window.location.hostname; const currentPort = window.location.port; + const protocol = window.location.protocol; + + // 프로덕션 환경: v1.vexplor.com → api.vexplor.com + if (currentHost === "v1.vexplor.com") { + return "https://api.vexplor.com/api"; + } // 로컬 개발환경: localhost:9771 또는 localhost:3000 → localhost:8080 if ( diff --git a/frontend/lib/api/dashboard.ts b/frontend/lib/api/dashboard.ts index 80663e1c..88306356 100644 --- a/frontend/lib/api/dashboard.ts +++ b/frontend/lib/api/dashboard.ts @@ -3,9 +3,7 @@ */ import { DashboardElement } from "@/components/admin/dashboard/types"; - -// API 기본 설정 -const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL || "/api"; +import { API_BASE_URL } from "./client"; // 토큰 가져오기 (실제 인증 시스템에 맞게 수정) function getAuthToken(): string | null {