@mathwiz/ui-components 0.1.28 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +1 -1
  2. package/dist/components/Button/Button.css +100 -32
  3. package/dist/components/Button/Button.d.ts.map +1 -1
  4. package/dist/components/Button/types.d.ts +19 -0
  5. package/dist/components/Button/types.d.ts.map +1 -1
  6. package/dist/components/HundredChart/HundredChart.css +8 -0
  7. package/dist/components/HundredChart/HundredChart.d.ts.map +1 -1
  8. package/dist/components/HundredChart/HundredChart.types.d.ts +29 -0
  9. package/dist/components/HundredChart/HundredChart.types.d.ts.map +1 -1
  10. package/dist/components/HundredChart/HundredChart.utils.d.ts +13 -1
  11. package/dist/components/HundredChart/HundredChart.utils.d.ts.map +1 -1
  12. package/dist/components/HundredChart/index.d.ts +2 -2
  13. package/dist/components/HundredChart/index.d.ts.map +1 -1
  14. package/dist/components/MathCardV2/DecimalNumberRecognitionSessionStore.d.ts +2 -2
  15. package/dist/components/MathCardV2/DecimalNumberRecognitionSessionStore.d.ts.map +1 -1
  16. package/dist/components/MathCardV2/ExplanationStep.d.ts +9 -0
  17. package/dist/components/MathCardV2/ExplanationStep.d.ts.map +1 -1
  18. package/dist/components/MathCardV2/MathCardV2.css +11 -4
  19. package/dist/components/MathCardV2/MathCardV2.d.ts.map +1 -1
  20. package/dist/components/MathCardV2/MathCardV2.types.d.ts +51 -1
  21. package/dist/components/MathCardV2/MathCardV2.types.d.ts.map +1 -1
  22. package/dist/components/MathCardV2/MathPracticeSessionStore.d.ts +3 -3
  23. package/dist/components/MathCardV2/MathPracticeSessionStore.d.ts.map +1 -1
  24. package/dist/components/MathCardV2/MathPracticeSessionTypes.d.ts +38 -18
  25. package/dist/components/MathCardV2/MathPracticeSessionTypes.d.ts.map +1 -1
  26. package/dist/components/MathCardV2/MathPracticeStoreContext.d.ts +3 -9
  27. package/dist/components/MathCardV2/MathPracticeStoreContext.d.ts.map +1 -1
  28. package/dist/components/MathCardV2/MathPracticeStoreHooks.d.ts +3 -2
  29. package/dist/components/MathCardV2/MathPracticeStoreHooks.d.ts.map +1 -1
  30. package/dist/components/MathCardV2/components/content/OptionGroupContent.d.ts +10 -0
  31. package/dist/components/MathCardV2/components/content/OptionGroupContent.d.ts.map +1 -0
  32. package/dist/components/MathCardV2/components/renderers/ContentRenderer.d.ts.map +1 -1
  33. package/dist/components/MathCardV2/hooks/useDataAdapter.d.ts.map +1 -1
  34. package/dist/components/MathCardV2/hooks/useMeetingProblemAdapter.d.ts.map +1 -1
  35. package/dist/components/MathCardV2/modules/ReviewModule/ReviewModule.d.ts.map +1 -1
  36. package/dist/components/MathCardV2/modules/SolveModule/SolveModule.d.ts.map +1 -1
  37. package/dist/components/MathCardV2/scenes/ExplanationScene/ExplanationScene.d.ts.map +1 -1
  38. package/dist/components/MathCardV2/scenes/QuestionScene/QuestionScene.css +18 -18
  39. package/dist/components/MathCardV2/scenes/QuestionScene/QuestionScene.d.ts.map +1 -1
  40. package/dist/components/MathCardV2/scenes/SuccessScene/SuccessScene.d.ts.map +1 -1
  41. package/dist/components/OptionGroup/OptionCard.d.ts +11 -0
  42. package/dist/components/OptionGroup/OptionCard.d.ts.map +1 -0
  43. package/dist/components/OptionGroup/OptionCard.styles.d.ts +87 -0
  44. package/dist/components/OptionGroup/OptionCard.styles.d.ts.map +1 -0
  45. package/dist/components/OptionGroup/OptionGroup.d.ts +11 -0
  46. package/dist/components/OptionGroup/OptionGroup.d.ts.map +1 -0
  47. package/dist/components/OptionGroup/OptionGroup.types.d.ts +71 -0
  48. package/dist/components/OptionGroup/OptionGroup.types.d.ts.map +1 -0
  49. package/dist/components/OptionGroup/index.d.ts +5 -0
  50. package/dist/components/OptionGroup/index.d.ts.map +1 -0
  51. package/dist/components/StatBlock/StatBlock.css +331 -0
  52. package/dist/components/StatBlock/StatBlock.d.ts +7 -0
  53. package/dist/components/StatBlock/StatBlock.d.ts.map +1 -0
  54. package/dist/components/StatBlock/index.d.ts +5 -0
  55. package/dist/components/StatBlock/index.d.ts.map +1 -0
  56. package/dist/components/StatBlock/types.d.ts +116 -0
  57. package/dist/components/StatBlock/types.d.ts.map +1 -0
  58. package/dist/components/Table/Table.d.ts +14 -0
  59. package/dist/components/Table/Table.d.ts.map +1 -0
  60. package/dist/components/Table/hooks/useTableCore.d.ts +13 -0
  61. package/dist/components/Table/hooks/useTableCore.d.ts.map +1 -0
  62. package/dist/components/Table/hooks/useTableState.d.ts +10 -0
  63. package/dist/components/Table/hooks/useTableState.d.ts.map +1 -0
  64. package/dist/components/Table/index.d.ts +7 -0
  65. package/dist/components/Table/index.d.ts.map +1 -0
  66. package/dist/components/Table/types.d.ts +179 -0
  67. package/dist/components/Table/types.d.ts.map +1 -0
  68. package/dist/components/Table/utils/flattenData.d.ts +15 -0
  69. package/dist/components/Table/utils/flattenData.d.ts.map +1 -0
  70. package/dist/components/Table/utils/mergeClass.d.ts +6 -0
  71. package/dist/components/Table/utils/mergeClass.d.ts.map +1 -0
  72. package/dist/data/GeometryProblemAdapterV4/geometry-types.d.ts +119 -4
  73. package/dist/data/GeometryProblemAdapterV4/geometry-types.d.ts.map +1 -1
  74. package/dist/data/GeometryProblemAdapterV4/jsondata/parallelogram-revised.json +721 -721
  75. package/dist/data/GeometryProblemAdapterV4/jsondata/right-triangle-v4.json +595 -0
  76. package/dist/data/GeometryProblemAdapterV4/jsondata/trapezoid-v4-final.json +469 -469
  77. package/dist/data/GeometryProblemAdapterV4/jsondata/triangle-v4-final.json +3 -3
  78. package/dist/data/GeometryProblemAdapterV4/types.d.ts +2 -0
  79. package/dist/data/GeometryProblemAdapterV4/types.d.ts.map +1 -1
  80. package/dist/data/TriangleAdapterV3/config/embeddedConfigs.d.ts +96 -18
  81. package/dist/data/TriangleAdapterV3/config/embeddedConfigs.d.ts.map +1 -1
  82. package/dist/data/TriangleAdapterV3/config/index.d.ts +64 -12
  83. package/dist/data/TriangleAdapterV3/config/index.d.ts.map +1 -1
  84. package/dist/data/TriangleAdapterV3/core/syncAdapter.d.ts +5 -0
  85. package/dist/data/TriangleAdapterV3/core/syncAdapter.d.ts.map +1 -1
  86. package/dist/data/TriangleAdapterV3/resolvers/transformRefResolver.d.ts +4 -0
  87. package/dist/data/TriangleAdapterV3/resolvers/transformRefResolver.d.ts.map +1 -1
  88. package/dist/data/TriangleAdapterV3/transformers/geometryTransformTransformer.d.ts.map +1 -1
  89. package/dist/data/TriangleAdapterV3/transformers/hundredChartTransformer.d.ts +58 -0
  90. package/dist/data/TriangleAdapterV3/transformers/hundredChartTransformer.d.ts.map +1 -0
  91. package/dist/data/TriangleAdapterV3/transformers/index.d.ts +2 -0
  92. package/dist/data/TriangleAdapterV3/transformers/index.d.ts.map +1 -1
  93. package/dist/data/TriangleAdapterV3/transformers/optionGroupTransformer.d.ts +29 -0
  94. package/dist/data/TriangleAdapterV3/transformers/optionGroupTransformer.d.ts.map +1 -0
  95. package/dist/data/TriangleAdapterV3/types.d.ts +3 -0
  96. package/dist/data/TriangleAdapterV3/types.d.ts.map +1 -1
  97. package/dist/data/config/style-presets.json +27 -3
  98. package/dist/data/dataSchema/OpenAPI/openapi.json +5777 -5777
  99. package/dist/data/problems/factorProblemV4-backup.json +427 -0
  100. package/dist/data/problems/factorProblemV4.json +462 -0
  101. package/dist/data/problems/factorProblemV4_backup_20260311.json +436 -0
  102. package/dist/index.cjs +103 -100
  103. package/dist/index.cjs.map +1 -1
  104. package/dist/index.d.ts +8 -2
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.mjs +12144 -6014
  107. package/dist/index.mjs.map +1 -1
  108. package/dist/mathwiz-ui.css +1 -1
  109. package/dist/pages/AreaGeometrySessionPage/AreaGeometrySessionPageIXL.css +385 -0
  110. package/dist/pages/AreaGeometrySessionPage/AreaGeometrySessionPageIXL.d.ts +29 -0
  111. package/dist/pages/AreaGeometrySessionPage/AreaGeometrySessionPageIXL.d.ts.map +1 -0
  112. package/dist/pages/AreaGeometrySessionPage/components/LearningDashboardPlaceholder.css +219 -0
  113. package/dist/pages/AreaGeometrySessionPage/components/LearningDashboardPlaceholder.d.ts +15 -0
  114. package/dist/pages/AreaGeometrySessionPage/components/LearningDashboardPlaceholder.d.ts.map +1 -0
  115. package/dist/pages/AreaGeometrySessionPage/components/ReviewSectionPlaceholder.css +64 -0
  116. package/dist/pages/AreaGeometrySessionPage/components/ReviewSectionPlaceholder.d.ts +11 -0
  117. package/dist/pages/AreaGeometrySessionPage/components/ReviewSectionPlaceholder.d.ts.map +1 -0
  118. package/dist/pages/AreaGeometrySessionPage/components/ScaffoldingPlaceholder.css +59 -0
  119. package/dist/pages/AreaGeometrySessionPage/components/ScaffoldingPlaceholder.d.ts +14 -0
  120. package/dist/pages/AreaGeometrySessionPage/components/ScaffoldingPlaceholder.d.ts.map +1 -0
  121. package/dist/pages/AreaGeometrySessionPage/index.d.ts +3 -1
  122. package/dist/pages/AreaGeometrySessionPage/index.d.ts.map +1 -1
  123. package/dist/pages/AreaGeometrySessionPage/types.d.ts +25 -0
  124. package/dist/pages/AreaGeometrySessionPage/types.d.ts.map +1 -1
  125. package/dist/pages/GradeUnitBrowserPage/GradeUnitBrowserPage.d.ts.map +1 -1
  126. package/dist/pages/MathSessionPage/MathSessionPage.d.ts.map +1 -1
  127. package/dist/style.css +1 -1
  128. package/dist/styles/index.css +34 -0
  129. package/dist/styles/mathcard-tokens.css +47 -5
  130. package/package.json +5 -3
@@ -0,0 +1,462 @@
1
+ {
2
+ "schema_version": "4.0.0",
3
+ "config_version": "1.0.0",
4
+ "math_prob_id": "mp-factors-12-001",
5
+ "title": "找出12的因数",
6
+ "description": "通过百格图模型找出12的所有因数,理解因数概念",
7
+ "objective": "掌握找因数的方法,理解因数与倍数的关系",
8
+ "difficulty": 1,
9
+ "grade_id": "g4",
10
+ "unit_name": "因数与倍数",
11
+ "unit_id": 1050603,
12
+ "lesson_name": "找因数",
13
+ "lesson_id": 105060301,
14
+ "module_id": 1003,
15
+ "skill_description": "能够找出12的所有因数",
16
+ "skill_item_id": "s-105-06-0003",
17
+ "skill_id": 1003,
18
+ "score": 2,
19
+ "knowledge_points": [
20
+ "因数的概念",
21
+ "找因数的方法",
22
+ "因数与倍数的关系"
23
+ ],
24
+ "metadata": {
25
+ "topic": "因数与倍数",
26
+ "skill": "找因数",
27
+ "tags": [
28
+ "因数",
29
+ "百格图",
30
+ "12的因数"
31
+ ],
32
+ "version": "1.0.0",
33
+ "author": "math-geometry-problem-generator",
34
+ "strategy": "hundredGrid_factor_demonstration"
35
+ },
36
+ "basic_info": {
37
+ "question": "找出12的所有因数。",
38
+ "answerUnit": "",
39
+ "variables": {
40
+ "n": 12,
41
+ "factors": [
42
+ 1,
43
+ 2,
44
+ 3,
45
+ 4,
46
+ 6,
47
+ 12
48
+ ],
49
+ "factorPairs": [
50
+ [
51
+ 1,
52
+ 12
53
+ ],
54
+ [
55
+ 2,
56
+ 6
57
+ ],
58
+ [
59
+ 3,
60
+ 4
61
+ ]
62
+ ]
63
+ }
64
+ },
65
+ "option_groups": {
66
+ "factor_selection": {
67
+ "id": "factor_selection",
68
+ "type": "optionGroup",
69
+ "answerType": "multiple",
70
+ "correctAnswers": ["A", "C", "D", "F", "H", "J"],
71
+ "layout": "vertical",
72
+ "variant": "default",
73
+ "options": [
74
+ { "id": "A", "content": "1", "contentType": "text", "metadata": { "value": 1, "isCorrect": true } },
75
+ { "id": "B", "content": "5", "contentType": "text", "metadata": { "value": 5, "isCorrect": false } },
76
+ { "id": "C", "content": "2", "contentType": "text", "metadata": { "value": 2, "isCorrect": true } },
77
+ { "id": "D", "content": "3", "contentType": "text", "metadata": { "value": 3, "isCorrect": true } },
78
+ { "id": "E", "content": "8", "contentType": "text", "metadata": { "value": 8, "isCorrect": false } },
79
+ { "id": "F", "content": "4", "contentType": "text", "metadata": { "value": 4, "isCorrect": true } },
80
+ { "id": "G", "content": "7", "contentType": "text", "metadata": { "value": 7, "isCorrect": false } },
81
+ { "id": "H", "content": "6", "contentType": "text", "metadata": { "value": 6, "isCorrect": true } },
82
+ { "id": "I", "content": "9", "contentType": "text", "metadata": { "value": 9, "isCorrect": false } },
83
+ { "id": "J", "content": "12", "contentType": "text", "metadata": { "value": 12, "isCorrect": true } }
84
+ ]
85
+ },
86
+ "factor_pairs_selection": {
87
+ "id": "factor_pairs_selection",
88
+ "type": "optionGroup",
89
+ "answerType": "multiple",
90
+ "correctAnswers": ["A", "B", "C"],
91
+ "layout": "vertical",
92
+ "variant": "ixl",
93
+ "options": [
94
+ { "id": "A", "content": "1 \\times 12 = 12", "contentType": "formula", "metadata": { "pair": [1, 12], "isCorrect": true } },
95
+ { "id": "B", "content": "2 \\times 6 = 12", "contentType": "formula", "metadata": { "pair": [2, 6], "isCorrect": true } },
96
+ { "id": "C", "content": "3 \\times 4 = 12", "contentType": "formula", "metadata": { "pair": [3, 4], "isCorrect": true } },
97
+ { "id": "D", "content": "5 \\times 3 = 15", "contentType": "formula", "metadata": { "pair": [5, 3], "isCorrect": false } }
98
+ ]
99
+ }
100
+ },
101
+ "geometry_shapes": {
102
+ "hundredchart_question": {
103
+ "id": "hundredchart_question",
104
+ "type": "hundredGrid",
105
+ "styleRef": "hundredGrid_primary",
106
+ "config": {
107
+ "grid": {
108
+ "rows": 2,
109
+ "cols": 6,
110
+ "cellSize": 36,
111
+ "showNumbers": true
112
+ },
113
+ "highlight": {
114
+ "numbers": [
115
+ 1,
116
+ 2,
117
+ 3,
118
+ 4,
119
+ 5,
120
+ 6,
121
+ 7,
122
+ 8,
123
+ 9,
124
+ 10,
125
+ 11,
126
+ 12
127
+ ],
128
+ "color": "#4a90e2",
129
+ "highlightType": "fill"
130
+ },
131
+ "interactive": {
132
+ "mode": "multi-select",
133
+ "minSelections": 1,
134
+ "maxSelections": 12,
135
+ "allowDeselect": true
136
+ }
137
+ }
138
+ },
139
+ "hundredchart_1x12": {
140
+ "id": "hundredchart_1x12",
141
+ "type": "hundredGrid",
142
+ "styleRef": "hundredGrid_solve",
143
+ "config": {
144
+ "grid": {
145
+ "rows": 1,
146
+ "cols": 12,
147
+ "cellSize": 28,
148
+ "showNumbers": true
149
+ },
150
+ "highlight": {
151
+ "numbers": [
152
+ 1,
153
+ 2,
154
+ 3,
155
+ 4,
156
+ 5,
157
+ 6,
158
+ 7,
159
+ 8,
160
+ 9,
161
+ 10,
162
+ 11,
163
+ 12
164
+ ],
165
+ "color": "#f0ad4e",
166
+ "highlightType": "fill"
167
+ },
168
+ "interactive": {
169
+ "mode": "readonly"
170
+ }
171
+ }
172
+ },
173
+ "hundredchart_2x6": {
174
+ "id": "hundredchart_2x6",
175
+ "type": "hundredGrid",
176
+ "styleRef": "hundredGrid_solve",
177
+ "config": {
178
+ "grid": {
179
+ "rows": 2,
180
+ "cols": 6,
181
+ "cellSize": 32,
182
+ "showNumbers": true
183
+ },
184
+ "highlight": {
185
+ "numbers": [
186
+ 1,
187
+ 2,
188
+ 3,
189
+ 4,
190
+ 5,
191
+ 6,
192
+ 7,
193
+ 8,
194
+ 9,
195
+ 10,
196
+ 11,
197
+ 12
198
+ ],
199
+ "color": "#f0ad4e",
200
+ "highlightType": "fill"
201
+ },
202
+ "interactive": {
203
+ "mode": "readonly"
204
+ }
205
+ }
206
+ },
207
+ "hundredchart_3x4": {
208
+ "id": "hundredchart_3x4",
209
+ "type": "hundredGrid",
210
+ "styleRef": "hundredGrid_solve",
211
+ "config": {
212
+ "grid": {
213
+ "rows": 3,
214
+ "cols": 4,
215
+ "cellSize": 32,
216
+ "showNumbers": true
217
+ },
218
+ "highlight": {
219
+ "numbers": [
220
+ 1,
221
+ 2,
222
+ 3,
223
+ 4,
224
+ 5,
225
+ 6,
226
+ 7,
227
+ 8,
228
+ 9,
229
+ 10,
230
+ 11,
231
+ 12
232
+ ],
233
+ "color": "#f0ad4e",
234
+ "highlightType": "fill"
235
+ },
236
+ "interactive": {
237
+ "mode": "readonly"
238
+ }
239
+ }
240
+ }
241
+ },
242
+ "scenes": {
243
+ "question": {
244
+ "layout": {
245
+ "type": "card",
246
+ "padding": "$spacing.large"
247
+ },
248
+ "items": [
249
+ {
250
+ "type": "text",
251
+ "content": "找出 12 的所有因数。",
252
+ "style": {
253
+ "fontSize": "1.5rem",
254
+ "color": "#1e293b",
255
+ "fontWeight": "bold"
256
+ }
257
+ },
258
+ {
259
+ "type": "text",
260
+ "content": "请从下方选项中选择所有能整除12的数字:",
261
+ "style": {
262
+ "fontSize": "1rem",
263
+ "color": "#475569"
264
+ }
265
+ },
266
+ {
267
+ "type": "optionGroup",
268
+ "optionGroupRef": "factor_selection",
269
+ "mode": "question"
270
+ }
271
+ ]
272
+ },
273
+ "solve": {
274
+ "layout": {
275
+ "type": "card",
276
+ "padding": "$spacing.large"
277
+ },
278
+ "items": [
279
+ {
280
+ "type": "text",
281
+ "content": "解题思路",
282
+ "style": {
283
+ "fontSize": "1.5rem",
284
+ "color": "#1e293b",
285
+ "fontWeight": "bold"
286
+ }
287
+ },
288
+ {
289
+ "type": "text",
290
+ "content": "12 的因数可以通过找出能整除 12 的整数得到。用矩形拼接可以直观理解:",
291
+ "style": {
292
+ "fontSize": "1rem",
293
+ "color": "#475569"
294
+ }
295
+ },
296
+ {
297
+ "type": "text",
298
+ "content": "1 × 12 = 12",
299
+ "style": {
300
+ "fontSize": "1.1rem",
301
+ "color": "#4a90e2",
302
+ "fontWeight": "bold"
303
+ }
304
+ },
305
+ {
306
+ "type": "hundredGrid",
307
+ "geometryRef": "hundredchart_1x12"
308
+ },
309
+ {
310
+ "type": "text",
311
+ "content": "2 × 6 = 12",
312
+ "style": {
313
+ "fontSize": "1.1rem",
314
+ "color": "#4a90e2",
315
+ "fontWeight": "bold"
316
+ }
317
+ },
318
+ {
319
+ "type": "hundredGrid",
320
+ "geometryRef": "hundredchart_2x6"
321
+ },
322
+ {
323
+ "type": "text",
324
+ "content": "3 × 4 = 12",
325
+ "style": {
326
+ "fontSize": "1.1rem",
327
+ "color": "#4a90e2",
328
+ "fontWeight": "bold"
329
+ }
330
+ },
331
+ {
332
+ "type": "hundredGrid",
333
+ "geometryRef": "hundredchart_3x4"
334
+ },
335
+ {
336
+ "type": "text",
337
+ "content": "点击查看详细解题步骤 →",
338
+ "style": {
339
+ "fontSize": "1rem",
340
+ "color": "#64748b",
341
+ "textAlign": "center"
342
+ }
343
+ }
344
+ ]
345
+ },
346
+ "success": {
347
+ "layout": {
348
+ "type": "card",
349
+ "padding": "$spacing.large"
350
+ },
351
+ "items": [
352
+ {
353
+ "type": "text",
354
+ "content": "回答正确!",
355
+ "style": {
356
+ "fontSize": "1.5rem",
357
+ "color": "#1e293b",
358
+ "fontWeight": "bold"
359
+ }
360
+ },
361
+ {
362
+ "type": "text",
363
+ "content": "太棒了!12 的所有因数就是 1, 2, 3, 4, 6, 12。",
364
+ "style": {
365
+ "fontSize": "1rem",
366
+ "color": "#475569"
367
+ }
368
+ }
369
+ ]
370
+ }
371
+ },
372
+ "explanation": {
373
+ "steps": [
374
+ {
375
+ "id": "step-1",
376
+ "type": "instructionalStep",
377
+ "title": "从1开始找因数",
378
+ "description": "从1开始寻找12的因数。\n\n1 × 12 = 12,所以1和12都是12的因数。\n\n观察下方的百格图:1排12个,正好表示1×12=12。",
379
+ "chartConfig": {
380
+ "type": "hundredGrid",
381
+ "rows": 1,
382
+ "cols": 12,
383
+ "cellSize": 28,
384
+ "mode": "readonly",
385
+ "value": 12,
386
+ "fillColor": "#4a90e2",
387
+ "baseColor": "#f8fafc"
388
+ }
389
+ },
390
+ {
391
+ "id": "step-2",
392
+ "type": "instructionalStep",
393
+ "title": "继续找下一对因数",
394
+ "description": "继续寻找12的因数。\n\n2 × 6 = 12,所以2和6也都是12的因数。\n\n观察下方的百格图:2排,每排6个,正好表示2×6=12。",
395
+ "chartConfig": {
396
+ "type": "hundredGrid",
397
+ "rows": 2,
398
+ "cols": 6,
399
+ "cellSize": 32,
400
+ "mode": "readonly",
401
+ "value": 12,
402
+ "fillColor": "#f0ad4e",
403
+ "baseColor": "#f8fafc"
404
+ }
405
+ },
406
+ {
407
+ "id": "step-3",
408
+ "type": "instructionalStep",
409
+ "title": "找到最后一对因数",
410
+ "description": "继续寻找12的因数。\n\n3 × 4 = 12,所以3和4也是12的因数。\n\n观察下方的百格图:3排,每排4个,正好表示3×4=12。\n\n当两个因数接近时(3和4),说明已经找到了所有因数对。",
411
+ "chartConfig": {
412
+ "type": "hundredGrid",
413
+ "rows": 3,
414
+ "cols": 4,
415
+ "cellSize": 32,
416
+ "mode": "readonly",
417
+ "value": 12,
418
+ "fillColor": "#5cb85c",
419
+ "baseColor": "#f8fafc"
420
+ }
421
+ }
422
+ ]
423
+ },
424
+ "layout": {
425
+ "type": "card",
426
+ "padding": "$spacing.large",
427
+ "theme": "light",
428
+ "renderer": {
429
+ "showFormulaSteps": true,
430
+ "interactiveAnimations": true,
431
+ "validateAnswers": true
432
+ }
433
+ },
434
+ "answer_info": {
435
+ "value": 0,
436
+ "displayValue": "1, 2, 3, 4, 6, 12",
437
+ "unit": "",
438
+ "type": "choice",
439
+ "tolerance": 0,
440
+ "validation": {
441
+ "type": "exact",
442
+ "allowPartial": false,
443
+ "ignoreOrder": true
444
+ },
445
+ "correctAnswers": ["A", "C", "D", "F", "H", "J"],
446
+ "optionGroupRef": "factor_selection",
447
+ "explanation_text": "12的所有因数是1, 2, 3, 4, 6, 12。因数是指能整除该数的整数。可以通过百格图模型直观理解:12可以表示为1×12、2×6、3×4的矩形排列。",
448
+ "solution_steps": [
449
+ "从最小的整数1开始尝试",
450
+ "1 × 12 = 12,所以1和12都是12的因数",
451
+ "继续尝试2:2 × 6 = 12,所以2和6也是因数",
452
+ "尝试3:3 × 4 = 12,所以3和4也是因数",
453
+ "尝试4:已经找到(3×4),说明因数对开始接近",
454
+ "尝试5:不能整除12,所以5不是因数",
455
+ "尝试6:已经找到(2×6),停止查找"
456
+ ],
457
+ "correctFeedback": "太棒了!你正确找出了12的所有因数。",
458
+ "incorrectFeedback": "检查一下是否漏掉了某些因数,或者包含了不能整除12的数字。"
459
+ },
460
+ "created_at": "2026-03-10T00:00:00Z",
461
+ "updated_at": "2026-03-10T00:00:00Z"
462
+ }