import { Domain } from '@things-factory/shell'; import { Group } from '../group/group.js'; import { PlayGroup } from '../play-group/play-group.js'; import { User } from '@things-factory/auth-base'; export declare class Board { readonly id?: string; version?: number; domain?: Domain; domainId?: string; name?: string; description?: string; type?: 'main' | 'sub' | 'popup'; state?: 'draft' | 'released'; model?: string; thumbnail?: string; /** * Thumbnail 이 *thumbnail 로서* 마지막으로 갱신된 시각. board.updatedAt 과는 별개 * 도메인 — 메타데이터(name/description) 변경 시에는 갱신되지 않는다. * * 용도: * - 클라이언트 image cache-bust: `/thumbnail/{id}?v={thumbnailUpdatedAt}` * - subscription/pubsub push 알림 payload * - 운영/분석: stale thumbnail 감지, 자동 재생성 정책 * * Legacy 데이터는 NULL (마이그레이션은 컬럼만 추가, 기존 행은 채우지 않음). * 새 thumbnail 이 만들어지는 시점부터 점진적으로 채워진다. */ thumbnailUpdatedAt?: Date; sortOrder?: number; /** * 이 보드를 zero-to-twin import 로 만든 경우 source ImportSession.id 참조. * 일반 사용자 작성 보드는 null. board-import 패키지의 ImportSession entity 와 약결합 — * 모듈 의존을 강제하지 않기 위해 ManyToOne 대신 단순 string id 만 보관. */ sourceImportSessionId?: string; group?: Group; groupId?: string; playGroups?: PlayGroup[]; createdAt?: Date; updatedAt?: Date; creator?: User; creatorId?: string; updater?: User; updaterId?: string; deletedAt?: Date; }