feat: 拼音描红和默写一
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
import { MOCK_SEED_COUNTS } from './mockLikes';
|
||||
import { MATH_WORKSHEET_DEFINITIONS } from '../../mathPages/mathDraw/mathDraw.config';
|
||||
import { FOCUS_WORKSHEET_DEFINITIONS } from '../../focusPages/focusDraw/focusDraw.config';
|
||||
import { LETTER_TRACING_WORKSHEET_DEFINITIONS } from '../../englishPages/letterTracing/letterTracing.config';
|
||||
import { PINYIN_DICTATION_MODE_OPTIONS } from '../../pinyinPages/pinyinDictation/pinyinDictation.config';
|
||||
|
||||
type CloudFunctionResult<T> = {
|
||||
success?: boolean;
|
||||
@@ -47,29 +51,28 @@ function inferGradeFromAge(ageMin: number, ageMax: number): number {
|
||||
return ageGradeMap[centerAge] ?? 0;
|
||||
}
|
||||
|
||||
type ConfigModule = Record<string, readonly LocalDef[] | unknown>;
|
||||
|
||||
type ConfigSource = {
|
||||
label: string;
|
||||
modulePath: string;
|
||||
exportName: string;
|
||||
data: readonly LocalDef[];
|
||||
};
|
||||
|
||||
const CONFIG_SOURCES: ConfigSource[] = [
|
||||
{
|
||||
label: 'math',
|
||||
modulePath: '../../mathPages/mathDraw/mathDraw.config',
|
||||
exportName: 'MATH_WORKSHEET_DEFINITIONS',
|
||||
data: MATH_WORKSHEET_DEFINITIONS as unknown as LocalDef[],
|
||||
},
|
||||
{
|
||||
label: 'focus',
|
||||
modulePath: '../../focusPages/focusDraw/focusDraw.config',
|
||||
exportName: 'FOCUS_WORKSHEET_DEFINITIONS',
|
||||
data: FOCUS_WORKSHEET_DEFINITIONS as unknown as LocalDef[],
|
||||
},
|
||||
{
|
||||
label: 'letterTracing',
|
||||
modulePath: '../../englishPages/letterTracing/letterTracing.config',
|
||||
exportName: 'LETTER_TRACING_WORKSHEET_DEFINITIONS',
|
||||
data: LETTER_TRACING_WORKSHEET_DEFINITIONS as unknown as LocalDef[],
|
||||
},
|
||||
{
|
||||
label: 'pinyin',
|
||||
data: PINYIN_DICTATION_MODE_OPTIONS as unknown as LocalDef[],
|
||||
},
|
||||
];
|
||||
|
||||
@@ -85,8 +88,7 @@ function isLocalDef(value: unknown): value is LocalDef {
|
||||
}
|
||||
|
||||
async function loadConfigSource(source: ConfigSource): Promise<LocalDef[]> {
|
||||
const mod = (await require.async(source.modulePath)) as ConfigModule;
|
||||
const rows = mod[source.exportName];
|
||||
const rows = source.data;
|
||||
|
||||
if (!Array.isArray(rows) || !rows.every(isLocalDef)) {
|
||||
throw new Error(`${source.label} 配置格式不正确`);
|
||||
|
||||
Reference in New Issue
Block a user