[agent-pipeline] pipe-20260317054958-cypk round-6
This commit is contained in:
parent
d8a542b253
commit
80cd95e683
|
|
@ -36,14 +36,14 @@ export async function loadColumnMeta(tableName: string, forceReload = false): Pr
|
||||||
const isStale =
|
const isStale =
|
||||||
typeof cachedAt === "number" && now - cachedAt > CACHE_TTL_MS;
|
typeof cachedAt === "number" && now - cachedAt > CACHE_TTL_MS;
|
||||||
|
|
||||||
if (!forceReload && !isStale && columnMetaCache[tableName]) return;
|
if (!forceReload && !isStale && tableName in columnMetaCache && columnMetaCache[tableName]) return;
|
||||||
|
|
||||||
if (forceReload || isStale) {
|
if (forceReload || isStale) {
|
||||||
delete columnMetaCache[tableName];
|
delete columnMetaCache[tableName];
|
||||||
delete columnMetaLoading[tableName];
|
delete columnMetaLoading[tableName];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (columnMetaLoading[tableName]) {
|
if (tableName in columnMetaLoading) {
|
||||||
await columnMetaLoading[tableName];
|
await columnMetaLoading[tableName];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -665,7 +665,8 @@ export const DynamicComponentRenderer: React.FC<DynamicComponentRendererProps> =
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1. 새 컴포넌트 시스템에서 먼저 조회
|
// 1. 새 컴포넌트 시스템에서 먼저 조회
|
||||||
const newComponent = ComponentRegistry.getComponent(componentType);
|
const newComponent =
|
||||||
|
componentType != null ? ComponentRegistry.getComponent(componentType) : null;
|
||||||
|
|
||||||
if (newComponent) {
|
if (newComponent) {
|
||||||
// 새 컴포넌트 시스템으로 렌더링
|
// 새 컴포넌트 시스템으로 렌더링
|
||||||
|
|
@ -777,7 +778,7 @@ export const DynamicComponentRenderer: React.FC<DynamicComponentRendererProps> =
|
||||||
|
|
||||||
// 렌더러 props 구성
|
// 렌더러 props 구성
|
||||||
// 숨김 값 추출
|
// 숨김 값 추출
|
||||||
const hiddenValue = component.hidden || component.componentConfig?.hidden;
|
const hiddenValue = (component as any).hidden || component.componentConfig?.hidden;
|
||||||
|
|
||||||
// 숨김 처리: 인터랙티브 모드(실제 뷰)에서만 숨김, 디자인 모드에서는 표시
|
// 숨김 처리: 인터랙티브 모드(실제 뷰)에서만 숨김, 디자인 모드에서는 표시
|
||||||
if (hiddenValue && isInteractive) {
|
if (hiddenValue && isInteractive) {
|
||||||
|
|
@ -898,7 +899,7 @@ export const DynamicComponentRenderer: React.FC<DynamicComponentRendererProps> =
|
||||||
// 새로운 기능들 전달
|
// 새로운 기능들 전달
|
||||||
// 🆕 webTypeConfig.numberingRuleId가 있으면 autoGeneration으로 변환
|
// 🆕 webTypeConfig.numberingRuleId가 있으면 autoGeneration으로 변환
|
||||||
autoGeneration:
|
autoGeneration:
|
||||||
component.autoGeneration ||
|
(component as any).autoGeneration ||
|
||||||
component.componentConfig?.autoGeneration ||
|
component.componentConfig?.autoGeneration ||
|
||||||
((component as any).webTypeConfig?.numberingRuleId
|
((component as any).webTypeConfig?.numberingRuleId
|
||||||
? {
|
? {
|
||||||
|
|
@ -998,7 +999,8 @@ export const DynamicComponentRenderer: React.FC<DynamicComponentRendererProps> =
|
||||||
|
|
||||||
let renderedElement: React.ReactElement;
|
let renderedElement: React.ReactElement;
|
||||||
if (isClass) {
|
if (isClass) {
|
||||||
const rendererInstance = new NewComponentRenderer(rendererProps);
|
const RendererClass = NewComponentRenderer as new (props: any) => { render: () => React.ReactElement };
|
||||||
|
const rendererInstance = new RendererClass(rendererProps);
|
||||||
renderedElement = rendererInstance.render();
|
renderedElement = rendererInstance.render();
|
||||||
} else {
|
} else {
|
||||||
renderedElement = <NewComponentRenderer key={refreshKey} {...rendererProps} />;
|
renderedElement = <NewComponentRenderer key={refreshKey} {...rendererProps} />;
|
||||||
|
|
@ -1010,7 +1012,9 @@ export const DynamicComponentRenderer: React.FC<DynamicComponentRendererProps> =
|
||||||
const labelFontSize = component.style?.labelFontSize || "14px";
|
const labelFontSize = component.style?.labelFontSize || "14px";
|
||||||
const labelColor = getAdaptiveLabelColor(component.style?.labelColor);
|
const labelColor = getAdaptiveLabelColor(component.style?.labelColor);
|
||||||
const labelFontWeight = component.style?.labelFontWeight || "500";
|
const labelFontWeight = component.style?.labelFontWeight || "500";
|
||||||
const isRequired = effectiveComponent.required || isColumnRequiredByMeta(screenTableName, baseColumnName);
|
const isRequired =
|
||||||
|
effectiveComponent.required ||
|
||||||
|
isColumnRequiredByMeta(screenTableName ?? "", baseColumnName ?? "");
|
||||||
const isLeft = labelPosition === "left";
|
const isLeft = labelPosition === "left";
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -1044,7 +1048,8 @@ export const DynamicComponentRenderer: React.FC<DynamicComponentRendererProps> =
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 레거시 시스템에서 조회
|
// 2. 레거시 시스템에서 조회
|
||||||
const renderer = legacyComponentRegistry.get(componentType);
|
const renderer =
|
||||||
|
componentType != null ? legacyComponentRegistry.get(componentType) : undefined;
|
||||||
|
|
||||||
if (!renderer) {
|
if (!renderer) {
|
||||||
console.error(`⚠️ 등록되지 않은 컴포넌트 타입: ${componentType}`, {
|
console.error(`⚠️ 등록되지 않은 컴포넌트 타입: ${componentType}`, {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue