[agent-pipeline] pipe-20260330021427-v9fb round-1

This commit is contained in:
DDD1542
2026-03-30 11:25:52 +09:00
parent 4342056de6
commit b9e3f68fce
47 changed files with 144 additions and 144 deletions
@@ -1308,7 +1308,7 @@ export default function ScreenDesigner({
columnName: col.columnName,
columnLabel: col.columnLabel,
dataType: col.dataType === "string" ? "varchar" : col.dataType === "number" ? "numeric" : col.dataType,
webType: col.dataType === "number" ? "number" : "text",
web_type: col.dataType === "number" ? "number" : "text",
input_type: "text",
widgetType: col.dataType === "number" ? "number" : "text",
isNullable: "YES",
@@ -1399,7 +1399,7 @@ export default function ScreenDesigner({
columnName: col.column_name,
columnLabel: col.display_name || col.column_label || col.column_name,
dataType: col.data_type || col.db_type,
webType: col.web_type,
web_type: col.web_type,
input_type: inputType,
inputType: inputType,
widgetType,
@@ -1484,7 +1484,7 @@ export default function ScreenDesigner({
columnName: col.column_name,
columnLabel: col.display_name || col.column_label || col.column_name,
dataType: col.data_type || col.db_type,
webType: col.web_type,
web_type: col.web_type,
input_type: inputType,
inputType: inputType,
widgetType,
@@ -3279,7 +3279,7 @@ export default function ScreenDesigner({
console.log("🧩 컴포넌트 드롭:", {
componentName: component.name,
webType: component.webType,
web_type: component.webType,
rawPosition: { x: dropX, y: dropY },
boundedPosition: { x: boundedX, y: boundedY },
snappedPosition,
@@ -3289,10 +3289,10 @@ export default function ScreenDesigner({
console.log("🔍 ScreenDesigner handleComponentDrop:", {
componentName: component.name,
componentId: component.id,
webType: component.webType,
web_type: component.webType,
category: component.category,
defaultConfig: component.defaultConfig,
defaultSize: component.defaultSize,
default_config: component.defaultConfig,
default_size: component.defaultSize,
});
// 컴포넌트별 gridColumns 설정 및 크기 계산
@@ -3395,7 +3395,7 @@ export default function ScreenDesigner({
console.log("🎨 최종 컴포넌트 크기:", {
componentId: component.id,
componentName: component.name,
defaultSize: component.defaultSize,
default_size: component.defaultSize,
finalSize: componentSize,
gridColumns,
});
@@ -3465,7 +3465,7 @@ export default function ScreenDesigner({
layerId: activeLayerIdRef.current || 1, // 🆕 현재 활성 레이어에 추가 (ref 사용)
componentConfig: {
type: component.id, // 새 컴포넌트 시스템의 ID 사용
webType: component.webType, // 웹타입 정보 추가
web_type: component.webType, // 웹타입 정보 추가
...enhancedDefaultConfig,
},
webTypeConfig: getDefaultWebTypeConfig(component.webType),
@@ -488,7 +488,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD
tableName,
columnName: "id",
columnLabel: "ID",
webType: "number" as WebType,
web_type: "number" as WebType,
dataType: "BIGINT",
isNullable: "NO",
},
@@ -496,7 +496,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD
tableName,
columnName: "name",
columnLabel: "이름",
webType: "text" as WebType,
web_type: "text" as WebType,
dataType: "VARCHAR",
isNullable: "NO",
},
@@ -504,7 +504,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD
tableName,
columnName: "description",
columnLabel: "설명",
webType: "textarea" as WebType,
web_type: "textarea" as WebType,
dataType: "TEXT",
isNullable: "YES",
},
@@ -512,7 +512,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD
tableName,
columnName: "created_date",
columnLabel: "생성일",
webType: "date" as WebType,
web_type: "date" as WebType,
dataType: "TIMESTAMP",
isNullable: "NO",
},
@@ -520,7 +520,7 @@ export default function ScreenDesigner({ selectedScreen, onBackToList }: ScreenD
tableName,
columnName: "updated_date",
columnLabel: "수정일",
webType: "date" as WebType,
web_type: "date" as WebType,
dataType: "TIMESTAMP",
isNullable: "YES",
},
@@ -949,7 +949,7 @@ function TableColumnAccordion({
try {
const settings: ColumnSettings = {
columnLabel: columns.find(c => c.column_name === editingJoin.columnName)?.display_name || editingJoin.columnName,
webType: "entity",
web_type: "entity",
detailSettings: JSON.stringify({}),
codeCategory: "",
codeValue: "",
@@ -2063,7 +2063,7 @@ function OverviewTab({
gridColumns: 4,
componentConfig: {
type: "text-input",
webType: "text-input",
web_type: "text-input",
placeholder: `${newColumn}을(를) 입력하세요`,
},
webTypeConfig: {},
@@ -70,7 +70,7 @@ export default function SimpleScreenDesigner({ selectedScreen, onBackToList }: S
size: { width: 200, height: 80 },
title: `${type}`,
...(type === "widget" && {
webType: "text" as const,
web_type: "text" as const,
label: "라벨",
placeholder: "입력하세요",
}),
@@ -62,8 +62,8 @@ export function ComponentsPanel({
description: "드롭다운, 콤보박스, 라디오, 체크박스 등 다양한 선택 모드 지원",
category: "input" as ComponentCategory,
tags: ["select", "dropdown", "combobox", "v2"],
defaultSize: { width: 300, height: 40 },
defaultConfig: {
default_size: { width: 300, height: 40 },
default_config: {
mode: "dropdown",
source: "static",
multiple: false,
@@ -79,7 +79,7 @@ export function ComponentsPanel({
description: "행 단위로 데이터를 추가/수정/삭제",
category: "data" as ComponentCategory,
tags: ["repeater", "table", "modal", "button", "v2", "v2"],
defaultSize: { width: 600, height: 300 },
default_size: { width: 600, height: 300 },
},
{
id: "v2-bom-tree",
@@ -87,7 +87,7 @@ export function ComponentsPanel({
description: "BOM 구성을 계층 트리 형태로 조회",
category: "data" as ComponentCategory,
tags: ["bom", "tree", "계층", "제조", "v2"],
defaultSize: { width: 900, height: 600 },
default_size: { width: 900, height: 600 },
},
{
id: "v2-bom-item-editor",
@@ -95,7 +95,7 @@ export function ComponentsPanel({
description: "BOM 하위 품목을 트리 구조로 추가/편집/삭제",
category: "data" as ComponentCategory,
tags: ["bom", "tree", "편집", "하위품목", "제조", "v2"],
defaultSize: { width: 900, height: 400 },
default_size: { width: 900, height: 400 },
},
] as unknown as ComponentDefinition[],
[],
@@ -1091,7 +1091,7 @@ export const DetailSettingsPanel: React.FC<DetailSettingsPanelProps> = ({
type: "component" as const,
component_config: {
type: "button-primary",
webType: "button",
web_type: "button",
...anyComp.component_config,
},
};
@@ -44,7 +44,7 @@ export interface TemplateComponent {
description: string;
category: "table" | "button" | "form" | "layout" | "chart" | "status" | "file" | "area";
icon: React.ReactNode;
defaultSize: { width: number; height: number };
default_size: { width: number; height: number };
components: Array<{
type: "widget" | "container" | "datatable" | "file" | "area";
widgetType?: string;
@@ -93,7 +93,7 @@ const convertTemplateStandardToComponent = (template: TemplateStandard): Templat
description: template.description || "",
category: template.category as TemplateComponent["category"],
icon: getIconByName(template.icon_name),
defaultSize: template.default_size || { width: 300, height: 200 },
default_size: template.default_size || { width: 300, height: 200 },
components: template.layout_config?.components || [],
};
};
@@ -107,7 +107,7 @@ const fallbackTemplates: TemplateComponent[] = [
description: "컬럼 설정, 필터링, 페이지네이션이 포함된 완전한 데이터 테이블",
category: "table",
icon: <Table className="h-4 w-4" />,
defaultSize: { width: 1000, height: 680 },
default_size: { width:1000, height: 680 },
components: [
{
type: "datatable",
@@ -133,7 +133,7 @@ const fallbackTemplates: TemplateComponent[] = [
description: "컴포넌트들을 그룹화할 수 있는 기본 박스 형태의 영역",
category: "area",
icon: <Square className="h-4 w-4" />,
defaultSize: { width: 400, height: 300 },
default_size: { width:400, height: 300 },
components: [
{
type: "area",
@@ -171,7 +171,7 @@ const fallbackTemplates: TemplateComponent[] = [
description: "그림자와 둥근 모서리가 있는 카드 형태의 영역",
category: "area",
icon: <CreditCard className="h-4 w-4" />,
defaultSize: { width: 400, height: 300 },
default_size: { width:400, height: 300 },
components: [
{
type: "area",
@@ -209,7 +209,7 @@ const fallbackTemplates: TemplateComponent[] = [
description: "제목 헤더가 포함된 패널 형태의 영역",
category: "area",
icon: <Layout className="h-4 w-4" />,
defaultSize: { width: 500, height: 400 },
default_size: { width:500, height: 400 },
components: [
{
type: "area",
@@ -237,7 +237,7 @@ const fallbackTemplates: TemplateComponent[] = [
description: "내부 컴포넌트들을 격자 형태로 배치하는 영역",
category: "area",
icon: <Grid3x3 className="h-4 w-4" />,
defaultSize: { width: 600, height: 400 },
default_size: { width:600, height: 400 },
components: [
{
type: "area",
@@ -281,7 +281,7 @@ const fallbackTemplates: TemplateComponent[] = [
description: "내부 컴포넌트들을 가로로 나란히 배치하는 영역",
category: "area",
icon: <Columns className="h-4 w-4" />,
defaultSize: { width: 600, height: 200 },
default_size: { width:600, height: 200 },
components: [
{
type: "area",
@@ -312,7 +312,7 @@ const fallbackTemplates: TemplateComponent[] = [
description: "내부 컴포넌트들을 세로로 순차 배치하는 영역",
category: "area",
icon: <Rows className="h-4 w-4" />,
defaultSize: { width: 300, height: 500 },
default_size: { width:300, height: 500 },
components: [
{
type: "area",
@@ -343,7 +343,7 @@ const fallbackTemplates: TemplateComponent[] = [
description: "사이드바와 메인 컨텐츠 영역으로 구분된 레이아웃",
category: "area",
icon: <SidebarOpen className="h-4 w-4" />,
defaultSize: { width: 700, height: 400 },
default_size: { width:700, height: 400 },
components: [
{
type: "area",
@@ -372,7 +372,7 @@ const fallbackTemplates: TemplateComponent[] = [
description: "탭으로 구분된 여러 컨텐츠 영역을 제공하는 레이아웃",
category: "area",
icon: <Folder className="h-4 w-4" />,
defaultSize: { width: 600, height: 400 },
default_size: { width:600, height: 400 },
components: [
{
type: "area",
@@ -400,7 +400,7 @@ const fallbackTemplates: TemplateComponent[] = [
// description: "접고 펼칠 수 있는 섹션들로 구성된 영역",
// category: "area",
// icon: <ChevronDown className="h-4 w-4" />,
// defaultSize: { width: 500, height: 600 },
// default_size: { width: 500, height: 600 },
// components: [
// {
// type: "area",
@@ -584,7 +584,7 @@ export const TemplatesPanel: React.FC<TemplatesPanelProps> = ({ onDragStart }) =
<div className="flex items-center justify-between">
<div className="flex items-center space-x-2 text-xs text-muted-foreground/70">
<span className="bg-primary/10 px-3 py-1 rounded-full font-medium text-primary">
{template.defaultSize.width}×{template.defaultSize.height}
{template.default_size.width}×{template.default_size.height}
</span>
</div>
<span className="text-xs font-medium text-primary capitalize bg-primary/5 px-3 py-1 rounded-full border border-primary/20">
@@ -50,7 +50,7 @@ export const numberingRuleTemplate = {
description: "코드 자동 채번 규칙 설정",
category: "admin" as const,
icon: Hash,
defaultSize: { width: 1200, height: 800 },
default_size: { width: 1200, height: 800 },
components: [
{
type: "numbering-rule" as const,
@@ -44,7 +44,7 @@ export const RatingWidget: React.FC<RatingWidgetProps> = ({
setCurrentRating(rating);
onChange?.(rating);
onEvent?.("change", { value: rating, webType: "rating" });
onEvent?.("change", { value: rating, web_type: "rating" });
};
const handleStarHover = (rating: number) => {