- Added new API endpoints for mold management, including CRUD operations for molds, mold serials, inspections, and parts. - Created the `moldRoutes` to handle requests related to mold management. - Developed the `moldController` to manage the business logic for mold operations, ensuring proper company code filtering for data access. - Integrated frontend API calls for mold management, allowing users to interact with the mold data seamlessly. - Introduced a new component for displaying status counts, enhancing the user interface for monitoring mold statuses. These additions improve the overall functionality and user experience in managing molds within the application.
184 lines
7.8 KiB
TypeScript
184 lines
7.8 KiB
TypeScript
"use client";
|
|
|
|
import { ComponentRegistry } from "../ComponentRegistry";
|
|
import { initializeHotReload } from "../utils/hotReload";
|
|
|
|
/**
|
|
* 컴포넌트 시스템 초기화
|
|
* 모든 컴포넌트를 자동으로 로드하고 등록합니다
|
|
*/
|
|
|
|
// 컴포넌트 자동 디스커버리 및 로드
|
|
// 현재는 수동 import 방식 사용 (향후 자동 디스커버리로 확장 예정)
|
|
|
|
/**
|
|
* 새 구조 컴포넌트들 (자동 등록)
|
|
* CLI로 생성된 컴포넌트들은 여기에 import만 추가하면 자동으로 등록됩니다
|
|
*/
|
|
|
|
// 기본 입력 컴포넌트들 (v2 버전 없음 - 유지)
|
|
import "./text-input/TextInputRenderer";
|
|
import "./textarea-basic/TextareaBasicRenderer";
|
|
import "./number-input/NumberInputRenderer";
|
|
import "./select-basic/SelectBasicRenderer";
|
|
import "./checkbox-basic/CheckboxBasicRenderer";
|
|
import "./radio-basic/RadioBasicRenderer";
|
|
import "./date-input/DateInputRenderer";
|
|
import "./file-upload/FileUploadRenderer";
|
|
import "./image-widget/ImageWidgetRenderer";
|
|
import "./slider-basic/SliderBasicRenderer";
|
|
import "./toggle-switch/ToggleSwitchRenderer";
|
|
import "./image-display/ImageDisplayRenderer";
|
|
import "./accordion-basic/AccordionBasicRenderer"; // 컴포넌트 패널에서만 숨김
|
|
import "./split-panel-layout2/SplitPanelLayout2Renderer"; // 분할 패널 레이아웃 v2
|
|
import "./map/MapRenderer";
|
|
import "./repeater-field-group/RepeaterFieldGroupRenderer";
|
|
import "./flow-widget/FlowWidgetRenderer";
|
|
import "./category-manager/CategoryManagerRenderer";
|
|
import "./customer-item-mapping/CustomerItemMappingRenderer"; // 거래처별 품목정보
|
|
|
|
// 수주 등록 관련 컴포넌트들 (v2 버전 없음 - 유지)
|
|
import "./autocomplete-search-input/AutocompleteSearchInputRenderer";
|
|
import "./entity-search-input/EntitySearchInputRenderer";
|
|
import "./modal-repeater-table/ModalRepeaterTableRenderer";
|
|
import "./simple-repeater-table/SimpleRepeaterTableRenderer"; // 단순 반복 테이블
|
|
|
|
// 조건부 컨테이너 컴포넌트
|
|
import "./conditional-container/ConditionalContainerRenderer"; // 컴포넌트 패널에서만 숨김
|
|
import "./selected-items-detail-input/SelectedItemsDetailInputRenderer";
|
|
|
|
// 화면 임베딩 및 분할 패널 컴포넌트
|
|
import "./screen-split-panel/ScreenSplitPanelRenderer"; // 화면 분할 패널 (좌우 화면 임베딩 + 데이터 전달)
|
|
|
|
// 범용 폼 모달 컴포넌트
|
|
import "./universal-form-modal/UniversalFormModalRenderer"; // 컴포넌트 패널에서만 숨김
|
|
|
|
// 세금계산서 관리 컴포넌트
|
|
import "./tax-invoice-list/TaxInvoiceListRenderer"; // 세금계산서 목록, 작성, 발행, 취소
|
|
|
|
// 메일 수신자 선택 컴포넌트
|
|
import "./mail-recipient-selector/MailRecipientSelectorRenderer"; // 내부 인원 선택 + 외부 이메일 입력
|
|
|
|
// 연관 데이터 버튼 컴포넌트
|
|
import "./related-data-buttons/RelatedDataButtonsRenderer"; // 좌측 선택 데이터 기반 연관 테이블 버튼 표시
|
|
|
|
// ============================================================
|
|
// 기존 컴포넌트들 (기존 화면 호환성 유지)
|
|
// V2 버전도 별도로 존재하지만, 기존 화면은 이 컴포넌트들을 사용
|
|
// ============================================================
|
|
import "./button-primary/ButtonPrimaryRenderer";
|
|
import "./text-display/TextDisplayRenderer";
|
|
import "./divider-line/DividerLineRenderer";
|
|
import "./table-list/TableListRenderer";
|
|
import "./card-display/CardDisplayRenderer";
|
|
import "./split-panel-layout/SplitPanelLayoutRenderer";
|
|
import "./numbering-rule/NumberingRuleRenderer";
|
|
import "./table-search-widget";
|
|
import "./repeat-screen-modal/RepeatScreenModalRenderer";
|
|
import "./section-paper/SectionPaperRenderer";
|
|
import "./section-card/SectionCardRenderer";
|
|
import "./tabs/tabs-component";
|
|
import "./location-swap-selector/LocationSwapSelectorRenderer";
|
|
import "./rack-structure/RackStructureRenderer";
|
|
import "./pivot-grid/PivotGridRenderer";
|
|
import "./aggregation-widget/AggregationWidgetRenderer";
|
|
import "./repeat-container/RepeatContainerRenderer";
|
|
|
|
// ============================================================
|
|
// V2 컴포넌트들 (화면관리 전용 - 충돌 방지용 별도 버전)
|
|
// ============================================================
|
|
import "./v2-repeater/V2RepeaterRenderer";
|
|
import "./v2-button-primary/ButtonPrimaryRenderer";
|
|
import "./v2-split-panel-layout/SplitPanelLayoutRenderer";
|
|
import "./v2-aggregation-widget/AggregationWidgetRenderer";
|
|
import "./v2-card-display/CardDisplayRenderer";
|
|
import "./v2-numbering-rule/NumberingRuleRenderer";
|
|
import "./v2-table-list/TableListRenderer";
|
|
import "./v2-text-display/TextDisplayRenderer";
|
|
import "./v2-pivot-grid/PivotGridRenderer";
|
|
import "./v2-divider-line/DividerLineRenderer";
|
|
import "./v2-repeat-container/RepeatContainerRenderer";
|
|
import "./v2-section-card/SectionCardRenderer";
|
|
import "./v2-section-paper/SectionPaperRenderer";
|
|
import "./v2-rack-structure/RackStructureRenderer";
|
|
import "./v2-location-swap-selector/LocationSwapSelectorRenderer";
|
|
import "./v2-table-search-widget";
|
|
import "./v2-tabs-widget/tabs-component";
|
|
import "./v2-category-manager/V2CategoryManagerRenderer";
|
|
import "./v2-media/V2MediaRenderer"; // V2 통합 미디어 컴포넌트
|
|
import "./v2-table-grouped/TableGroupedRenderer"; // 그룹화 테이블
|
|
import "./v2-timeline-scheduler/TimelineSchedulerRenderer"; // 타임라인 스케줄러
|
|
import "./v2-input/V2InputRenderer"; // V2 통합 입력 컴포넌트
|
|
import "./v2-select/V2SelectRenderer"; // V2 통합 선택 컴포넌트
|
|
import "./v2-date/V2DateRenderer"; // V2 통합 날짜 컴포넌트
|
|
import "./v2-file-upload/V2FileUploadRenderer"; // V2 파일 업로드 컴포넌트
|
|
import "./v2-process-work-standard/ProcessWorkStandardRenderer"; // 공정 작업기준
|
|
import "./v2-item-routing/ItemRoutingRenderer"; // 품목별 라우팅
|
|
import "./v2-split-line/SplitLineRenderer"; // V2 캔버스 분할선
|
|
import "./v2-bom-tree/BomTreeRenderer"; // BOM 트리 뷰
|
|
import "./v2-bom-item-editor/BomItemEditorRenderer"; // BOM 하위품목 편집기
|
|
import "./v2-approval-step/ApprovalStepRenderer"; // 결재 단계 시각화
|
|
import "./v2-status-count/StatusCountRenderer"; // 상태별 카운트 카드
|
|
|
|
/**
|
|
* 컴포넌트 초기화 함수
|
|
*/
|
|
export async function initializeComponents() {
|
|
try {
|
|
// 1. 자동 등록된 컴포넌트 확인
|
|
const registeredComponents = ComponentRegistry.getAllComponents();
|
|
|
|
// 2. 카테고리별 통계
|
|
const stats = ComponentRegistry.getStats();
|
|
|
|
// 3. 개발 모드에서 디버그 정보 출력
|
|
if (process.env.NODE_ENV === "development") {
|
|
ComponentRegistry.debug();
|
|
|
|
// 4. Hot Reload 시스템 초기화
|
|
initializeHotReload();
|
|
}
|
|
|
|
return {
|
|
success: true,
|
|
totalComponents: registeredComponents.length,
|
|
stats,
|
|
};
|
|
} catch (error) {
|
|
console.error("❌ 컴포넌트 시스템 초기화 실패:", error);
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 컴포넌트 시스템 상태 확인
|
|
*/
|
|
export function getComponentSystemStatus() {
|
|
return {
|
|
isInitialized: ComponentRegistry.getComponentCount() > 0,
|
|
componentCount: ComponentRegistry.getComponentCount(),
|
|
categories: ComponentRegistry.getStats().byCategory,
|
|
lastInitialized: new Date(),
|
|
};
|
|
}
|
|
|
|
// 즉시 초기화 실행 (브라우저 환경에서만)
|
|
if (typeof window !== "undefined") {
|
|
// DOM이 로드된 후 초기화
|
|
if (document.readyState === "loading") {
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
initializeComponents();
|
|
});
|
|
} else {
|
|
// 이미 로드된 경우 즉시 실행
|
|
setTimeout(initializeComponents, 0);
|
|
}
|
|
}
|
|
|
|
// 개발 모드에서 Hot Reload 지원
|
|
if (process.env.NODE_ENV === "development" && typeof window !== "undefined") {
|
|
// 전역 함수로 등록하여 개발자가 브라우저에서 직접 호출 가능
|
|
(window as any).__INIT_COMPONENTS__ = initializeComponents;
|
|
(window as any).__COMPONENT_STATUS__ = getComponentSystemStatus;
|
|
}
|