[agent-pipeline] pipe-20260315061036-2tnn round-3

This commit is contained in:
DDD1542 2026-03-15 15:27:14 +09:00
parent 92cd070749
commit 501325e4b4
1 changed files with 19 additions and 13 deletions

View File

@ -414,7 +414,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
isFaded = focusedScreenId !== null && !isFocused; isFaded = focusedScreenId !== null && !isFocused;
} else { } else {
// 개별 화면 모드: 메인 화면(선택된 화면)만 포커스, 연결 화면은 흐리게 // 개별 화면 모드: 메인 화면(선택된 화면)만 포커스, 연결 화면은 흐리게
isFocused = isMain; isFocused = !!isMain;
isFaded = !isMain && screenList.length > 1; isFaded = !isMain && screenList.length > 1;
} }
@ -426,7 +426,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
label: scr.screenName, label: scr.screenName,
subLabel: selectedGroup ? `${roleLabel} (#${scr.displayOrder || idx + 1})` : (isMain ? "메인 화면" : "연결 화면"), subLabel: selectedGroup ? `${roleLabel} (#${scr.displayOrder || idx + 1})` : (isMain ? "메인 화면" : "연결 화면"),
type: "screen", type: "screen",
isMain: selectedGroup ? idx === 0 : isMain, isMain: selectedGroup ? idx === 0 : !!isMain,
tableName: scr.tableName, tableName: scr.tableName,
layoutSummary: summary, layoutSummary: summary,
// 화면 포커스 관련 속성 (그룹 모드 & 개별 모드 공통) // 화면 포커스 관련 속성 (그룹 모드 & 개별 모드 공통)
@ -990,17 +990,18 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
} }
}); });
// 테이블 관계 엣지 (추가 관계) // 테이블 관계 엣지 (추가 관계) - 참조용 화면(개별 모드: screen, 그룹 모드: screenList[0])
const refScreen = screen ?? screenList[0];
relations.forEach((rel: any, idx: number) => { relations.forEach((rel: any, idx: number) => {
if (rel.table_name && rel.table_name !== screen.tableName) { if (rel.table_name && rel.table_name !== refScreen.tableName) {
// 화면 → 연결 테이블 // 화면 → 연결 테이블
const edgeExists = newEdges.some( const edgeExists = newEdges.some(
(e) => e.source === `screen-${screen.screenId}` && e.target === `table-${rel.table_name}` (e) => e.source === `screen-${refScreen.screenId}` && e.target === `table-${rel.table_name}`
); );
if (!edgeExists) { if (!edgeExists) {
newEdges.push({ newEdges.push({
id: `edge-rel-${idx}`, id: `edge-rel-${idx}`,
source: `screen-${screen.screenId}`, source: `screen-${refScreen.screenId}`,
target: `table-${rel.table_name}`, target: `table-${rel.table_name}`,
sourceHandle: "bottom", sourceHandle: "bottom",
targetHandle: "top", targetHandle: "top",
@ -1017,12 +1018,12 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
// 데이터 흐름 엣지 (화면 간) // 데이터 흐름 엣지 (화면 간)
flows flows
.filter((flow: any) => flow.source_screen_id === screen.screenId) .filter((flow: any) => flow.source_screen_id === refScreen.screenId)
.forEach((flow: any, idx: number) => { .forEach((flow: any, idx: number) => {
if (flow.target_screen_id) { if (flow.target_screen_id) {
newEdges.push({ newEdges.push({
id: `edge-flow-${idx}`, id: `edge-flow-${idx}`,
source: `screen-${screen.screenId}`, source: `screen-${refScreen.screenId}`,
target: `screen-${flow.target_screen_id}`, target: `screen-${flow.target_screen_id}`,
sourceHandle: "right", sourceHandle: "right",
targetHandle: "left", targetHandle: "left",
@ -1134,7 +1135,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
// 화면 노드 우클릭 // 화면 노드 우클릭
if (node.id.startsWith("screen-")) { if (node.id.startsWith("screen-")) {
const screenId = parseInt(node.id.replace("screen-", "")); const screenId = parseInt(node.id.replace("screen-", ""));
const nodeData = node.data as ScreenNodeData; const nodeData = node.data as unknown as ScreenNodeData;
const mainTable = screenTableMap[screenId]; const mainTable = screenTableMap[screenId];
// 해당 화면의 서브 테이블 (필터 테이블) 정보 // 해당 화면의 서브 테이블 (필터 테이블) 정보
@ -1248,7 +1249,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
// 메인 테이블 노드 더블클릭 // 메인 테이블 노드 더블클릭
if (node.id.startsWith("table-") && !node.id.startsWith("table-sub-")) { if (node.id.startsWith("table-") && !node.id.startsWith("table-sub-")) {
const tableName = node.id.replace("table-", ""); const tableName = node.id.replace("table-", "");
const nodeData = node.data as TableNodeData; const nodeData = node.data as unknown as TableNodeData;
// 이 테이블을 사용하는 화면 찾기 // 이 테이블을 사용하는 화면 찾기
const screenId = Object.entries(screenTableMap).find( const screenId = Object.entries(screenTableMap).find(
@ -1293,7 +1294,7 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
// 서브 테이블 노드 더블클릭 // 서브 테이블 노드 더블클릭
if (node.id.startsWith("subtable-")) { if (node.id.startsWith("subtable-")) {
const tableName = node.id.replace("subtable-", ""); const tableName = node.id.replace("subtable-", "");
const nodeData = node.data as TableNodeData; const nodeData = node.data as unknown as TableNodeData;
// 이 서브 테이블을 사용하는 화면 찾기 // 이 서브 테이블을 사용하는 화면 찾기
const screenId = Object.entries(screenSubTableMap).find( const screenId = Object.entries(screenSubTableMap).find(
@ -2353,7 +2354,6 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
fieldMappings={settingModalNode.existingConfig?.fieldMappings} fieldMappings={settingModalNode.existingConfig?.fieldMappings}
componentCount={0} componentCount={0}
onSaveSuccess={handleRefreshVisualization} onSaveSuccess={handleRefreshVisualization}
isPop={isPop}
/> />
)} )}
@ -2367,7 +2367,13 @@ function ScreenRelationFlowInner({ screen, selectedGroup, initialFocusedScreenId
screenId={settingModalNode.screenId} screenId={settingModalNode.screenId}
joinColumnRefs={settingModalNode.existingConfig?.joinColumnRefs} joinColumnRefs={settingModalNode.existingConfig?.joinColumnRefs}
referencedBy={settingModalNode.existingConfig?.referencedBy} referencedBy={settingModalNode.existingConfig?.referencedBy}
columns={settingModalNode.existingConfig?.columns} columns={settingModalNode.existingConfig?.columns?.map((col) => ({
column: col.originalName ?? col.name,
label: col.name,
type: col.type,
isPK: col.isPrimaryKey,
isFK: col.isForeignKey,
}))}
filterColumns={settingModalNode.existingConfig?.filterColumns} filterColumns={settingModalNode.existingConfig?.filterColumns}
onSaveSuccess={handleRefreshVisualization} onSaveSuccess={handleRefreshVisualization}
/> />