/** * — 보드 생성 wizard. * * 세 가지 모드: * 처음부터 (blank / template) — 빈 캔버스 또는 기존 템플릿으로 새 보드 생성. * 도면 업로드 (new) — DXF / 이미지 업로드 → board-import 파이프라인으로 자동 변환. * 기존 파일 (existing) — 이미 업로드된 Attachment 에서 보드 생성. */ import '@material/web/icon/icon.js'; import '@operato/input/ox-input-file.js'; import { type PropertyValues } from 'lit'; import { PageView } from '@operato/shell'; import '@operato/board/ox-board-preview.js'; declare const BoardCreateWizardPage_base: (new (...args: any[]) => import("lit").LitElement) & typeof PageView; export declare class BoardCreateWizardPage extends BoardCreateWizardPage_base { static styles: import("lit").CSSResult[]; /** 현재 wizard 단계. URL/params 와는 독립 — 페이지 안 state 만으로 진행. */ private _step; /** 업로드 후 받은 Attachment 정보. */ private _attachment?; /** importBoardAsync 결과 ImportSession. polling 시 갱신. */ private _session?; /** 현재 업로드 진행 중 — UI lock + spinner. */ private _uploading; private _uploadProgress?; /** 업로드 에러 메시지 — UI 표시 + 사용자가 다시 시도 가능. */ private _uploadError?; /** upload 스텝 안의 모드 — 새 파일 업로드 vs 기존 attachment 선택. */ private _uploadMode; /** 기존 파일 목록 (모드 전환 시 lazy fetch). */ private _browseItems; /** 기존 파일 목록 로딩 / 검색 상태. */ private _browseLoading; private _browseSearch; /** 사용자가 도면에 대해 추가하는 자유서술 — VLM 에 hint 로 전달. */ private _userPrompt; /** 템플릿 목록 (template 탭 진입 시 lazy fetch). */ private _templates; private _templatesLoading; private _templatesLoaded; private _templateSearch; /** 템플릿 모드 — 선택된 템플릿 (id, model, thumbnail). */ private _selectedTemplate; /** 보드 그룹 목록 (lazy fetch). */ private _groups; private _groupsLoaded; /** 새 보드의 group / type — 모든 모드 공통. */ private _selectedGroupId; private _selectedBoardType; /** import 진행 / polling 에러. */ private _importError?; /** polling timer id — disconnect 시 취소. */ private _pollingTimer?; /** review step — 새 Board 이름 (짧고 심플). */ private _newBoardName; /** review step — 새 Board 설명 (자세한 narrative). */ private _newBoardDescription; /** review step — 사용자가 선택한 시안 id. 미선택 시 default (첫 variant). */ private _selectedVariantId; /** materialize 진행 중 — 중복 클릭 방지. */ private _materializing; /** materialize 결과 Board id — done step 에서 모델러로 navigate 시 사용. */ private _newBoardId?; /** materialize / done 단계 에러. */ private _materializeError?; /** wizard 제목 / 설명 — page header 에 노출. */ get context(): { title: string; board_topmenu: boolean; }; render(): import("lit-html").TemplateResult<1>; private _renderModeTabs; private _renderFileWizard; private _renderStepper; private _renderFileUploadUI; /** "처음부터" 탭 — 빈 보드 생성 전용 단순 폼. 템플릿 없음. */ private _renderFromScratchTab; /** "템플릿" 탭 — existing files와 동일한 browse-item 카드 스타일. */ private _renderFromTemplateTab; /** 공통 보드 생성 폼 (blank / template 모드 공유). */ private _renderBoardForm; private _renderNewUpload; private _renderBrowseExisting; /** * 선택된 attachment 의 미리보기 + 변환 시작 버튼. 두 모드 (new/existing) 공통 렌더링. * 이미지 mimetype 이면 실제 이미지를 띄우고, 아니면 메타정보 카드만. * 추가로 사용자 prompt textarea — VLM 의 view type 분류 + entity 추출에 hint 로 합류. */ private _renderSelectedPreview; private _isImageMime; private _setUploadMode; private _loadGroups; private _loadTemplates; private _selectTemplate; /** * 기존 attachment 목록 fetch — 이미지 + DXF 만 (mimetype prefix 'image' 1차 + 검색은 파일명). * mimetype 단일 prefix 만 지원하는 백엔드 한계로 image / application 분리 query 가 필요하지만, * MVP 는 두 번 fetch 해서 합치는 단순 방식. */ private _refreshBrowse; private _selectExisting; private _uploadFile; private _resetUpload; private _proceedToImport; /** * polling — 1초 간격으로 fetchImportSession. * - status='completed' → review step * - status='failed' → error 표시 + 재시도 가능 * - 그 외 → progress UI 갱신 후 다시 polling * * 취소 시점: pollingTimer 명시 clear (다음 단계 진입 / 페이지 떠남). */ private _startPolling; private _stopPolling; private _renderProgressStep; private _statusLabel; private _retryFromUpload; disconnectedCallback(): void; /** * step 이나 session 변경 시 polling 상태 동기화. step='progress' + session 존재 + 종료 안된 * 상태에서만 polling 활성화. 그 외 상태로 진입하면 자동 정리. */ updated(changes: PropertyValues): void; private _renderReviewStep; /** 파일 import 모드 여부 — true 면 variants/AI 분석 표시, false 면 단순 정보 입력. */ private _isFileMode; /** review 의 파일 모드 본문 — variants picker + AI 분석 + 큰 preview + stats + warnings. */ private _renderFileReviewBody; /** * 사용자가 선택한 시안 — _selectedVariantId 우선, 없으면 result.defaultVariantId, 없으면 첫 시안. */ private _getSelectedVariant; /** * 3 시안 picker — 썸네일 + 라벨 + 클릭 시 선택. 시안이 1개 이하면 안 그림. * 사용자가 다른 시안 선택 시 _selectedVariantId 갱신 → re-render → 큰 preview / stats / 추천 갱신. */ private _renderVariantPicker; private _onSelectVariant; private _onRegenerateVariants; /** * AI 분석 요약 카드 — VLM 이 도면을 어떻게 이해했고 어떤 관점으로 import 를 진행했는지 * 사용자 review 에 노출. metadata 가 비어있으면 (DXF 임포트 등 VLM 미사용 경로) 카드 자체 생략. * * selected variant 의 importStrategy / subjectName / subjectDescription 은 시안별 전용. */ private _renderAISummary; /** 사용자 입력 또는 첨부파일 이름 (확장자 제거) 을 fallback. 빈 input 일 때만 fallback. */ private _effectiveName; private _materialize; private _renderDoneStep; private _goToModeller; private _formatSize; pageUpdated(_changes: PropertyValues, _lifecycle: any): void; /** wizard 모든 state 를 초기값으로 — 'done' 후 재진입 / 처음부터 시작 시 사용. */ private _resetAll; } export {};