diff --git a/src/pages/stock/screener/components/canvas/nodes/GateNodeCard.jsx b/src/pages/stock/screener/components/canvas/nodes/GateNodeCard.jsx new file mode 100644 index 0000000..da53054 --- /dev/null +++ b/src/pages/stock/screener/components/canvas/nodes/GateNodeCard.jsx @@ -0,0 +1,72 @@ +import React, { memo, useState } from 'react'; +import { Handle, Position } from '@xyflow/react'; + +function ParamField({ name, schema, value, onChange }) { + if (schema?.type === 'boolean') { + return ( + + ); + } + return ( + + ); +} + +function GateNodeCard({ data }) { + const { meta, params, onChange, description } = data; + const [expanded, setExpanded] = useState(false); + + const update = (key, v) => onChange({ ...params, [key]: v }); + + return ( +
+ +
+ 🛡️ + {meta?.label || '위생 게이트'} + {description && ( + + )} +
+
통과해야 점수 단계 진입
+ + {expanded && ( +
+ {Object.entries(meta?.param_schema || {}).map(([key, schema]) => ( + + ))} +
+ )} + +
+ ); +} + +export default memo(GateNodeCard);