[agent-pipeline] pipe-20260317054958-cypk round-6

This commit is contained in:
DDD1542 2026-03-17 15:18:41 +09:00
parent d8a542b253
commit 80cd95e683
1 changed files with 13 additions and 8 deletions

View File

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