@@ -0,0 +1,156 @@
import { WorksheetType } from '../models/worksheet' ;
/**
* MathFunctionType - 保持向后兼容
*/
export interface MathFunctionType {
id : string ;
page? : string ;
title : string ;
desc : string ;
icon? : string ;
img? : string ;
}
/**
* FocusFunctionType - 保持向后兼容
*/
export interface FocusFunctionType {
id : string ;
page? : string ;
title : string ;
desc : string ;
icon : string ;
mode? : string ;
img? : string ;
}
// prettier-ignore
export const MATH_FUNCTION_TYPES : MathFunctionType [ ] = [
{ id : 'number-sort' , page : 'numberSort' , title : '数字排序' , desc : '数字排序,写出正确顺序' , icon : '🔢' , img : '/assets/mathEntrance/number-sort.png' } ,
{ id : 'one-digit-addition' , page : 'oneDigitAddition' , title : '一位数加法' , desc : '通过圆点学习一位数加法运算' , icon : '➕ ' , img : '/assets/mathEntrance/one-digit-addition.png' } ,
{ id : 'make-ten' , page : 'makeTen' , title : '凑十法练习' , desc : '通过凑十法学习20以内进位加法' , icon : '➕ ' , img : '/assets/mathEntrance/make-ten.png' } ,
{ id : 'break-ten' , page : 'breakTen' , title : '破十法练习' , desc : '通过破十法学习20以内退位减法' , icon : '➖ ' , img : '/assets/mathEntrance/break-ten.png' } ,
{ id : 'flat-ten' , page : 'flatTen' , title : '平十法练习' , desc : '通过平十法学习20以内退位减法' , icon : '➖ ' , img : '/assets/mathEntrance/flat-ten.png' } ,
{ id : 'borrow-ten' , page : 'borrowTen' , title : '借十法练习' , desc : '通过借十法学习20以上退位减法' , icon : '➖ ' , img : '/assets/mathEntrance/borrow-ten.png' } ,
{ id : 'number-decompose-20' , page : 'numberDecompose' , title : '20以内数的分与合' , desc : '把数字分一分,合一合' , icon : '🔢' , img : '/assets/mathEntrance/number-decompose-20.png' } ,
{ id : 'number-decompose' , page : 'numberDecompose' , title : '10以内数的分与合' , desc : '把数字分一分,合一合' , icon : '🔢' , img : '/assets/mathEntrance/number-decompose.png' } ,
{ id : 'number-find' , page : 'numberFind' , title : '找数字,涂一涂' , desc : '找一找下面相同的数字,涂上颜色' , img : '/assets/mathEntrance/number-find.png' } ,
{ id : 'number-write' , page : 'numberFind' , title : '看数字,写一写' , desc : '看数字,按笔画顺序写一写' , img : '/assets/mathEntrance/number-write.png' } ,
{ id : 'number-coloring' , page : 'countMatch' , title : '按数字,涂颜色' , desc : '按数字给相应的圆圈涂上颜色' , icon : '🎨' , img : '/assets/mathEntrance/number-coloring.png' } ,
{ id : 'counting-matching' , page : 'countMatch' , title : '数一数,连一连' , desc : '通过连线配对数字和对应的数量图形' , icon : '🔗' , img : '/assets/mathEntrance/count-match.png' } ,
{ id : 'number-object-match' , page : 'numberObjectMatch' , title : '数物连线' , desc : '连线相同数量的物品和数字' , icon : '🔗' , img : '/assets/mathEntrance/number-object-match.png' } ,
{ id : 'number-object-fill' , page : 'numberObjectMatch' , title : '数物填写' , desc : '数一数物品数量,填写对应的数字' , icon : '✏️' , img : '/assets/mathEntrance/number-object-fill.png' } ,
{ id : 'counting-select' , page : 'countingSelect' , title : '数一数,选一选' , desc : '数出物品数量,圈出正确答案' , icon : '✓' , img : '/assets/mathEntrance/counting-select.png' } ,
{ id : 'counting-fill' , page : 'countingSelect' , title : '数一数,填一填' , desc : '数出物品数量,填写对应的数字' , icon : '✏️' , img : '/assets/mathEntrance/counting-fill.png' } ,
{ id : 'compare' , page : 'compare' , title : '数一数,比大小' , desc : '比较数量大小,在 ⭕️ 中填入>、<、=' , icon : '⚖️' , img : '/assets/mathEntrance/compare.png' } ,
{ id : 'missing-number' , page : 'missingNumber' , title : '填上缺少的数字' , desc : '在数字序列中找出并填写缺失的数字' , icon : '❓' , img : '/assets/mathEntrance/missing-number.png' } ,
{ id : 'addition-5' , page : 'addition' , title : '5以内加法' , desc : '练习5以内的加法运算,图形化展示' , icon : '➕ ' , img : '/assets/mathEntrance/addition-5.png' } ,
{ id : 'addition-10' , page : 'addition' , title : '10以内加法' , desc : '练习10以内的加法运算,图形化展示' , icon : '➕ ' , img : '/assets/mathEntrance/addition-10.png' } ,
{ id : 'subtraction-10' , page : 'addition' , title : '10以内减法' , desc : '练习10以内的减法运算,图形化展示' , icon : '➖ ' , img : '/assets/mathEntrance/subtraction-10.png' } ,
{ id : 'addition-subtraction-10' , page : 'addition' , title : '10以内加减法' , desc : '练习10以内的加法和减法混合运算' , icon : '±' , img : '/assets/mathEntrance/addition-subtraction-10.png' } ,
{ id : 'practice-addition' , page : 'calculationPractice' , title : '加法运算' , desc : '练习10/20/50/100以内加法运算' , icon : '➕ ' , img : '/assets/mathEntrance/practice-addition.png' } ,
{ id : 'practice-subtraction' , page : 'calculationPractice' , title : '减法运算' , desc : '练习10/20/50/100以内减法运算' , icon : '➖ ' , img : '/assets/mathEntrance/practice-subtraction.png' } ,
{ id : 'practice-mixed' , page : 'calculationPractice' , title : '混合运算' , desc : '练习10/20/50/100以内加减法混合运算' , icon : '±' , img : '/assets/mathEntrance/practice-mixed.png' } ,
{ id : 'multiplication-table' , page : 'multiplicationTable' , title : '九九乘法表' , desc : '学习九九乘法口诀' , icon : '✖️' , img : '/assets/mathEntrance/multiplication-table.png' } ,
] ;
// prettier-ignore
export const FOCUS_FUNCTION_TYPES : FocusFunctionType [ ] = [
{ id : 'color-shape-match' , page : 'colorShapeMatch' , title : '根据颜色画图形' , desc : '根据颜色画出对应的图形' , icon : '🎯' , img : '/assets/focusEntrance/color-shape-match.png' } ,
{ id : 'shape-symbol' , page : 'shapeSymbol' , title : '图形符号配对' , desc : '根据图形画对应的符号' , icon : '🔗' , img : '/assets/focusEntrance/shape-symbol.png' } ,
{ id : 'shape-recognition' , page : 'shape' , title : '识别形状' , desc : '识别形状,涂一涂' , icon : '🔍' , img : '/assets/focusEntrance/shape-recognition.png' } ,
{ id : 'position-coloring' , page : 'positionColoring' , title : '方位涂涂乐' , desc : '观察卡片位置,在对应的方格中涂上颜色' , icon : '📍' , img : '/assets/focusEntrance/position-coloring.png' } ,
{ id : 'color-pattern' , page : 'colorPattern' , title : '颜色找规律' , desc : '观察颜色规律,在空白图形中涂上颜色' , icon : '🎨' , img : '/assets/focusEntrance/color-pattern.png' } ,
{ id : 'match-connect' , page : 'matchConnect' , title : '连连看' , desc : '快来根据物品连一连吧!' , icon : '🔗' , img : '/assets/focusEntrance/match-connect.png' } ,
{ id : 'line-recognition' , page : 'lineRecognition' , title : '线条识别' , desc : '认识不同线条,画出颜色对应的线条' , icon : '📏' , img : '/assets/focusEntrance/line-recognition.png' } ,
{ id : 'grid-reasoning' , page : 'gridReasoning' , title : '方格推理' , desc : '仔细观察,推理出合并方格并连线' , icon : '🧩' , img : '/assets/focusEntrance/grid-reasoning.png' } ,
{ id : 'code-connect' , page : 'codeConnect' , title : '译码连线' , desc : '按照数字顺序,将数字对应的颜色连线' , icon : '🔢' , img : '/assets/focusEntrance/code-connect.png' } ,
{ id : 'dot-connect' , page : 'dotConnect' , title : '数字点连线' , desc : '按数字顺序连点' , icon : '🔗' , img : '/assets/focusEntrance/dot-connect.png' } ,
{ id : 'grid-drawing-3x3' , page : 'gridDrawing' , title : '格子仿画 3x3' , desc : '🎯 简单有趣,培养专注力' , icon : '🎨' , mode : '3x3' , img : '/assets/focusEntrance/grid-drawing-3x3.png' } ,
{ id : 'grid-drawing-5x5' , page : 'gridDrawing' , title : '格子仿画 5x5' , desc : '✨ 创意挑战,提升观察力' , icon : '🎨' , mode : '5x5' , img : '/assets/focusEntrance/grid-drawing-5x5.png' } ,
{ id : 'grid-drawing-7x7' , page : 'gridDrawing' , title : '格子仿画 7x7' , desc : '🌟 大师挑战,锻炼耐心' , icon : '🎨' , mode : '7x7' , img : '/assets/focusEntrance/grid-drawing-7x7.png' } ,
] ;
/**
* 统一的 WorksheetType 列表 - 合并所有分类
* 用于新版首页和分类页展示
*/
// prettier-ignore
export const ALL_WORKSHEETS : WorksheetType [ ] = [
// === 数学 ===
{ id : 'number-sort' , title : '数字排序' , desc : '数字排序,写出正确顺序' , category : 'math' , page : 'numberSort' , subpackage : 'mathPages' , icon : '🔢' , img : '/assets/mathEntrance/number-sort.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#fff3e0' , previewText : '1→2→3' } ,
{ id : 'one-digit-addition' , title : '一位数加法' , desc : '通过圆点学习一位数加法运算' , category : 'math' , page : 'oneDigitAddition' , subpackage : 'mathPages' , icon : '➕ ' , img : '/assets/mathEntrance/one-digit-addition.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#e3f2fd' , previewText : '2+3=?' } ,
{ id : 'make-ten' , title : '凑十法练习' , desc : '通过凑十法学习20以内进位加法' , category : 'math' , page : 'makeTen' , subpackage : 'mathPages' , icon : '➕ ' , img : '/assets/mathEntrance/make-ten.png' , ageRange : [ 5 , 7 ] , difficulty : 'intermediate' , previewBg : '#e3f2fd' , previewText : '7+?=10' } ,
{ id : 'break-ten' , title : '破十法练习' , desc : '通过破十法学习20以内退位减法' , category : 'math' , page : 'breakTen' , subpackage : 'mathPages' , icon : '➖ ' , img : '/assets/mathEntrance/break-ten.png' , ageRange : [ 5 , 7 ] , difficulty : 'intermediate' , previewBg : '#e3f2fd' , previewText : '15-8=?' } ,
{ id : 'flat-ten' , title : '平十法练习' , desc : '通过平十法学习20以内退位减法' , category : 'math' , page : 'flatTen' , subpackage : 'mathPages' , icon : '➖ ' , img : '/assets/mathEntrance/flat-ten.png' , ageRange : [ 5 , 7 ] , difficulty : 'intermediate' , previewBg : '#e3f2fd' , previewText : '14-6=?' } ,
{ id : 'borrow-ten' , title : '借十法练习' , desc : '通过借十法学习20以上退位减法' , category : 'math' , page : 'borrowTen' , subpackage : 'mathPages' , icon : '➖ ' , img : '/assets/mathEntrance/borrow-ten.png' , ageRange : [ 6 , 8 ] , difficulty : 'advanced' , previewBg : '#e3f2fd' , previewText : '32-8=?' } ,
{ id : 'number-decompose-20' , title : '20以内分与合' , desc : '把数字分一分,合一合' , category : 'math' , page : 'numberDecompose' , subpackage : 'mathPages' , icon : '🔢' , img : '/assets/mathEntrance/number-decompose-20.png' , ageRange : [ 5 , 7 ] , difficulty : 'basic' , previewBg : '#fff3e0' , previewText : '15=?+?' } ,
{ id : 'number-decompose' , title : '10以内分与合' , desc : '把数字分一分,合一合' , category : 'math' , page : 'numberDecompose' , subpackage : 'mathPages' , icon : '🔢' , img : '/assets/mathEntrance/number-decompose.png' , ageRange : [ 4 , 6 ] , difficulty : 'beginner' , previewBg : '#fff3e0' , previewText : '8=?+?' } ,
{ id : 'number-find' , title : '找数字涂一涂' , desc : '找一找下面相同的数字,涂上颜色' , category : 'math' , page : 'numberFind' , subpackage : 'mathPages' , img : '/assets/mathEntrance/number-find.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#fff3e0' , previewText : '🔍 1 2 3' } ,
{ id : 'number-write' , title : '看数字写一写' , desc : '看数字,按笔画顺序写一写' , category : 'math' , page : 'numberFind' , subpackage : 'mathPages' , img : '/assets/mathEntrance/number-write.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#fff3e0' , previewText : '1 2 3' } ,
{ id : 'number-coloring' , title : '按数字涂颜色' , desc : '按数字给相应的圆圈涂上颜色' , category : 'math' , page : 'countMatch' , subpackage : 'mathPages' , icon : '🎨' , img : '/assets/mathEntrance/number-coloring.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#fce4ec' , previewText : '🎨' } ,
{ id : 'counting-matching' , title : '数一数连一连' , desc : '通过连线配对数字和对应的数量图形' , category : 'math' , page : 'countMatch' , subpackage : 'mathPages' , icon : '🔗' , img : '/assets/mathEntrance/count-match.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#e8f5e9' , previewText : '3↔🍎🍎🍎' } ,
{ id : 'number-object-match' , title : '数物连线' , desc : '连线相同数量的物品和数字' , category : 'math' , page : 'numberObjectMatch' , subpackage : 'mathPages' , icon : '🔗' , img : '/assets/mathEntrance/number-object-match.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#e8f5e9' , previewText : '🔗' } ,
{ id : 'number-object-fill' , title : '数物填写' , desc : '数一数物品数量,填写对应的数字' , category : 'math' , page : 'numberObjectMatch' , subpackage : 'mathPages' , icon : '✏️' , img : '/assets/mathEntrance/number-object-fill.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#e8f5e9' , previewText : '✏️' } ,
{ id : 'counting-select' , title : '数一数选一选' , desc : '数出物品数量,圈出正确答案' , category : 'math' , page : 'countingSelect' , subpackage : 'mathPages' , icon : '✓' , img : '/assets/mathEntrance/counting-select.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#e8f5e9' , previewText : '✓' } ,
{ id : 'counting-fill' , title : '数一数填一填' , desc : '数出物品数量,填写对应的数字' , category : 'math' , page : 'countingSelect' , subpackage : 'mathPages' , icon : '✏️' , img : '/assets/mathEntrance/counting-fill.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#e8f5e9' , previewText : '✏️' } ,
{ id : 'compare' , title : '比大小' , desc : '比较数量大小,在 ⭕️ 中填入>、<、=' , category : 'math' , page : 'compare' , subpackage : 'mathPages' , icon : '⚖️' , img : '/assets/mathEntrance/compare.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#e3f2fd' , previewText : '3 ○ 5' } ,
{ id : 'missing-number' , title : '填缺少的数字' , desc : '在数字序列中找出并填写缺失的数字' , category : 'math' , page : 'missingNumber' , subpackage : 'mathPages' , icon : '❓' , img : '/assets/mathEntrance/missing-number.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#fff3e0' , previewText : '1_3_5' } ,
{ id : 'addition-5' , title : '5以内加法' , desc : '练习5以内的加法运算' , category : 'math' , page : 'addition' , subpackage : 'mathPages' , icon : '➕ ' , img : '/assets/mathEntrance/addition-5.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#e3f2fd' , previewText : '2+1=?' } ,
{ id : 'addition-10' , title : '10以内加法' , desc : '练习10以内的加法运算' , category : 'math' , page : 'addition' , subpackage : 'mathPages' , icon : '➕ ' , img : '/assets/mathEntrance/addition-10.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#e3f2fd' , previewText : '3+5=?' } ,
{ id : 'subtraction-10' , title : '10以内减法' , desc : '练习10以内的减法运算' , category : 'math' , page : 'addition' , subpackage : 'mathPages' , icon : '➖ ' , img : '/assets/mathEntrance/subtraction-10.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#e3f2fd' , previewText : '8-3=?' } ,
{ id : 'addition-subtraction-10' , title : '10以内加减法' , desc : '练习加法和减法混合运算' , category : 'math' , page : 'addition' , subpackage : 'mathPages' , icon : '±' , img : '/assets/mathEntrance/addition-subtraction-10.png' , ageRange : [ 5 , 7 ] , difficulty : 'basic' , previewBg : '#e3f2fd' , previewText : '±' } ,
{ id : 'practice-addition' , title : '加法运算' , desc : '练习10/20/50/100以内加法运算' , category : 'math' , page : 'calculationPractice' , subpackage : 'mathPages' , icon : '➕ ' , img : '/assets/mathEntrance/practice-addition.png' , ageRange : [ 5 , 8 ] , difficulty : 'intermediate' , previewBg : '#e3f2fd' , previewText : '25+18=?' } ,
{ id : 'practice-subtraction' , title : '减法运算' , desc : '练习10/20/50/100以内减法运算' , category : 'math' , page : 'calculationPractice' , subpackage : 'mathPages' , icon : '➖ ' , img : '/assets/mathEntrance/practice-subtraction.png' , ageRange : [ 5 , 8 ] , difficulty : 'intermediate' , previewBg : '#e3f2fd' , previewText : '43-17=?' } ,
{ id : 'practice-mixed' , title : '混合运算' , desc : '练习10/20/50/100以内加减法混合运算' , category : 'math' , page : 'calculationPractice' , subpackage : 'mathPages' , icon : '±' , img : '/assets/mathEntrance/practice-mixed.png' , ageRange : [ 5 , 8 ] , difficulty : 'intermediate' , previewBg : '#e3f2fd' , previewText : '±' } ,
{ id : 'multiplication-table' , title : '九九乘法表' , desc : '学习九九乘法口诀' , category : 'math' , page : 'multiplicationTable' , subpackage : 'mathPages' , icon : '✖️' , img : '/assets/mathEntrance/multiplication-table.png' , ageRange : [ 6 , 8 ] , difficulty : 'intermediate' , previewBg : '#f3e5f5' , previewText : '3× 4=12' } ,
// === 专注力 ===
{ id : 'color-shape-match' , title : '颜色画图形' , desc : '根据颜色画出对应的图形' , category : 'focus' , page : 'colorShapeMatch' , subpackage : 'focusPages' , icon : '🎯' , img : '/assets/focusEntrance/color-shape-match.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#f3e5f5' , previewText : '🎯' } ,
{ id : 'shape-symbol' , title : '图形符号配对' , desc : '根据图形画对应的符号' , category : 'focus' , page : 'shapeSymbol' , subpackage : 'focusPages' , icon : '🔗' , img : '/assets/focusEntrance/shape-symbol.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#e8eaf6' , previewText : '△→♠' } ,
{ id : 'shape-recognition' , title : '识别形状' , desc : '识别形状,涂一涂' , category : 'focus' , page : 'shape' , subpackage : 'focusPages' , icon : '🔍' , img : '/assets/focusEntrance/shape-recognition.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#fce4ec' , previewText : '△ ○ □' } ,
{ id : 'position-coloring' , title : '方位涂涂乐' , desc : '观察卡片位置,在对应的方格中涂上颜色' , category : 'focus' , page : 'positionColoring' , subpackage : 'focusPages' , icon : '📍' , img : '/assets/focusEntrance/position-coloring.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#e8f5e9' , previewText : '📍' } ,
{ id : 'color-pattern' , title : '颜色找规律' , desc : '观察颜色规律,在空白图形中涂上颜色' , category : 'focus' , page : 'colorPattern' , subpackage : 'focusPages' , icon : '🎨' , img : '/assets/focusEntrance/color-pattern.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#fff8e1' , previewText : '🎨' } ,
{ id : 'match-connect' , title : '连连看' , desc : '快来根据物品连一连吧!' , category : 'focus' , page : 'matchConnect' , subpackage : 'focusPages' , icon : '🔗' , img : '/assets/focusEntrance/match-connect.png' , ageRange : [ 3 , 6 ] , difficulty : 'beginner' , previewBg : '#e0f7fa' , previewText : '🔗' } ,
{ id : 'line-recognition' , title : '线条识别' , desc : '认识不同线条,画出颜色对应的线条' , category : 'focus' , page : 'lineRecognition' , subpackage : 'focusPages' , icon : '📏' , img : '/assets/focusEntrance/line-recognition.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#f1f8e9' , previewText : '〰️' } ,
{ id : 'grid-reasoning' , title : '方格推理' , desc : '仔细观察,推理出合并方格并连线' , category : 'focus' , page : 'gridReasoning' , subpackage : 'focusPages' , icon : '🧩' , img : '/assets/focusEntrance/grid-reasoning.png' , ageRange : [ 5 , 7 ] , difficulty : 'intermediate' , previewBg : '#e8eaf6' , previewText : '🧩' } ,
{ id : 'code-connect' , title : '译码连线' , desc : '按照数字顺序,将数字对应的颜色连线' , category : 'focus' , page : 'codeConnect' , subpackage : 'focusPages' , icon : '🔢' , img : '/assets/focusEntrance/code-connect.png' , ageRange : [ 5 , 7 ] , difficulty : 'intermediate' , previewBg : '#fff3e0' , previewText : '🔢' } ,
{ id : 'dot-connect' , title : '数字点连线' , desc : '按数字顺序连点' , category : 'focus' , page : 'dotConnect' , subpackage : 'focusPages' , icon : '🔗' , img : '/assets/focusEntrance/dot-connect.png' , ageRange : [ 3 , 6 ] , difficulty : 'beginner' , previewBg : '#e3f2fd' , previewText : '1→2→3' } ,
{ id : 'grid-drawing-3x3' , title : '格子仿画 3x3' , desc : '简单有趣,培养专注力' , category : 'focus' , page : 'gridDrawing' , subpackage : 'focusPages' , icon : '🎨' , mode : '3x3' , img : '/assets/focusEntrance/grid-drawing-3x3.png' , ageRange : [ 3 , 5 ] , difficulty : 'beginner' , previewBg : '#fce4ec' , previewText : '▦' } ,
{ id : 'grid-drawing-5x5' , title : '格子仿画 5x5' , desc : '创意挑战,提升观察力' , category : 'focus' , page : 'gridDrawing' , subpackage : 'focusPages' , icon : '🎨' , mode : '5x5' , img : '/assets/focusEntrance/grid-drawing-5x5.png' , ageRange : [ 4 , 6 ] , difficulty : 'basic' , previewBg : '#fce4ec' , previewText : '▦' } ,
{ id : 'grid-drawing-7x7' , title : '格子仿画 7x7' , desc : '大师挑战,锻炼耐心' , category : 'focus' , page : 'gridDrawing' , subpackage : 'focusPages' , icon : '🎨' , mode : '7x7' , img : '/assets/focusEntrance/grid-drawing-7x7.png' , ageRange : [ 5 , 8 ] , difficulty : 'intermediate' , previewBg : '#fce4ec' , previewText : '▦' } ,
// === 语文 ===
{ id : 'word-recognition' , title : '识字卡' , desc : '认识汉字,选字生成识字卡' , category : 'chinese' , page : 'index' , subpackage : '' , icon : '📖' , ageRange : [ 3 , 6 ] , difficulty : 'beginner' , previewBg : '#fce4ec' , previewText : '大 小' } ,
{ id : 'copybook' , title : '练字帖' , desc : '选字生成田字格练字帖' , category : 'chinese' , page : 'copyBook' , subpackage : '' , icon : '✏️' , ageRange : [ 4 , 7 ] , difficulty : 'basic' , previewBg : '#fff8e1' , previewText : '横竖撇' } ,
] ;
/**
* 按分类获取题型列表
*/
export function getWorksheetsByCategory ( category : string ) : WorksheetType [ ] {
if ( category === 'all' ) return ALL_WORKSHEETS ;
return ALL_WORKSHEETS . filter ( ( w ) = > w . category === category ) ;
}
/**
* 按年龄范围筛选
*/
export function getWorksheetsByAge ( worksheets : WorksheetType [ ] , age : number ) : WorksheetType [ ] {
return worksheets . filter ( ( w ) = > {
if ( ! w . ageRange ) return true ;
return age >= w . ageRange [ 0 ] && age <= w . ageRange [ 1 ] ;
} ) ;
}
/**
* 获取题型的导航路径
*/
export function getWorksheetPath ( worksheet : WorksheetType ) : string {
if ( ! worksheet . page ) return '' ;
if ( worksheet . subpackage ) {
return ` / ${ worksheet . subpackage } / ${ worksheet . page } / ${ worksheet . page } ?id= ${ worksheet . id } ` ;
}
return ` /pages/ ${ worksheet . page } / ${ worksheet . page } ` ;
}