import type { DebugPublishMeta } from '../../utils/debugPublish'; import { inferGradeFromAge } from '../../utils/debugPublish'; import { LETTER_TRACING_WORKSHEET_DEFINITIONS } from '../../config/worksheets/letterTracing'; export { LETTER_TRACING_WORKSHEET_DEFINITIONS }; type LetterTracingWorksheetRow = (typeof LETTER_TRACING_WORKSHEET_DEFINITIONS)[number]; const LETTER_TRACING_WORKSHEET_BY_ID = Object.fromEntries( LETTER_TRACING_WORKSHEET_DEFINITIONS.map((m) => [m.id, m]), ) as Record; /** 页面渲染用:模式选择器列表(与 `LETTER_TRACING_WORKSHEET_DEFINITIONS` 同义) */ export const LETTER_TRACING_MODE_OPTIONS = LETTER_TRACING_WORKSHEET_DEFINITIONS; /** 页面 pageInfoLookup 用 */ export function getModeInfo(id: string) { const m = LETTER_TRACING_WORKSHEET_BY_ID[id]; return m ? { title: m.title, desc: m.subtitle } : undefined; } /** 判断 id 是否有效 */ export function isValidMode(id: string): boolean { return id in LETTER_TRACING_WORKSHEET_BY_ID; } /** 发布用:从当前 mode 生成 DebugPublishMeta */ export function getPublishMetaByMode(id: string): DebugPublishMeta | null { const m = LETTER_TRACING_WORKSHEET_BY_ID[id]; if (!m) return null; return { id: m.id, title: m.title, subtitle: m.subtitle, category: 'english', subcategory: 'letter-tracing', path: `/englishPages/letterTracing/letterTracing?id=${m.id}`, ageMin: m.ageMin, ageMax: m.ageMax, grade: inferGradeFromAge(m.ageMin, m.ageMax), difficulty: m.difficulty, previewImg: '', tags: [...m.tags], isNew: false, isHot: false, sortOrder: m.sortOrder, status: 'draft', }; }