cotutor 0.2.0 → 0.4.0

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 (912) hide show
  1. package/LICENSE +249 -21
  2. package/NOTICE +42 -0
  3. package/README.md +115 -20
  4. package/avatars/chinese.webp +0 -0
  5. package/avatars/english.webp +0 -0
  6. package/avatars/math.webp +0 -0
  7. package/bin/cotutor.js +15 -5
  8. package/cards/canvas/card.css +8 -0
  9. package/cards/canvas/card.md +68 -0
  10. package/cards/choice/card.css +18 -0
  11. package/cards/choice/card.md +55 -0
  12. package/cards/code/card.css +5 -0
  13. package/cards/code/card.md +46 -0
  14. package/cards/dictation/card.css +10 -0
  15. package/cards/dictation/card.md +97 -0
  16. package/cards/image/card.css +10 -0
  17. package/cards/image/card.md +52 -0
  18. package/cards/lecture/card.css +9 -0
  19. package/cards/lecture/card.md +69 -0
  20. package/cards/paint/card.css +20 -0
  21. package/cards/paint/card.md +77 -0
  22. package/cards/photo/card.css +22 -0
  23. package/cards/photo/card.md +61 -0
  24. package/cards/read/card.css +6 -0
  25. package/cards/read/card.md +51 -0
  26. package/cards/text/card.css +3 -0
  27. package/cards/text/card.md +69 -0
  28. package/cards/tianzige/card.css +17 -0
  29. package/cards/tianzige/card.md +78 -0
  30. package/cards/tutor/card.css +79 -0
  31. package/cards/tutor/card.md +149 -0
  32. package/cards/word/card.css +24 -0
  33. package/cards/word/card.md +91 -0
  34. package/cards//346/235/277/344/271/246/346/200/216/344/271/210/345/206/231.md +159 -0
  35. package/dist/app/activity-eval-rules.d.ts +62 -0
  36. package/dist/app/activity-eval-rules.js +276 -0
  37. package/dist/app/activity-eval.d.ts +65 -0
  38. package/dist/app/activity-eval.js +159 -0
  39. package/dist/app/build.d.ts +11 -0
  40. package/dist/app/build.js +45 -0
  41. package/dist/app/cli/activities.d.ts +70 -0
  42. package/dist/app/cli/activities.js +196 -0
  43. package/dist/app/cli/cert.d.ts +12 -0
  44. package/dist/app/cli/cert.js +49 -0
  45. package/dist/app/cli/chalk/bake.d.ts +10 -0
  46. package/dist/app/cli/chalk/bake.js +58 -0
  47. package/dist/app/cli/chalk/browser.d.ts +16 -0
  48. package/dist/app/cli/chalk/browser.js +157 -0
  49. package/dist/app/cli/chalk/build.d.ts +14 -0
  50. package/dist/app/cli/chalk/build.js +100 -0
  51. package/dist/app/cli/chalk/dub.d.ts +51 -0
  52. package/dist/app/cli/chalk/dub.js +106 -0
  53. package/dist/app/cli/chalk/load-scene.d.ts +34 -0
  54. package/dist/app/cli/chalk/load-scene.js +117 -0
  55. package/dist/app/cli/chalk/main.d.ts +7 -0
  56. package/dist/app/cli/chalk/main.js +199 -0
  57. package/dist/app/cli/chalk/serve.d.ts +4 -0
  58. package/dist/app/cli/chalk/serve.js +28 -0
  59. package/dist/app/cli/chalk/snap.d.ts +65 -0
  60. package/dist/app/cli/chalk/snap.js +103 -0
  61. package/dist/app/cli/chalk/typecheck.d.ts +7 -0
  62. package/dist/app/cli/chalk/typecheck.js +51 -0
  63. package/dist/app/cli/doctor.d.ts +24 -0
  64. package/dist/app/cli/doctor.js +553 -0
  65. package/dist/app/cli/firewall.d.ts +24 -0
  66. package/dist/app/cli/firewall.js +79 -0
  67. package/dist/app/cli/grades.d.ts +14 -0
  68. package/dist/app/cli/grades.js +44 -0
  69. package/dist/{cli → app/cli}/init.d.ts +3 -1
  70. package/dist/app/cli/init.js +158 -0
  71. package/dist/app/cli/main.js +1038 -0
  72. package/dist/app/cli/migrate.d.ts +49 -0
  73. package/dist/app/cli/migrate.js +195 -0
  74. package/dist/app/cli/port-holder.d.ts +16 -0
  75. package/dist/app/cli/port-holder.js +34 -0
  76. package/dist/app/cli/port.d.ts +37 -0
  77. package/dist/app/cli/port.js +116 -0
  78. package/dist/app/cli/sandbox.d.ts +25 -0
  79. package/dist/app/cli/sandbox.js +166 -0
  80. package/dist/app/cli/serve-log.d.ts +13 -0
  81. package/dist/app/cli/serve-log.js +90 -0
  82. package/dist/app/cli/serve.d.ts +51 -0
  83. package/dist/app/cli/serve.js +168 -0
  84. package/dist/app/cli/service-windows.d.ts +50 -0
  85. package/dist/app/cli/service-windows.js +117 -0
  86. package/dist/app/cli/service.d.ts +138 -0
  87. package/dist/app/cli/service.js +429 -0
  88. package/dist/app/cli/shipped.d.ts +30 -0
  89. package/dist/app/cli/shipped.js +47 -0
  90. package/dist/app/cli/skeleton.d.ts +38 -0
  91. package/dist/app/cli/skeleton.js +161 -0
  92. package/dist/app/cli/skills.d.ts +59 -0
  93. package/dist/app/cli/skills.js +199 -0
  94. package/dist/app/cli/themes.d.ts +52 -0
  95. package/dist/app/cli/themes.js +148 -0
  96. package/dist/app/cli/tray-icons.d.ts +11 -0
  97. package/dist/app/cli/tray-icons.js +87 -0
  98. package/dist/app/cli/tray-ids.d.ts +6 -0
  99. package/dist/app/cli/tray-ids.js +6 -0
  100. package/dist/app/cli/tray-mac.d.ts +8 -0
  101. package/dist/app/cli/tray-mac.js +140 -0
  102. package/dist/app/cli/tray-run.d.ts +1 -0
  103. package/dist/app/cli/tray-run.js +33 -0
  104. package/dist/app/cli/tray-windows.d.ts +5 -0
  105. package/dist/app/cli/tray-windows.js +166 -0
  106. package/dist/app/cli/tray.d.ts +205 -0
  107. package/dist/app/cli/tray.js +618 -0
  108. package/dist/{cli → app/cli}/tutors.d.ts +15 -26
  109. package/dist/{cli → app/cli}/tutors.js +86 -110
  110. package/dist/app/cli/usage.d.ts +2 -0
  111. package/dist/app/cli/usage.js +35 -0
  112. package/dist/app/dictation/recognize.d.ts +18 -0
  113. package/dist/app/dictation/recognize.js +6 -0
  114. package/dist/app/dictation/route.d.ts +52 -0
  115. package/dist/app/dictation/route.js +511 -0
  116. package/dist/app/diff.d.ts +11 -0
  117. package/dist/app/diff.js +71 -0
  118. package/dist/app/http/access.d.ts +62 -0
  119. package/dist/app/http/access.js +180 -0
  120. package/dist/app/http/app.d.ts +241 -0
  121. package/dist/app/http/app.js +1159 -0
  122. package/dist/app/http/avatars.d.ts +17 -0
  123. package/dist/app/http/avatars.js +35 -0
  124. package/dist/app/http/dev-activities.d.ts +115 -0
  125. package/dist/app/http/dev-activities.js +193 -0
  126. package/dist/app/http/dev-overview.d.ts +108 -0
  127. package/dist/app/http/dev-overview.js +209 -0
  128. package/dist/app/http/dev-tutor-files.d.ts +80 -0
  129. package/dist/app/http/dev-tutor-files.js +151 -0
  130. package/dist/app/http/parent-home.d.ts +51 -0
  131. package/dist/app/http/parent-home.js +266 -0
  132. package/dist/app/http/parent-look.d.ts +2 -0
  133. package/dist/app/http/parent-look.js +151 -0
  134. package/dist/app/http/range.d.ts +9 -0
  135. package/dist/app/http/range.js +19 -0
  136. package/dist/app/http/raw-view.d.ts +117 -0
  137. package/dist/app/http/raw-view.js +149 -0
  138. package/dist/app/http/send-file.d.ts +7 -0
  139. package/dist/app/http/send-file.js +29 -0
  140. package/dist/{server → app/http}/stage.d.ts +9 -0
  141. package/dist/{server → app/http}/stage.js +34 -6
  142. package/dist/app/http/theme.d.ts +13 -0
  143. package/dist/app/http/theme.js +41 -0
  144. package/dist/app/http/voice-preview.d.ts +4 -0
  145. package/dist/app/http/voice-preview.js +34 -0
  146. package/dist/app/machine/bailian.d.ts +26 -0
  147. package/dist/app/machine/bailian.js +87 -0
  148. package/dist/app/mock/mock-live.d.ts +16 -0
  149. package/dist/app/mock/mock-live.js +140 -0
  150. package/dist/{server → app/mock}/mock.d.ts +38 -5
  151. package/dist/app/mock/mock.js +1125 -0
  152. package/dist/app/replay.d.ts +94 -0
  153. package/dist/app/replay.js +170 -0
  154. package/dist/app/skills/analyze-doc.d.ts +3 -0
  155. package/dist/app/skills/analyze-doc.js +47 -0
  156. package/dist/app/skills/home-doc.d.ts +5 -0
  157. package/dist/app/skills/home-doc.js +112 -0
  158. package/dist/app/skills/tune-doc.d.ts +3 -0
  159. package/dist/app/skills/tune-doc.js +80 -0
  160. package/dist/app/talk/list.d.ts +11 -0
  161. package/dist/app/talk/list.js +9 -0
  162. package/dist/app/talk/route.d.ts +16 -0
  163. package/dist/app/talk/route.js +142 -0
  164. package/dist/app/workspace.d.ts +63 -0
  165. package/dist/{cli → app}/workspace.js +100 -52
  166. package/dist/app/ws/route.d.ts +31 -0
  167. package/dist/app/ws/route.js +33 -0
  168. package/dist/app/ws/ws.d.ts +31 -0
  169. package/dist/app/ws/ws.js +169 -0
  170. package/dist/board/canvas-chat.d.ts +97 -0
  171. package/dist/board/canvas-chat.js +175 -0
  172. package/dist/board/card-guards.d.ts +15 -0
  173. package/dist/board/card-guards.js +38 -0
  174. package/dist/board/cards/canvas.d.ts +41 -0
  175. package/dist/board/cards/canvas.js +83 -0
  176. package/dist/{cards → board/cards}/choice.js +0 -12
  177. package/dist/{cards → board/cards}/code.js +0 -3
  178. package/dist/board/cards/dictation.d.ts +42 -0
  179. package/dist/board/cards/dictation.js +105 -0
  180. package/dist/board/cards/docs.d.ts +47 -0
  181. package/dist/board/cards/docs.js +152 -0
  182. package/dist/{cards → board/cards}/image.js +1 -10
  183. package/dist/board/cards/index.d.ts +62 -0
  184. package/dist/board/cards/index.js +144 -0
  185. package/dist/{cards → board/cards}/kind.d.ts +10 -4
  186. package/dist/board/cards/kind.js +9 -0
  187. package/dist/board/cards/lecture.d.ts +26 -0
  188. package/dist/board/cards/lecture.js +62 -0
  189. package/dist/board/cards/paint.d.ts +38 -0
  190. package/dist/board/cards/paint.js +85 -0
  191. package/dist/board/cards/photo.d.ts +15 -0
  192. package/dist/board/cards/photo.js +29 -0
  193. package/dist/{cards → board/cards}/read.js +1 -10
  194. package/dist/board/cards/text.d.ts +20 -0
  195. package/dist/board/cards/text.js +59 -0
  196. package/dist/board/cards/tianzige.d.ts +16 -0
  197. package/dist/board/cards/tianzige.js +64 -0
  198. package/dist/board/cards/tutor.d.ts +72 -0
  199. package/dist/board/cards/tutor.js +134 -0
  200. package/dist/board/cards/word.d.ts +20 -0
  201. package/dist/board/cards/word.js +76 -0
  202. package/dist/board/lecture.d.ts +100 -0
  203. package/dist/board/lecture.js +204 -0
  204. package/dist/board/paper.d.ts +20 -0
  205. package/dist/board/paper.js +76 -0
  206. package/dist/board/parse.d.ts +118 -0
  207. package/dist/board/parse.js +324 -0
  208. package/dist/board/presentation.d.ts +289 -0
  209. package/dist/board/presentation.js +613 -0
  210. package/dist/board/sections.d.ts +16 -0
  211. package/dist/board/sections.js +130 -0
  212. package/dist/brain/api-tools.d.ts +8 -0
  213. package/dist/brain/api-tools.js +191 -0
  214. package/dist/brain/api.d.ts +57 -0
  215. package/dist/brain/api.js +394 -0
  216. package/dist/brain/index.d.ts +97 -0
  217. package/dist/brain/index.js +11 -0
  218. package/dist/brain/log.d.ts +5 -0
  219. package/dist/brain/log.js +22 -0
  220. package/dist/brain/runtime.d.ts +30 -0
  221. package/dist/brain/runtime.js +23 -0
  222. package/dist/brain/stream-json.d.ts +16 -0
  223. package/dist/brain/stream-json.js +82 -0
  224. package/dist/brain/stream.d.ts +20 -0
  225. package/dist/brain/stream.js +70 -0
  226. package/dist/brain/transcript.d.ts +45 -0
  227. package/dist/brain/transcript.js +132 -0
  228. package/dist/brain/types.d.ts +99 -0
  229. package/dist/brain/types.js +14 -0
  230. package/dist/chalk/actions.d.ts +37 -0
  231. package/dist/chalk/actions.js +69 -0
  232. package/dist/chalk/bundle.d.ts +26 -0
  233. package/dist/chalk/bundle.js +69 -0
  234. package/dist/chalk/check.d.ts +28 -0
  235. package/dist/chalk/check.js +291 -0
  236. package/dist/chalk/circle.d.ts +64 -0
  237. package/dist/chalk/circle.js +193 -0
  238. package/dist/chalk/clock.d.ts +84 -0
  239. package/dist/chalk/clock.js +84 -0
  240. package/dist/chalk/geometry.d.ts +44 -0
  241. package/dist/chalk/geometry.js +139 -0
  242. package/dist/chalk/glyphs/capitals.d.ts +12 -0
  243. package/dist/chalk/glyphs/capitals.js +264 -0
  244. package/dist/chalk/glyphs/index.d.ts +21 -0
  245. package/dist/chalk/glyphs/index.js +18 -0
  246. package/dist/chalk/glyphs/letters.d.ts +13 -0
  247. package/dist/chalk/glyphs/letters.js +280 -0
  248. package/dist/chalk/glyphs/metrics.d.ts +33 -0
  249. package/dist/chalk/glyphs/metrics.js +28 -0
  250. package/dist/chalk/glyphs/registry.d.ts +7 -0
  251. package/dist/chalk/glyphs/registry.js +8 -0
  252. package/dist/chalk/glyphs/sample.d.ts +32 -0
  253. package/dist/chalk/glyphs/sample.js +102 -0
  254. package/dist/chalk/glyphs/skeleton.d.ts +64 -0
  255. package/dist/chalk/glyphs/skeleton.js +126 -0
  256. package/dist/chalk/glyphs/types.d.ts +58 -0
  257. package/dist/chalk/glyphs/types.js +17 -0
  258. package/dist/chalk/index.d.ts +23 -0
  259. package/dist/chalk/index.js +15 -0
  260. package/dist/chalk/manifest.d.ts +41 -0
  261. package/dist/chalk/manifest.js +6 -0
  262. package/dist/chalk/paint.d.ts +180 -0
  263. package/dist/chalk/paint.js +210 -0
  264. package/dist/chalk/pointer.d.ts +8 -0
  265. package/dist/chalk/pointer.js +21 -0
  266. package/dist/chalk/prepare.d.ts +11 -0
  267. package/dist/chalk/prepare.js +15 -0
  268. package/dist/chalk/scene-schema.d.ts +199 -0
  269. package/dist/chalk/scene-schema.js +91 -0
  270. package/dist/chalk/seed.d.ts +3 -0
  271. package/dist/chalk/seed.js +10 -0
  272. package/dist/chalk/text-metrics.d.ts +8 -0
  273. package/dist/chalk/text-metrics.js +156 -0
  274. package/dist/chalk/timeline.d.ts +47 -0
  275. package/dist/chalk/timeline.js +84 -0
  276. package/dist/chalk/types.d.ts +150 -0
  277. package/dist/chalk/types.js +8 -0
  278. package/dist/lib/index.d.ts +14 -12
  279. package/dist/lib/index.js +14 -12
  280. package/dist/media/draw.d.ts +23 -0
  281. package/dist/media/draw.js +44 -0
  282. package/dist/media/mp3.d.ts +6 -0
  283. package/dist/media/mp3.js +58 -0
  284. package/dist/media/mp4.d.ts +1 -0
  285. package/dist/media/mp4.js +58 -0
  286. package/dist/media/tts-voices.d.ts +18 -0
  287. package/dist/media/tts-voices.js +606 -0
  288. package/dist/media/tts.d.ts +56 -0
  289. package/dist/media/tts.js +174 -0
  290. package/dist/media/vision.d.ts +25 -0
  291. package/dist/media/vision.js +71 -0
  292. package/dist/memory/commit.d.ts +67 -0
  293. package/dist/memory/commit.js +130 -0
  294. package/dist/memory/context.d.ts +86 -0
  295. package/dist/memory/context.js +97 -0
  296. package/dist/memory/diary.d.ts +84 -0
  297. package/dist/memory/diary.js +183 -0
  298. package/dist/memory/grade.d.ts +2 -0
  299. package/dist/memory/grade.js +7 -0
  300. package/dist/{lib → memory}/plan.d.ts +1 -1
  301. package/dist/{lib → memory}/plan.js +1 -1
  302. package/dist/memory/proposals.d.ts +11 -0
  303. package/dist/memory/proposals.js +43 -0
  304. package/dist/memory/retrieval.d.ts +44 -0
  305. package/dist/memory/retrieval.js +157 -0
  306. package/dist/{lib → memory}/timetable.d.ts +0 -3
  307. package/dist/{lib → memory}/timetable.js +0 -11
  308. package/dist/memory/vault-notes.d.ts +165 -0
  309. package/dist/memory/vault-notes.js +359 -0
  310. package/dist/memory/vault.d.ts +70 -0
  311. package/dist/memory/vault.js +169 -0
  312. package/dist/realtime/bailian.d.ts +120 -0
  313. package/dist/realtime/bailian.js +289 -0
  314. package/dist/realtime/cues.d.ts +51 -0
  315. package/dist/realtime/cues.js +94 -0
  316. package/dist/realtime/listen.d.ts +32 -0
  317. package/dist/realtime/listen.js +53 -0
  318. package/dist/realtime/preview.d.ts +23 -0
  319. package/dist/realtime/preview.js +38 -0
  320. package/dist/realtime/prompt.d.ts +8 -0
  321. package/dist/realtime/prompt.js +13 -0
  322. package/dist/realtime/voices.d.ts +21 -0
  323. package/dist/realtime/voices.js +71 -0
  324. package/dist/runtime/activities.d.ts +29 -0
  325. package/dist/runtime/activities.js +72 -0
  326. package/dist/runtime/activity-state.d.ts +22 -0
  327. package/dist/runtime/activity-state.js +83 -0
  328. package/dist/runtime/activity.d.ts +63 -0
  329. package/dist/runtime/activity.js +428 -0
  330. package/dist/runtime/agent-file.d.ts +24 -0
  331. package/dist/runtime/agent-file.js +59 -0
  332. package/dist/runtime/auto-bookkeep.d.ts +30 -0
  333. package/dist/runtime/auto-bookkeep.js +84 -0
  334. package/dist/{lib → runtime/context}/context-pack.d.ts +3 -3
  335. package/dist/runtime/context/context-pack.js +182 -0
  336. package/dist/runtime/context/thread-digest.d.ts +4 -0
  337. package/dist/runtime/context/thread-digest.js +35 -0
  338. package/dist/runtime/context/tutor-rules.d.ts +25 -0
  339. package/dist/runtime/context/tutor-rules.js +47 -0
  340. package/dist/runtime/delivery/delivery.d.ts +94 -0
  341. package/dist/runtime/delivery/delivery.js +145 -0
  342. package/dist/runtime/delivery/playback.d.ts +25 -0
  343. package/dist/runtime/delivery/playback.js +29 -0
  344. package/dist/runtime/delivery/player.d.ts +145 -0
  345. package/dist/runtime/delivery/player.js +221 -0
  346. package/dist/runtime/delivery/queue.d.ts +89 -0
  347. package/dist/runtime/delivery/queue.js +59 -0
  348. package/dist/runtime/home/edit.d.ts +39 -0
  349. package/dist/runtime/home/edit.js +132 -0
  350. package/dist/runtime/home/home.d.ts +191 -0
  351. package/dist/runtime/home/home.js +318 -0
  352. package/dist/runtime/home/store.d.ts +142 -0
  353. package/dist/runtime/home/store.js +455 -0
  354. package/dist/runtime/journal/conversation.d.ts +46 -0
  355. package/dist/runtime/journal/conversation.js +89 -0
  356. package/dist/runtime/journal/events.d.ts +27 -0
  357. package/dist/runtime/journal/events.js +136 -0
  358. package/dist/runtime/journal/kid-log.d.ts +105 -0
  359. package/dist/runtime/journal/kid-log.js +133 -0
  360. package/dist/runtime/journal/ledger.d.ts +17 -0
  361. package/dist/{lib → runtime/journal}/ledger.js +7 -40
  362. package/dist/runtime/journal/mix.d.ts +42 -0
  363. package/dist/runtime/journal/mix.js +129 -0
  364. package/dist/runtime/journal/mouth-index.d.ts +26 -0
  365. package/dist/runtime/journal/mouth-index.js +34 -0
  366. package/dist/runtime/journal/mouth.d.ts +54 -0
  367. package/dist/runtime/journal/mouth.js +102 -0
  368. package/dist/runtime/journal/recorder.d.ts +91 -0
  369. package/dist/runtime/journal/recorder.js +148 -0
  370. package/dist/runtime/journal/store.d.ts +123 -0
  371. package/dist/runtime/journal/store.js +316 -0
  372. package/dist/runtime/kid-input.d.ts +16 -0
  373. package/dist/runtime/kid-input.js +194 -0
  374. package/dist/runtime/kid-view.d.ts +124 -0
  375. package/dist/runtime/kid-view.js +157 -0
  376. package/dist/runtime/lecture.d.ts +86 -0
  377. package/dist/runtime/lecture.js +237 -0
  378. package/dist/runtime/live/call.d.ts +231 -0
  379. package/dist/runtime/live/call.js +1244 -0
  380. package/dist/runtime/live/turns.d.ts +48 -0
  381. package/dist/runtime/live/turns.js +102 -0
  382. package/dist/runtime/runner.d.ts +243 -0
  383. package/dist/runtime/runner.js +777 -0
  384. package/dist/runtime/talk-run.d.ts +21 -0
  385. package/dist/runtime/talk-run.js +34 -0
  386. package/dist/scenes/dictation/match.d.ts +57 -0
  387. package/dist/scenes/dictation/match.js +255 -0
  388. package/dist/scenes/dictation/recognize.d.ts +86 -0
  389. package/dist/scenes/dictation/recognize.js +163 -0
  390. package/dist/scenes/dictation/store.d.ts +112 -0
  391. package/dist/scenes/dictation/store.js +99 -0
  392. package/dist/scenes/look.d.ts +26 -0
  393. package/dist/scenes/look.js +1 -0
  394. package/dist/scenes/paint/painter.d.ts +84 -0
  395. package/dist/scenes/paint/painter.js +171 -0
  396. package/dist/scenes/paint/prompt.d.ts +23 -0
  397. package/dist/scenes/paint/prompt.js +36 -0
  398. package/dist/scenes/talk/en-words.d.ts +8 -0
  399. package/dist/scenes/talk/en-words.js +44 -0
  400. package/dist/scenes/talk/list.d.ts +44 -0
  401. package/dist/scenes/talk/list.js +88 -0
  402. package/dist/scenes/talk/store.d.ts +27 -0
  403. package/dist/scenes/talk/store.js +61 -0
  404. package/dist/scenes/talk/warmup.d.ts +16 -0
  405. package/dist/scenes/talk/warmup.js +39 -0
  406. package/dist/schema/activity.d.ts +149 -0
  407. package/dist/schema/activity.js +113 -0
  408. package/dist/schema/board.d.ts +143 -2
  409. package/dist/schema/board.js +15 -3
  410. package/dist/schema/config.d.ts +339 -103
  411. package/dist/schema/config.js +269 -84
  412. package/dist/schema/context-pack.d.ts +76 -14
  413. package/dist/schema/context-pack.js +91 -10
  414. package/dist/{lib/conversation.d.ts → schema/conversation-files.d.ts} +11 -33
  415. package/dist/schema/conversation-files.js +26 -0
  416. package/dist/schema/conversation.d.ts +391 -49
  417. package/dist/schema/conversation.js +135 -19
  418. package/dist/schema/events.d.ts +138 -0
  419. package/dist/schema/events.js +1 -0
  420. package/dist/schema/home.d.ts +56 -0
  421. package/dist/schema/home.js +35 -0
  422. package/dist/schema/index.d.ts +14 -3
  423. package/dist/schema/index.js +14 -3
  424. package/dist/schema/kid-device.d.ts +20 -0
  425. package/dist/schema/kid-device.js +32 -0
  426. package/dist/schema/ledger.d.ts +8 -63
  427. package/dist/schema/ledger.js +7 -31
  428. package/dist/schema/memory.d.ts +73 -0
  429. package/dist/schema/memory.js +47 -0
  430. package/dist/schema/plan.d.ts +2 -2
  431. package/dist/schema/plan.js +2 -2
  432. package/dist/schema/sections.d.ts +32 -25
  433. package/dist/schema/sections.js +21 -22
  434. package/dist/schema/theme.d.ts +25 -0
  435. package/dist/schema/theme.js +26 -0
  436. package/dist/schema/timetable.d.ts +2 -2
  437. package/dist/schema/timetable.js +2 -2
  438. package/dist/schema/workspace.d.ts +68 -0
  439. package/dist/schema/workspace.js +37 -0
  440. package/dist/shared/default-port.d.ts +2 -0
  441. package/dist/shared/default-port.js +2 -0
  442. package/dist/shared/errors.d.ts +8 -0
  443. package/dist/shared/errors.js +13 -0
  444. package/dist/shared/home.d.ts +2 -0
  445. package/dist/shared/home.js +16 -0
  446. package/dist/shared/human-notes.d.ts +5 -0
  447. package/dist/shared/human-notes.js +7 -0
  448. package/dist/shared/qianwen.d.ts +54 -0
  449. package/dist/shared/qianwen.js +113 -0
  450. package/dist/shared/site-url.d.ts +2 -0
  451. package/dist/shared/site-url.js +5 -0
  452. package/dist/shared/time.d.ts +9 -0
  453. package/dist/shared/time.js +22 -0
  454. package/dist/shared/tokens.d.ts +18 -0
  455. package/dist/shared/tokens.js +11 -0
  456. package/dist/shared/wav.d.ts +10 -0
  457. package/dist/shared/wav.js +50 -0
  458. package/dist/stage/chunk-226TNLQA.js +129 -0
  459. package/dist/stage/chunk-24LGQEKE.js +1 -0
  460. package/dist/stage/chunk-25XV6UY3.js +10 -0
  461. package/dist/stage/chunk-2AZI3NHJ.js +1 -0
  462. package/dist/stage/chunk-2BQZTTBE.js +1 -0
  463. package/dist/stage/chunk-2M7CGY3Y.js +11 -0
  464. package/dist/stage/chunk-2VR4WFQ7.js +10 -0
  465. package/dist/stage/chunk-2ZYXBUWG.js +9 -0
  466. package/dist/stage/chunk-32LAWMGY.js +1 -0
  467. package/dist/stage/chunk-3LEMTSOO.js +11 -0
  468. package/dist/stage/chunk-3QCKGZYE.js +32 -0
  469. package/dist/stage/chunk-44P66WFA.js +1 -0
  470. package/dist/stage/chunk-4AM6FRR6.js +7 -0
  471. package/dist/stage/chunk-4QDE4SUK.js +1 -0
  472. package/dist/stage/chunk-4QESHV3U.js +1 -0
  473. package/dist/stage/chunk-4SG5QPHB.js +2 -0
  474. package/dist/stage/chunk-4T4UVCOC.js +1 -0
  475. package/dist/stage/chunk-4WUEPPG3.js +34 -0
  476. package/dist/stage/chunk-4YCN6UZ5.js +99 -0
  477. package/dist/stage/chunk-5V7ZY2AP.js +1 -0
  478. package/dist/stage/chunk-5VS5Y2VJ.js +6 -0
  479. package/dist/stage/chunk-5W4NO2ZD.js +62 -0
  480. package/dist/stage/chunk-65CRNICM.js +1 -0
  481. package/dist/stage/chunk-66MULO7F.js +5 -0
  482. package/dist/stage/chunk-6COFQTBS.js +162 -0
  483. package/dist/stage/chunk-6VZG3M3I.js +8 -0
  484. package/dist/stage/chunk-7HVDH43T.js +1 -0
  485. package/dist/stage/chunk-7JLJN4EZ.js +8 -0
  486. package/dist/stage/chunk-7QDSP4LN.js +1 -0
  487. package/dist/stage/chunk-7R6OQAO3.js +1 -0
  488. package/dist/stage/chunk-7VTTHZKW.js +7 -0
  489. package/dist/stage/chunk-ATHR5KEN.js +10 -0
  490. package/dist/stage/chunk-B6R5LTP2.js +36 -0
  491. package/dist/stage/chunk-BD4WE264.js +1 -0
  492. package/dist/stage/chunk-BONANU47.js +206 -0
  493. package/dist/stage/chunk-BTVW7OFK.js +89 -0
  494. package/dist/stage/chunk-BUTJIDHG.js +8 -0
  495. package/dist/stage/chunk-C2IPYMML.js +84 -0
  496. package/dist/stage/chunk-C54FTPPV.js +9 -0
  497. package/dist/stage/chunk-C6LOUF2Z.js +90 -0
  498. package/dist/stage/chunk-CFF3PILO.js +339 -0
  499. package/dist/stage/chunk-CI2FQ2JY.js +9 -0
  500. package/dist/stage/chunk-CW5O4RV7.js +12 -0
  501. package/dist/stage/chunk-CYABNQYD.js +1 -0
  502. package/dist/stage/chunk-D7FFA4NS.js +15 -0
  503. package/dist/stage/chunk-DUNNXU6Z.js +8 -0
  504. package/dist/stage/chunk-E3E4Q6JF.js +6 -0
  505. package/dist/stage/chunk-EB3U3LH7.js +9 -0
  506. package/dist/stage/chunk-EGSZ736B.js +8 -0
  507. package/dist/stage/chunk-EOBXW5VQ.js +2 -0
  508. package/dist/stage/chunk-ERZC3B7Y.js +11 -0
  509. package/dist/stage/chunk-ESDOOBIH.js +11 -0
  510. package/dist/stage/chunk-EVU4QAL4.js +178 -0
  511. package/dist/stage/chunk-EVVZI2NY.js +39 -0
  512. package/dist/stage/chunk-FBKAZUKD.js +39 -0
  513. package/dist/stage/chunk-FDVKYQJN.js +1 -0
  514. package/dist/stage/chunk-FGPVYHVR.js +5 -0
  515. package/dist/stage/chunk-FHUD4AZC.js +1 -0
  516. package/dist/stage/chunk-FKUJ2DMY.js +96 -0
  517. package/dist/stage/chunk-FNZGVIJV.js +1 -0
  518. package/dist/stage/chunk-GBYSEGYM.js +78 -0
  519. package/dist/stage/chunk-GCO4TDHX.js +1 -0
  520. package/dist/stage/chunk-GKTML2LG.js +10 -0
  521. package/dist/stage/chunk-GMDIHHXQ.js +11 -0
  522. package/dist/stage/chunk-GOUNACI3.js +10 -0
  523. package/dist/stage/chunk-GXAYATPF.js +3 -0
  524. package/dist/stage/chunk-H2K2DDXV.js +8 -0
  525. package/dist/stage/chunk-H3UJI6ZY.js +13 -0
  526. package/dist/stage/chunk-H6PUGCME.js +7 -0
  527. package/dist/stage/chunk-HNBUIMIG.js +1 -0
  528. package/dist/stage/chunk-HRZY2BJQ.js +10 -0
  529. package/dist/stage/chunk-HSPJGALW.js +30 -0
  530. package/dist/stage/chunk-IBYORHIP.js +25 -0
  531. package/dist/stage/chunk-IHF4EWTY.js +1 -0
  532. package/dist/stage/chunk-ISBRPNKI.js +1 -0
  533. package/dist/stage/chunk-IZ3OI3C2.js +2 -0
  534. package/dist/stage/chunk-JEFZAC2R.js +1 -0
  535. package/dist/stage/chunk-JFIGRDPO.js +1 -0
  536. package/dist/stage/chunk-JFVYBOOC.js +9 -0
  537. package/dist/stage/chunk-JGD4TUTQ.js +1 -0
  538. package/dist/stage/chunk-JO4BEHDH.js +4 -0
  539. package/dist/stage/chunk-JOWBS42C.js +1 -0
  540. package/dist/stage/chunk-JP3TM2TG.js +1 -0
  541. package/dist/stage/chunk-JVK2C52O.js +1 -0
  542. package/dist/stage/chunk-K4I76XBX.js +14 -0
  543. package/dist/stage/chunk-KA6CZZ4M.js +1 -0
  544. package/dist/stage/chunk-KESSJ36M.js +1 -0
  545. package/dist/stage/chunk-LKATEVRU.js +1 -0
  546. package/dist/stage/chunk-LS4EJ2EI.js +1 -0
  547. package/dist/stage/chunk-LUKJQC2X.js +70 -0
  548. package/dist/stage/chunk-LWULR3SM.js +1 -0
  549. package/dist/stage/chunk-LWVRFMKX.js +2 -0
  550. package/dist/stage/chunk-LXC4ZBPZ.js +1 -0
  551. package/dist/stage/chunk-M2UP255H.js +1 -0
  552. package/dist/stage/chunk-MAPPXUZQ.js +231 -0
  553. package/dist/stage/chunk-MBMPW7Z5.js +1 -0
  554. package/dist/stage/chunk-MD3HMMTK.js +1 -0
  555. package/dist/stage/chunk-MLPCUIKR.js +17 -0
  556. package/dist/stage/chunk-MNQIRPDQ.js +8 -0
  557. package/dist/stage/chunk-MRG7MJVS.js +1 -0
  558. package/dist/stage/chunk-MU6EXW72.js +10 -0
  559. package/dist/stage/chunk-MVU2X6LU.js +4 -0
  560. package/dist/stage/chunk-N6UA5CZV.js +36 -0
  561. package/dist/stage/chunk-NLZIT2TJ.js +7 -0
  562. package/dist/stage/chunk-NOJR3J7M.js +1 -0
  563. package/dist/stage/chunk-NT7ARDOL.js +1 -0
  564. package/dist/stage/chunk-NWOGMPZH.js +1 -0
  565. package/dist/stage/chunk-NXE4KMG3.js +40 -0
  566. package/dist/stage/chunk-O4YCZXD2.js +257 -0
  567. package/dist/stage/chunk-OAJZ7HLK.js +1 -0
  568. package/dist/stage/chunk-OCFCFASO.js +1 -0
  569. package/dist/stage/chunk-ODGPG5RY.js +7 -0
  570. package/dist/stage/chunk-ODUEA52Q.js +3 -0
  571. package/dist/stage/chunk-OGDJ3FCI.js +1 -0
  572. package/dist/stage/chunk-OLDJ55TT.js +1 -0
  573. package/dist/stage/chunk-OOCL4ATI.js +2 -0
  574. package/dist/stage/chunk-OQEFDUDV.js +1 -0
  575. package/dist/stage/chunk-OQWVEWG7.js +4 -0
  576. package/dist/stage/chunk-OUIX6BGK.js +1 -0
  577. package/dist/stage/chunk-OV7OZYUO.js +7 -0
  578. package/dist/stage/chunk-PFGDY33O.js +1 -0
  579. package/dist/stage/chunk-PFJDUJB3.js +139 -0
  580. package/dist/stage/chunk-PGEW76ER.js +1 -0
  581. package/dist/stage/chunk-PP76TAQX.js +32 -0
  582. package/dist/stage/chunk-PTBOP4OT.js +2 -0
  583. package/dist/stage/chunk-PX2RVHCK.js +1 -0
  584. package/dist/stage/chunk-Q7K3PNAD.js +1 -0
  585. package/dist/stage/chunk-QDDPLZDB.js +1 -0
  586. package/dist/stage/chunk-QLGLZ77F.js +1 -0
  587. package/dist/stage/chunk-QOPFDFHI.js +1 -0
  588. package/dist/stage/chunk-QXT4KAEJ.js +1 -0
  589. package/dist/stage/chunk-R4YVZCIT.js +1 -0
  590. package/dist/stage/chunk-R6P6EHWA.js +62 -0
  591. package/dist/stage/chunk-RCH3OXBI.js +9 -0
  592. package/dist/stage/chunk-RHPE44I2.js +1 -0
  593. package/dist/stage/chunk-RJ2R4FVC.js +1 -0
  594. package/dist/stage/chunk-RJH2YVTD.js +1 -0
  595. package/dist/stage/chunk-RLWWW5OB.js +6 -0
  596. package/dist/stage/chunk-S3WO35Z7.js +120 -0
  597. package/dist/stage/chunk-S7ZGX6MW.js +1 -0
  598. package/dist/stage/chunk-SIAWX27B.js +1 -0
  599. package/dist/stage/chunk-SLG4X622.js +1 -0
  600. package/dist/stage/chunk-SLJRBC77.js +168 -0
  601. package/dist/stage/chunk-SRORWQJZ.js +1 -0
  602. package/dist/stage/chunk-STZTUIIF.js +2 -0
  603. package/dist/stage/chunk-SVQ6MWNV.js +9 -0
  604. package/dist/stage/chunk-TL3HLL2S.js +132 -0
  605. package/dist/stage/chunk-U3DOE6SF.js +24 -0
  606. package/dist/stage/chunk-UABQIZKW.js +6 -0
  607. package/dist/stage/chunk-UDK3R764.js +1 -0
  608. package/dist/stage/chunk-UFF4E54B.js +41 -0
  609. package/dist/stage/chunk-UFP5Q4AY.js +1 -0
  610. package/dist/stage/chunk-UMH2TSW2.js +72 -0
  611. package/dist/stage/chunk-UTASVNF5.js +10 -0
  612. package/dist/stage/chunk-UW7ML5ML.js +88 -0
  613. package/dist/stage/chunk-V3J7F6OP.js +1 -0
  614. package/dist/stage/chunk-VEHP5B5Q.js +5 -0
  615. package/dist/stage/chunk-VRXWB733.js +9 -0
  616. package/dist/stage/chunk-VVDHBBS5.js +5 -0
  617. package/dist/stage/chunk-VYFOH6FU.js +106 -0
  618. package/dist/stage/chunk-W3VZTLQS.js +3 -0
  619. package/dist/stage/chunk-W7WNRWTZ.js +8 -0
  620. package/dist/stage/chunk-WHUCV53C.js +1 -0
  621. package/dist/stage/chunk-WULMYHIF.js +1 -0
  622. package/dist/stage/chunk-X54EX7AW.js +9 -0
  623. package/dist/stage/chunk-X565ISZM.js +1 -0
  624. package/dist/stage/chunk-XGZMDECB.js +1 -0
  625. package/dist/stage/chunk-XHONC4RF.js +172 -0
  626. package/dist/stage/chunk-XIK4XQ6E.js +24 -0
  627. package/dist/stage/chunk-XJQQWFTE.js +1 -0
  628. package/dist/stage/chunk-XM4WOU3I.js +13 -0
  629. package/dist/stage/chunk-XM7Y5HP5.js +38 -0
  630. package/dist/stage/chunk-XNYYRGD5.js +292 -0
  631. package/dist/stage/chunk-XOYVR3SV.js +1 -0
  632. package/dist/stage/chunk-XQIW5HCE.js +1 -0
  633. package/dist/stage/chunk-YEWL7FUW.js +8 -0
  634. package/dist/stage/chunk-YI55PY3V.js +1 -0
  635. package/dist/stage/chunk-YM63HI6W.js +1 -0
  636. package/dist/stage/chunk-YNLGLU4P.js +9 -0
  637. package/dist/stage/chunk-YTNMNOWP.js +1 -0
  638. package/dist/stage/chunk-YV62XKTC.js +1 -0
  639. package/dist/stage/chunk-YVBA3QW6.js +1 -0
  640. package/dist/stage/chunk-Z2SY2HOC.js +1 -0
  641. package/dist/stage/chunk-ZBTCQEBK.js +10 -0
  642. package/dist/stage/chunk-ZCUFN74D.js +1 -0
  643. package/dist/stage/chunk-ZHOULXEJ.js +11 -0
  644. package/dist/stage/chunk-ZTRZIET2.js +1 -0
  645. package/dist/stage/index.html +1 -0
  646. package/dist/stage/stage.css +1 -1
  647. package/dist/stage/stage.js +1 -4383
  648. package/dist/ui/dev/dev-page.d.ts +1 -0
  649. package/dist/ui/dev/dev-page.js +2021 -0
  650. package/dist/ui/dev/dev-theme.d.ts +6 -0
  651. package/dist/ui/dev/dev-theme.js +67 -0
  652. package/dist/ui/dev/voice-gallery-page.d.ts +1 -0
  653. package/dist/ui/dev/voice-gallery-page.js +121 -0
  654. package/dist/ui/dev/voice-scenes.d.ts +21 -0
  655. package/dist/ui/dev/voice-scenes.js +30 -0
  656. package/dist/ui/dictation/en-box.d.ts +2 -0
  657. package/dist/ui/dictation/en-box.js +86 -0
  658. package/dist/ui/dictation/en-page.d.ts +1 -0
  659. package/dist/ui/dictation/en-page.js +484 -0
  660. package/dist/ui/dictation/page.d.ts +1 -0
  661. package/dist/ui/dictation/page.js +1084 -0
  662. package/dist/ui/dictation/parent-page.d.ts +1 -0
  663. package/dist/ui/dictation/parent-page.js +234 -0
  664. package/dist/ui/dictation/reel-mode.d.ts +1 -0
  665. package/dist/ui/dictation/reel-mode.js +87 -0
  666. package/dist/ui/dictation/reel-page.d.ts +1 -0
  667. package/dist/ui/dictation/reel-page.js +62 -0
  668. package/dist/ui/dictation/reel.d.ts +163 -0
  669. package/dist/ui/dictation/reel.js +436 -0
  670. package/dist/ui/dictation/ui.d.ts +44 -0
  671. package/dist/ui/dictation/ui.js +80 -0
  672. package/dist/ui/dictation/unlock.d.ts +7 -0
  673. package/dist/ui/dictation/unlock.js +16 -0
  674. package/dist/ui/kid/audio-client.d.ts +11 -0
  675. package/dist/ui/kid/audio-client.js +74 -0
  676. package/dist/ui/kid/board-mark-art.d.ts +37 -0
  677. package/dist/ui/kid/board-mark-art.js +5 -0
  678. package/dist/ui/kid/board-mark.d.ts +24 -0
  679. package/dist/ui/kid/board-mark.js +58 -0
  680. package/dist/ui/kid/home-tiles.d.ts +14 -0
  681. package/dist/ui/kid/home-tiles.js +44 -0
  682. package/dist/ui/kid/kid-log.d.ts +15 -0
  683. package/dist/ui/kid/kid-log.js +87 -0
  684. package/dist/ui/kid/kid-nav.d.ts +11 -0
  685. package/dist/ui/kid/kid-nav.js +22 -0
  686. package/dist/ui/kid/kid-page.d.ts +9 -0
  687. package/dist/ui/kid/kid-page.js +3684 -0
  688. package/dist/ui/kid/letters.d.ts +26 -0
  689. package/dist/ui/kid/letters.js +51 -0
  690. package/dist/ui/kid/photo-edit.d.ts +83 -0
  691. package/dist/ui/kid/photo-edit.js +106 -0
  692. package/dist/ui/kid/photo-ui.d.ts +23 -0
  693. package/dist/ui/kid/photo-ui.js +60 -0
  694. package/dist/ui/kid/reel.d.ts +419 -0
  695. package/dist/ui/kid/reel.js +648 -0
  696. package/dist/ui/kid/tianzige.d.ts +8 -0
  697. package/dist/ui/kid/tianzige.js +45 -0
  698. package/dist/ui/kid/tutor-face.d.ts +35 -0
  699. package/dist/ui/kid/tutor-face.js +84 -0
  700. package/dist/ui/kid/voice-ui.d.ts +70 -0
  701. package/dist/ui/kid/voice-ui.js +316 -0
  702. package/dist/ui/kid/voice-view.d.ts +71 -0
  703. package/dist/ui/kid/voice-view.js +75 -0
  704. package/dist/ui/kid/word-draw.d.ts +2 -0
  705. package/dist/ui/kid/word-draw.js +107 -0
  706. package/dist/ui/kid/word-emoji.d.ts +10 -0
  707. package/dist/ui/kid/word-emoji.js +68 -0
  708. package/dist/ui/kid/word-layout.d.ts +25 -0
  709. package/dist/ui/kid/word-layout.js +29 -0
  710. package/dist/ui/parent/parent-home-page.d.ts +1 -0
  711. package/dist/ui/parent/parent-home-page.js +722 -0
  712. package/dist/ui/parent/parent-page.d.ts +2 -0
  713. package/dist/ui/parent/parent-page.js +511 -0
  714. package/dist/ui/parent/parent-settings-page.d.ts +1 -0
  715. package/dist/ui/parent/parent-settings-page.js +133 -0
  716. package/dist/ui/parent/qr-page.d.ts +8 -0
  717. package/dist/ui/parent/qr-page.js +66 -0
  718. package/dist/ui/shared/brand.d.ts +38 -0
  719. package/dist/ui/shared/brand.js +53 -0
  720. package/dist/ui/shared/favicon.d.ts +12 -0
  721. package/dist/ui/shared/favicon.js +96 -0
  722. package/dist/ui/shared/icon.d.ts +9 -0
  723. package/dist/ui/shared/icon.js +35 -0
  724. package/dist/ui/shared/inline-lib.d.ts +1 -0
  725. package/dist/ui/shared/inline-lib.js +28 -0
  726. package/dist/ui/shared/logo.d.ts +31 -0
  727. package/dist/ui/shared/logo.js +43 -0
  728. package/dist/ui/shared/page-dom.d.ts +12 -0
  729. package/dist/ui/shared/page-dom.js +36 -0
  730. package/dist/ui/shared/png.d.ts +1 -0
  731. package/dist/ui/shared/png.js +45 -0
  732. package/dist/ui/shared/qr-svg.d.ts +3 -0
  733. package/dist/ui/shared/qr-svg.js +32 -0
  734. package/dist/ui/shared/qr.d.ts +14 -0
  735. package/dist/ui/shared/qr.js +281 -0
  736. package/dist/ui/shared/reel-dock.d.ts +22 -0
  737. package/dist/ui/shared/reel-dock.js +365 -0
  738. package/dist/ui/shared/tutor-color.d.ts +15 -0
  739. package/dist/ui/shared/tutor-color.js +47 -0
  740. package/dist/ui/talk/page.d.ts +6 -0
  741. package/dist/ui/talk/page.js +294 -0
  742. package/grades/grade-2/README.md +11 -0
  743. package/grades/grade-2/VALIDATION.md +41 -0
  744. package/grades/grade-2/agents/chinese-tutor/activities//344/275/240/350/257/264/346/210/221/347/224/273.md +157 -0
  745. package/grades/grade-2/agents/chinese-tutor/activities//344/275/240/350/257/264/346/210/221/347/224/273./344/276/213/345/255/220.md +78 -0
  746. package/grades/grade-2/agents/chinese-tutor/activities//344/276/213/345/255/220/345/233/276//345/200/237/344/274/236.jpg +0 -0
  747. package/grades/grade-2/agents/chinese-tutor/activities//344/276/213/345/255/220/345/233/276//345/260/217/347/214/264/346/221/230/346/241/203.jpg +0 -0
  748. package/grades/grade-2/agents/chinese-tutor/activities//345/206/231/350/257/235.md +64 -0
  749. package/grades/grade-2/agents/chinese-tutor/activities//345/206/231/350/257/235./344/276/213/345/255/220.md +31 -0
  750. package/grades/grade-2/agents/chinese-tutor/activities//345/220/254/345/206/231.md +48 -0
  751. package/grades/grade-2/agents/chinese-tutor/activities//345/244/215/344/271/240.md +79 -0
  752. package/grades/grade-2/agents/chinese-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  753. package/grades/grade-2/agents/chinese-tutor/activities//345/260/217/350/257/276/345/240/202.md +53 -0
  754. package/grades/grade-2/agents/chinese-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232.md +81 -0
  755. package/grades/grade-2/agents/chinese-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232./344/276/213/345/255/220.md +35 -0
  756. package/grades/grade-2/agents/chinese-tutor/activities//347/234/213/345/233/276/350/257/264/350/257/235.md +94 -0
  757. package/grades/grade-2/agents/chinese-tutor/activities//347/234/213/345/233/276/350/257/264/350/257/235./344/276/213/345/255/220.md +63 -0
  758. package/grades/grade-2/agents/chinese-tutor/activities//351/242/204/344/271/240.md +82 -0
  759. package/grades/grade-2/agents/chinese-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  760. package/grades/grade-2/agents/chinese-tutor.md +59 -0
  761. package/grades/grade-2/agents/english-tutor/activities//345/217/243/350/257/255/350/257/276.md +149 -0
  762. package/grades/grade-2/agents/english-tutor/activities//345/217/243/350/257/255/350/257/276./344/276/213/345/255/220.md +13 -0
  763. package/grades/grade-2/agents/english-tutor/activities//345/220/254/345/206/231.md +47 -0
  764. package/grades/grade-2/agents/english-tutor/activities//345/244/215/344/271/240.md +78 -0
  765. package/grades/grade-2/agents/english-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  766. package/grades/grade-2/agents/english-tutor/activities//345/260/217/350/257/276/345/240/202.md +53 -0
  767. package/grades/grade-2/agents/english-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232.md +80 -0
  768. package/grades/grade-2/agents/english-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232./344/276/213/345/255/220.md +35 -0
  769. package/grades/grade-2/agents/english-tutor/activities//351/242/204/344/271/240.md +86 -0
  770. package/grades/grade-2/agents/english-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  771. package/grades/grade-2/agents/english-tutor.md +57 -0
  772. package/grades/grade-2/agents/math-tutor/activities//345/244/215/344/271/240.md +78 -0
  773. package/grades/grade-2/agents/math-tutor/activities//345/244/215/344/271/240./344/276/213/345/255/220.md +35 -0
  774. package/grades/grade-2/agents/math-tutor/activities//345/260/217/350/257/276/345/240/202.md +56 -0
  775. package/grades/grade-2/agents/math-tutor/activities//345/260/217/350/257/276/345/240/202./344/276/213/345/255/220.md +52 -0
  776. package/grades/grade-2/agents/math-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232.md +80 -0
  777. package/grades/grade-2/agents/math-tutor/activities//346/243/200/346/237/245/344/275/234/344/270/232./344/276/213/345/255/220.md +35 -0
  778. package/grades/grade-2/agents/math-tutor/activities//351/242/204/344/271/240.md +81 -0
  779. package/grades/grade-2/agents/math-tutor/activities//351/242/204/344/271/240./344/276/213/345/255/220.md +35 -0
  780. package/grades/grade-2/agents/math-tutor.md +51 -0
  781. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/index.json +44 -0
  782. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-1.mp3 +0 -0
  783. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-2.mp3 +0 -0
  784. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-3.mp3 +0 -0
  785. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-4.mp3 +0 -0
  786. package/grades/grade-2/examples/2026-10-27-pingjunfen/audio/step-5.mp3 +0 -0
  787. package/grades/grade-2/examples/2026-10-27-pingjunfen/bake.json +1 -0
  788. package/grades/grade-2/examples/2026-10-27-pingjunfen/manifest.json +63 -0
  789. package/grades/grade-2/examples/2026-10-27-pingjunfen/scene.json +247 -0
  790. package/grades/grade-2/examples/2026-10-27-pingjunfen.md +40 -0
  791. package/grades/grade-2/examples/2026-10-27-pingjunfen.ts +26 -0
  792. package/grades/grade-2/examples//345/271/263/345/235/207/345/210/206./344/276/213/345/255/220.md +24 -0
  793. package/grades/grade-2/examples//346/225/260/345/255/246/345/271/263/345/235/207/345/210/206.md +42 -0
  794. package/grades/grade-2/validation/2026-10-27.json +4410 -0
  795. package/package.json +27 -15
  796. package/skills/chalk-cli/SKILL.md +62 -0
  797. package/skills/chalk-scene/SKILL.md +91 -0
  798. package/skills/chalk-teaching/SKILL.md +82 -0
  799. package/skills/chalk-teaching/models//344/272/244/351/224/231/346/225/260/345/210/227/345/210/206/350/241/214.md +8 -0
  800. package/skills/chalk-teaching/models//345/207/221/345/215/201.md +7 -0
  801. package/skills/chalk-teaching/models//345/221/250/346/234/237/350/247/204/345/276/213.md +6 -0
  802. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/345/242/236/345/207/217.md +6 -0
  803. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/346/257/224/345/244/232/345/260/221-/346/261/202/345/244/247/346/225/260/346/261/202/345/260/217/346/225/260.md +7 -0
  804. package/skills/chalk-teaching/models//345/256/236/347/211/251/345/233/276-/346/257/224/345/244/232/345/260/221-/346/261/202/345/267/256.md +6 -0
  805. package/skills/chalk-teaching/models//345/260/217/346/243/222/350/277/233/344/275/215/345/212/240.md +7 -0
  806. package/skills/chalk-teaching/models//345/260/217/346/243/222/351/200/200/344/275/215/345/207/217.md +6 -0
  807. package/skills/chalk-teaching/models//346/216/222/351/230/237/347/202/271/351/230/265.md +7 -0
  808. package/skills/chalk-teaching/models//346/227/266/351/227/264/346/225/260/350/275/264.md +6 -0
  809. package/skills/chalk-teaching/models//346/245/274/345/261/202/351/227/264/351/232/224/345/233/276.md +7 -0
  810. package/skills/chalk-teaching/models//347/240/264/345/215/201.md +7 -0
  811. package/skills/chalk-teaching/models//347/253/226/345/274/217/351/200/200/344/275/215.md +6 -0
  812. package/skills/chalk-teaching/models//347/272/277/346/256/265/345/233/276.md +7 -0
  813. package/skills/chalk-teaching/models-index.md +24 -0
  814. package/skills/chalk-teaching/references//350/256/262/350/247/243/346/250/241/346/235/277/344/270/211/346/241/243.md +32 -0
  815. package/skills/chalk-teaching/references//350/257/264/346/230/216/346/226/207/344/273/266.md +102 -0
  816. package/skills/chalk-verify/SKILL.md +57 -0
  817. package/skills/chalk-verify/references//350/257/204/345/210/244/346/240/207/345/207/206.md +69 -0
  818. package/skills/cotutor-analyze/SKILL.md +106 -0
  819. package/skills/cotutor-analyze/references//345/221/275/344/273/244/344/270/216/346/226/207/344/273/266.md +31 -0
  820. package/skills/cotutor-board/SKILL.md +373 -0
  821. package/skills/cotutor-board/references/README.md +38 -0
  822. package/skills/cotutor-board/references/canvas.md +68 -0
  823. package/skills/cotutor-board/references/choice.md +55 -0
  824. package/skills/cotutor-board/references/code.md +46 -0
  825. package/skills/cotutor-board/references/image.md +52 -0
  826. package/skills/cotutor-board/references/lecture.md +69 -0
  827. package/skills/cotutor-board/references/paint.md +77 -0
  828. package/skills/cotutor-board/references/photo.md +61 -0
  829. package/skills/cotutor-board/references/read.md +51 -0
  830. package/skills/cotutor-board/references/text.md +69 -0
  831. package/skills/cotutor-board/references/tianzige.md +78 -0
  832. package/skills/cotutor-board/references/word.md +91 -0
  833. package/skills/cotutor-home/SKILL.md +170 -0
  834. package/skills/cotutor-home/references/dictation.md +97 -0
  835. package/skills/cotutor-home/references/tutor.md +149 -0
  836. package/skills/cotutor-home/references//345/221/275/344/273/244.md +21 -0
  837. package/skills/cotutor-home/references//351/246/226/351/241/265/350/257/255/346/263/225.md +143 -0
  838. package/skills/cotutor-tune/SKILL.md +147 -0
  839. package/skills/cotutor-tune/references//345/255/227/346/256/265.md +53 -0
  840. package/skills/cotutor-tutor/SKILL.md +253 -0
  841. package/skills/cotutor-tutor/references//344/270/212/344/270/213/346/226/207/345/214/205.md +78 -0
  842. package/themes/default/kid.css +86 -0
  843. package/themes/default/theme.json +26 -0
  844. package/agents/chinese-tutor.md +0 -67
  845. package/agents/homework-tutor.md +0 -17
  846. package/agents/math-tutor.md +0 -68
  847. package/agents/planner.md +0 -18
  848. package/agents/reading-tutor.md +0 -65
  849. package/agents/scene-maker.md +0 -41
  850. package/dist/cards/canvas.d.ts +0 -22
  851. package/dist/cards/canvas.js +0 -65
  852. package/dist/cards/fill.d.ts +0 -14
  853. package/dist/cards/fill.js +0 -64
  854. package/dist/cards/index.d.ts +0 -48
  855. package/dist/cards/index.js +0 -115
  856. package/dist/cards/kind.js +0 -7
  857. package/dist/cards/scene.d.ts +0 -24
  858. package/dist/cards/scene.js +0 -67
  859. package/dist/cards/text.d.ts +0 -18
  860. package/dist/cards/text.js +0 -41
  861. package/dist/cli/cert.d.ts +0 -7
  862. package/dist/cli/cert.js +0 -36
  863. package/dist/cli/doctor.d.ts +0 -22
  864. package/dist/cli/doctor.js +0 -355
  865. package/dist/cli/init.js +0 -116
  866. package/dist/cli/main.js +0 -243
  867. package/dist/cli/serve.d.ts +0 -30
  868. package/dist/cli/serve.js +0 -56
  869. package/dist/cli/skeleton.d.ts +0 -39
  870. package/dist/cli/skeleton.js +0 -184
  871. package/dist/cli/skills.d.ts +0 -40
  872. package/dist/cli/skills.js +0 -170
  873. package/dist/cli/workspace.d.ts +0 -69
  874. package/dist/lib/agent-file.d.ts +0 -10
  875. package/dist/lib/agent-file.js +0 -16
  876. package/dist/lib/board.d.ts +0 -15
  877. package/dist/lib/board.js +0 -107
  878. package/dist/lib/context-pack.js +0 -55
  879. package/dist/lib/conversation.js +0 -88
  880. package/dist/lib/kid-board.d.ts +0 -148
  881. package/dist/lib/kid-board.js +0 -294
  882. package/dist/lib/kid-view.d.ts +0 -63
  883. package/dist/lib/kid-view.js +0 -93
  884. package/dist/lib/ledger.d.ts +0 -29
  885. package/dist/lib/run-plan.d.ts +0 -30
  886. package/dist/lib/run-plan.js +0 -32
  887. package/dist/lib/sections.d.ts +0 -12
  888. package/dist/lib/sections.js +0 -151
  889. package/dist/lib/stream.d.ts +0 -15
  890. package/dist/lib/stream.js +0 -69
  891. package/dist/lib/transcript.d.ts +0 -36
  892. package/dist/lib/transcript.js +0 -95
  893. package/dist/server/app.d.ts +0 -74
  894. package/dist/server/app.js +0 -406
  895. package/dist/server/kid-page.d.ts +0 -1
  896. package/dist/server/kid-page.js +0 -768
  897. package/dist/server/mock.js +0 -403
  898. package/dist/server/parent-page.d.ts +0 -8
  899. package/dist/server/parent-page.js +0 -393
  900. package/dist/server/runner.d.ts +0 -64
  901. package/dist/server/runner.js +0 -277
  902. package/dist/server/scene-props.d.ts +0 -16
  903. package/dist/server/scene-props.js +0 -39
  904. package/dist/server/store.d.ts +0 -43
  905. package/dist/server/store.js +0 -210
  906. package/dist/server/tts.d.ts +0 -51
  907. package/dist/server/tts.js +0 -99
  908. /package/dist/{cli → app/cli}/main.d.ts +0 -0
  909. /package/dist/{cards → board/cards}/choice.d.ts +0 -0
  910. /package/dist/{cards → board/cards}/code.d.ts +0 -0
  911. /package/dist/{cards → board/cards}/image.d.ts +0 -0
  912. /package/dist/{cards → board/cards}/read.d.ts +0 -0
@@ -0,0 +1,4410 @@
1
+ {
2
+ "date": "2026-10-27",
3
+ "note": "合成孩子,不是实际儿童教学效果测量。full-flow 的旧开场及语文复习问题由后续 opening-repeat / review-repeat 验证替代;历史失败保留。哈希为当前交付源文件,不代表所有历史试跑都使用此版本。",
4
+ "runtime": {
5
+ "chinese": "qwen3.8-max / low",
6
+ "math": "qwen3.8-max / medium",
7
+ "english": "qwen3.8-flash / medium (initial 与 opening-example 使用 low)"
8
+ },
9
+ "source_sha256": {
10
+ "agents/chinese-tutor/activities/你说我画.md": "d523f2b501bf0bccab65fd31bada606e9db2fe2a2d65a96fd326890d31e9b082",
11
+ "agents/chinese-tutor/activities/你说我画.例子.md": "84d85d4f75c282eac097ef1aeb8b116086ca1dd2cd1f1e3893a0c4a70aaedc03",
12
+ "agents/chinese-tutor/activities/写话.md": "93478f11a9d62676e225e35c15d8ef7e4270ef1564e0659a1a7d74bd87ce03ad",
13
+ "agents/chinese-tutor/activities/写话.例子.md": "e217c2451d83cb5ff9ed2cc9891e8107cb5efee3db59a6bcfe89f3dec505e847",
14
+ "agents/chinese-tutor/activities/听写.md": "792c657705f4832ff203918fc1d3115568e35979d83b86081875b97632a0719c",
15
+ "agents/chinese-tutor/activities/复习.md": "369ba8078281e2a28733c2e9ee66f9544ed8b4e6c818d59f5ae126125ca93650",
16
+ "agents/chinese-tutor/activities/复习.例子.md": "b222735074ba47dd4cbcff32b001927c23b85e3c3d144234588e05194a00fb3f",
17
+ "agents/chinese-tutor/activities/小课堂.md": "dd4077151e04e0c49dcbc235f7e476e94ac231686e0dc658b39394edc8873c83",
18
+ "agents/chinese-tutor/activities/批改.md": "571c06407191ec1940066a5af4835210e939d165e4581273403c0e4d0947d330",
19
+ "agents/chinese-tutor/activities/批改.例子.md": "16847554b4295044405b09cb1cc23112dbb7057381451e67a53c31d65af7930d",
20
+ "agents/chinese-tutor/activities/看图说话.md": "8cc8272aaa1c7a6dd1450cb987cff3cb75a7915c34b569b774ad3b7903cf91c1",
21
+ "agents/chinese-tutor/activities/看图说话.例子.md": "c024c29bed01d24844ab04aeda89ea11587efd69dd99e5f11472b5d49e496090",
22
+ "agents/chinese-tutor/activities/预习.md": "280982ef5d51766b60c8ac456313f94c8cca2f9e868aa7b3eaba2236d5de8606",
23
+ "agents/chinese-tutor/activities/预习.例子.md": "9f9433d95329e245ea1f13857ee415d8b122c295e4614bdcd3effe77fff3d897",
24
+ "agents/chinese-tutor.md": "4aacfcf59fba0b4c7017dd8aa0d094b3c5e1f99ec81b3acc21b64188619bf0fd",
25
+ "agents/english-tutor/activities/口语课.md": "e5036c2970fdb3923e24f79d2f0d88635fa79a8203a18040cd80194dce42098c",
26
+ "agents/english-tutor/activities/口语课.例子.md": "aae9911f5c94d90e65040fe70bb78c183c2cb1d772a4fdd2144bf8f893323703",
27
+ "agents/english-tutor/activities/听写.md": "e50465fbfe503ff8d9da18ef65da249df65652f8614885fa1ed76f3e47a20096",
28
+ "agents/english-tutor/activities/复习.md": "1eeba0f742b7890a1c1839ea4010d0bcb97fd35a120a365ea5b2472fde5fadc5",
29
+ "agents/english-tutor/activities/复习.例子.md": "6900e6fa0aef733635ba9453b8e9cdfaad816ac86b5f0de48504d697a553ca55",
30
+ "agents/english-tutor/activities/小课堂.md": "87f44f382df7c01e3819d24d6655368f758c095178cbe402f186026f6fba88ee",
31
+ "agents/english-tutor/activities/批改.md": "4a8f164d66b35f0631a86814e7f7cff8c7b6127fcef35fe0b53d2511736e610d",
32
+ "agents/english-tutor/activities/批改.例子.md": "b826907263465bb6c0747194ac28c0cc5acc677cf0e2f18a4d162dd285edb381",
33
+ "agents/english-tutor/activities/预习.md": "8e95d07675c2cc112de458ec5dd4cd1ac773e044a3aa86828b3da3e0dd5c9f9c",
34
+ "agents/english-tutor/activities/预习.例子.md": "5ef263772085a3c557a52d1d79296adaf759d06a7fac4a619cd5c5369a317bba",
35
+ "agents/english-tutor.md": "e3e57ac436ec2157f91173279cfa671bfe512026f2af7646e6538043f79cfd3d",
36
+ "agents/math-tutor/activities/复习.md": "77b38b1f873eeaac91aebb9bb8f10b6d3a9ecc37352e8af3ee544e68a6796d0f",
37
+ "agents/math-tutor/activities/复习.例子.md": "a2982d5a7526b34651e1dc3d93715e0106bbdbb496a71941237da98b25fe17e5",
38
+ "agents/math-tutor/activities/小课堂.md": "1d9e0e2b4af9aa07b233c46c73b386206329d786e51e0b01f1b9770cb6eb2887",
39
+ "agents/math-tutor/activities/小课堂.例子.md": "458f3e2af8178611fc48021f37d94b50fbfdc88c364a893a9b57207d66a006b2",
40
+ "agents/math-tutor/activities/批改.md": "72781079388a027e91104d5670ecce8841c16fc82a2de04d0d6cbd5b4bb198e0",
41
+ "agents/math-tutor/activities/批改.例子.md": "897cb865b2c5e0ff45a162f20ca83a1d1907855a5f248bcdb6621abb84fa9dd0",
42
+ "agents/math-tutor/activities/预习.md": "d45e5abe6c9428fef77fc689fba75d04ee2bed1748c4fb9f388747d7d92257cf",
43
+ "agents/math-tutor/activities/预习.例子.md": "74d71267afa7010ff9d99928e153de08ce268d708030b0d14d2a6ab51a0f23d5",
44
+ "agents/math-tutor.md": "1672a45dc9e9962ce490aa93544c81e8dd5cf82058c4cc18a03d6be461c8db5a"
45
+ },
46
+ "phases": [
47
+ {
48
+ "phase": "initial",
49
+ "complete": true,
50
+ "results": [
51
+ {
52
+ "tutor": "math-tutor",
53
+ "name": "批改",
54
+ "pass": true,
55
+ "errors": [],
56
+ "checks": [
57
+ {
58
+ "name": "缺少材料",
59
+ "fail": []
60
+ },
61
+ {
62
+ "name": "给定范围后尝试并结束",
63
+ "fail": []
64
+ },
65
+ {
66
+ "name": "孩子想停",
67
+ "fail": []
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ "tutor": "math-tutor",
73
+ "name": "预习",
74
+ "pass": true,
75
+ "errors": [],
76
+ "checks": [
77
+ {
78
+ "name": "缺少材料",
79
+ "fail": []
80
+ },
81
+ {
82
+ "name": "给定范围后尝试并结束",
83
+ "fail": []
84
+ },
85
+ {
86
+ "name": "孩子想停",
87
+ "fail": []
88
+ }
89
+ ]
90
+ },
91
+ {
92
+ "tutor": "math-tutor",
93
+ "name": "复习",
94
+ "pass": true,
95
+ "errors": [],
96
+ "checks": [
97
+ {
98
+ "name": "缺少材料",
99
+ "fail": []
100
+ },
101
+ {
102
+ "name": "给定范围后尝试并结束",
103
+ "fail": []
104
+ },
105
+ {
106
+ "name": "孩子想停",
107
+ "fail": []
108
+ }
109
+ ]
110
+ },
111
+ {
112
+ "tutor": "chinese-tutor",
113
+ "name": "批改",
114
+ "pass": true,
115
+ "errors": [],
116
+ "checks": [
117
+ {
118
+ "name": "缺少材料",
119
+ "fail": []
120
+ },
121
+ {
122
+ "name": "给定范围后尝试并结束",
123
+ "fail": []
124
+ },
125
+ {
126
+ "name": "孩子想停",
127
+ "fail": []
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ "tutor": "chinese-tutor",
133
+ "name": "预习",
134
+ "pass": true,
135
+ "errors": [],
136
+ "checks": [
137
+ {
138
+ "name": "缺少材料",
139
+ "fail": []
140
+ },
141
+ {
142
+ "name": "给定范围后尝试并结束",
143
+ "fail": []
144
+ },
145
+ {
146
+ "name": "孩子想停",
147
+ "fail": []
148
+ }
149
+ ]
150
+ },
151
+ {
152
+ "tutor": "chinese-tutor",
153
+ "name": "复习",
154
+ "pass": true,
155
+ "errors": [],
156
+ "checks": [
157
+ {
158
+ "name": "缺少材料",
159
+ "fail": []
160
+ },
161
+ {
162
+ "name": "给定范围后尝试并结束",
163
+ "fail": []
164
+ },
165
+ {
166
+ "name": "孩子想停",
167
+ "fail": []
168
+ }
169
+ ]
170
+ },
171
+ {
172
+ "tutor": "chinese-tutor",
173
+ "name": "写话",
174
+ "pass": true,
175
+ "errors": [],
176
+ "checks": [
177
+ {
178
+ "name": "讲一件小事",
179
+ "fail": []
180
+ },
181
+ {
182
+ "name": "想停就停",
183
+ "fail": []
184
+ },
185
+ {
186
+ "name": "没看到字不能判书写",
187
+ "fail": []
188
+ }
189
+ ]
190
+ },
191
+ {
192
+ "tutor": "english-tutor",
193
+ "name": "批改",
194
+ "pass": false,
195
+ "errors": [],
196
+ "checks": [
197
+ {
198
+ "name": "缺少材料",
199
+ "fail": [
200
+ {
201
+ "check": "出拍给我看卡",
202
+ "pass": false,
203
+ "why": "1 轮都没写拍给我看卡"
204
+ }
205
+ ]
206
+ },
207
+ {
208
+ "name": "给定范围后尝试并结束",
209
+ "fail": []
210
+ },
211
+ {
212
+ "name": "孩子想停",
213
+ "fail": []
214
+ }
215
+ ]
216
+ },
217
+ {
218
+ "tutor": "english-tutor",
219
+ "name": "预习",
220
+ "pass": true,
221
+ "errors": [],
222
+ "checks": [
223
+ {
224
+ "name": "缺少材料",
225
+ "fail": []
226
+ },
227
+ {
228
+ "name": "给定范围后尝试并结束",
229
+ "fail": []
230
+ },
231
+ {
232
+ "name": "孩子想停",
233
+ "fail": []
234
+ }
235
+ ]
236
+ },
237
+ {
238
+ "tutor": "english-tutor",
239
+ "name": "复习",
240
+ "pass": false,
241
+ "errors": [],
242
+ "checks": [
243
+ {
244
+ "name": "缺少材料",
245
+ "fail": [
246
+ {
247
+ "check": "出拍给我看卡",
248
+ "pass": false,
249
+ "why": "1 轮都没写拍给我看卡"
250
+ }
251
+ ]
252
+ },
253
+ {
254
+ "name": "给定范围后尝试并结束",
255
+ "fail": []
256
+ },
257
+ {
258
+ "name": "孩子想停",
259
+ "fail": []
260
+ }
261
+ ]
262
+ }
263
+ ]
264
+ },
265
+ {
266
+ "phase": "opening-example",
267
+ "complete": true,
268
+ "results": [
269
+ {
270
+ "tutor": "english-tutor",
271
+ "name": "批改",
272
+ "pass": false,
273
+ "checks": [
274
+ {
275
+ "name": "缺少材料",
276
+ "errors": [],
277
+ "fail": []
278
+ },
279
+ {
280
+ "name": "给定范围后尝试并结束",
281
+ "errors": [],
282
+ "fail": [
283
+ {
284
+ "check": "每节有讲稿",
285
+ "pass": false,
286
+ "why": "第 1 轮没有讲稿"
287
+ }
288
+ ]
289
+ },
290
+ {
291
+ "name": "孩子想停",
292
+ "errors": [],
293
+ "fail": []
294
+ }
295
+ ]
296
+ },
297
+ {
298
+ "tutor": "english-tutor",
299
+ "name": "预习",
300
+ "pass": false,
301
+ "checks": [
302
+ {
303
+ "name": "缺少材料",
304
+ "errors": [],
305
+ "fail": [
306
+ {
307
+ "check": "每节有讲稿",
308
+ "pass": false,
309
+ "why": "第 1 轮没有讲稿"
310
+ }
311
+ ]
312
+ },
313
+ {
314
+ "name": "给定范围后尝试并结束",
315
+ "errors": [],
316
+ "fail": [
317
+ {
318
+ "check": "每节有讲稿",
319
+ "pass": false,
320
+ "why": "第 6 轮没有讲稿"
321
+ }
322
+ ]
323
+ },
324
+ {
325
+ "name": "孩子想停",
326
+ "errors": [],
327
+ "fail": []
328
+ }
329
+ ]
330
+ },
331
+ {
332
+ "tutor": "english-tutor",
333
+ "name": "复习",
334
+ "pass": false,
335
+ "checks": [
336
+ {
337
+ "name": "缺少材料",
338
+ "errors": [],
339
+ "fail": [
340
+ {
341
+ "check": "每节有讲稿",
342
+ "pass": false,
343
+ "why": "第 1 轮没有讲稿"
344
+ }
345
+ ]
346
+ },
347
+ {
348
+ "name": "给定范围后尝试并结束",
349
+ "errors": [],
350
+ "fail": []
351
+ },
352
+ {
353
+ "name": "孩子想停",
354
+ "errors": [],
355
+ "fail": []
356
+ }
357
+ ]
358
+ },
359
+ {
360
+ "tutor": "math-tutor",
361
+ "name": "预习",
362
+ "pass": false,
363
+ "checks": [
364
+ {
365
+ "name": "缺少材料",
366
+ "errors": [],
367
+ "fail": [
368
+ {
369
+ "check": "一节一问",
370
+ "pass": false,
371
+ "why": "第 1 轮问了 2 个"
372
+ }
373
+ ]
374
+ },
375
+ {
376
+ "name": "给定范围后尝试并结束",
377
+ "errors": [],
378
+ "fail": []
379
+ },
380
+ {
381
+ "name": "孩子想停",
382
+ "errors": [],
383
+ "fail": []
384
+ }
385
+ ]
386
+ }
387
+ ]
388
+ },
389
+ {
390
+ "phase": "english-medium",
391
+ "complete": true,
392
+ "results": [
393
+ {
394
+ "tutor": "english-tutor",
395
+ "name": "批改",
396
+ "pass": true,
397
+ "checks": [
398
+ {
399
+ "name": "缺少材料",
400
+ "errors": [],
401
+ "fail": []
402
+ },
403
+ {
404
+ "name": "给定范围后尝试并结束",
405
+ "errors": [],
406
+ "fail": []
407
+ },
408
+ {
409
+ "name": "孩子想停",
410
+ "errors": [],
411
+ "fail": []
412
+ }
413
+ ]
414
+ },
415
+ {
416
+ "tutor": "english-tutor",
417
+ "name": "预习",
418
+ "pass": true,
419
+ "checks": [
420
+ {
421
+ "name": "缺少材料",
422
+ "errors": [],
423
+ "fail": []
424
+ },
425
+ {
426
+ "name": "给定范围后尝试并结束",
427
+ "errors": [],
428
+ "fail": []
429
+ },
430
+ {
431
+ "name": "孩子想停",
432
+ "errors": [],
433
+ "fail": []
434
+ }
435
+ ]
436
+ },
437
+ {
438
+ "tutor": "english-tutor",
439
+ "name": "复习",
440
+ "pass": false,
441
+ "checks": [
442
+ {
443
+ "name": "缺少材料",
444
+ "errors": [],
445
+ "fail": [
446
+ {
447
+ "check": "一节一问",
448
+ "pass": false,
449
+ "why": "第 1 轮问了 2 个"
450
+ }
451
+ ]
452
+ },
453
+ {
454
+ "name": "给定范围后尝试并结束",
455
+ "errors": [],
456
+ "fail": [
457
+ {
458
+ "check": "一节一问",
459
+ "pass": false,
460
+ "why": "第 1 轮问了 2 个"
461
+ }
462
+ ]
463
+ },
464
+ {
465
+ "name": "孩子想停",
466
+ "errors": [],
467
+ "fail": []
468
+ }
469
+ ]
470
+ }
471
+ ]
472
+ },
473
+ {
474
+ "phase": "full-flow",
475
+ "complete": true,
476
+ "results": [
477
+ {
478
+ "tutor": "math-tutor",
479
+ "name": "批改",
480
+ "pass": true,
481
+ "errors": [],
482
+ "checks": [
483
+ {
484
+ "name": "缺少材料",
485
+ "fail": []
486
+ },
487
+ {
488
+ "name": "给定范围后尝试并结束",
489
+ "fail": []
490
+ },
491
+ {
492
+ "name": "孩子想停",
493
+ "fail": []
494
+ }
495
+ ]
496
+ },
497
+ {
498
+ "tutor": "math-tutor",
499
+ "name": "预习",
500
+ "pass": true,
501
+ "errors": [],
502
+ "checks": [
503
+ {
504
+ "name": "缺少材料",
505
+ "fail": []
506
+ },
507
+ {
508
+ "name": "给定范围后尝试并结束",
509
+ "fail": []
510
+ },
511
+ {
512
+ "name": "孩子想停",
513
+ "fail": []
514
+ }
515
+ ]
516
+ },
517
+ {
518
+ "tutor": "math-tutor",
519
+ "name": "复习",
520
+ "pass": false,
521
+ "errors": [],
522
+ "checks": [
523
+ {
524
+ "name": "缺少材料",
525
+ "fail": []
526
+ },
527
+ {
528
+ "name": "给定范围后尝试并结束",
529
+ "fail": [
530
+ {
531
+ "check": "一节一问",
532
+ "pass": false,
533
+ "why": "第 1 轮问了 2 个"
534
+ }
535
+ ]
536
+ },
537
+ {
538
+ "name": "孩子想停",
539
+ "fail": []
540
+ }
541
+ ]
542
+ },
543
+ {
544
+ "tutor": "chinese-tutor",
545
+ "name": "批改",
546
+ "pass": true,
547
+ "errors": [],
548
+ "checks": [
549
+ {
550
+ "name": "缺少材料",
551
+ "fail": []
552
+ },
553
+ {
554
+ "name": "给定范围后尝试并结束",
555
+ "fail": []
556
+ },
557
+ {
558
+ "name": "孩子想停",
559
+ "fail": []
560
+ }
561
+ ]
562
+ },
563
+ {
564
+ "tutor": "chinese-tutor",
565
+ "name": "预习",
566
+ "pass": true,
567
+ "errors": [],
568
+ "checks": [
569
+ {
570
+ "name": "缺少材料",
571
+ "fail": []
572
+ },
573
+ {
574
+ "name": "给定范围后尝试并结束",
575
+ "fail": []
576
+ },
577
+ {
578
+ "name": "孩子想停",
579
+ "fail": []
580
+ }
581
+ ]
582
+ },
583
+ {
584
+ "tutor": "chinese-tutor",
585
+ "name": "复习",
586
+ "pass": false,
587
+ "errors": [],
588
+ "checks": [
589
+ {
590
+ "name": "缺少材料",
591
+ "fail": []
592
+ },
593
+ {
594
+ "name": "给定范围后尝试并结束",
595
+ "fail": [
596
+ {
597
+ "check": "一节一问",
598
+ "pass": false,
599
+ "why": "第 3 轮问了 2 个"
600
+ }
601
+ ]
602
+ },
603
+ {
604
+ "name": "孩子想停",
605
+ "fail": []
606
+ }
607
+ ]
608
+ },
609
+ {
610
+ "tutor": "chinese-tutor",
611
+ "name": "写话",
612
+ "pass": true,
613
+ "errors": [],
614
+ "checks": [
615
+ {
616
+ "name": "讲一件小事",
617
+ "fail": []
618
+ },
619
+ {
620
+ "name": "想停就停",
621
+ "fail": []
622
+ },
623
+ {
624
+ "name": "没看到字不能判书写",
625
+ "fail": []
626
+ }
627
+ ]
628
+ },
629
+ {
630
+ "tutor": "english-tutor",
631
+ "name": "批改",
632
+ "pass": true,
633
+ "errors": [],
634
+ "checks": [
635
+ {
636
+ "name": "缺少材料",
637
+ "fail": []
638
+ },
639
+ {
640
+ "name": "给定范围后尝试并结束",
641
+ "fail": []
642
+ },
643
+ {
644
+ "name": "孩子想停",
645
+ "fail": []
646
+ }
647
+ ]
648
+ },
649
+ {
650
+ "tutor": "english-tutor",
651
+ "name": "预习",
652
+ "pass": true,
653
+ "errors": [],
654
+ "checks": [
655
+ {
656
+ "name": "缺少材料",
657
+ "fail": []
658
+ },
659
+ {
660
+ "name": "给定范围后尝试并结束",
661
+ "fail": []
662
+ },
663
+ {
664
+ "name": "孩子想停",
665
+ "fail": []
666
+ }
667
+ ]
668
+ },
669
+ {
670
+ "tutor": "english-tutor",
671
+ "name": "复习",
672
+ "pass": true,
673
+ "errors": [],
674
+ "checks": [
675
+ {
676
+ "name": "缺少材料",
677
+ "fail": []
678
+ },
679
+ {
680
+ "name": "给定范围后尝试并结束",
681
+ "fail": []
682
+ },
683
+ {
684
+ "name": "孩子想停",
685
+ "fail": []
686
+ }
687
+ ]
688
+ },
689
+ {
690
+ "tutor": "english-tutor",
691
+ "name": "口语课",
692
+ "pass": true,
693
+ "errors": [],
694
+ "checks": [
695
+ {
696
+ "name": "按给定词句热身",
697
+ "fail": []
698
+ }
699
+ ]
700
+ },
701
+ {
702
+ "tutor": "math-tutor",
703
+ "name": "平均分小课堂",
704
+ "pass": true,
705
+ "checks": [
706
+ {
707
+ "name": "看懂就结束",
708
+ "fail": [],
709
+ "errors": []
710
+ },
711
+ {
712
+ "name": "主动想试一题",
713
+ "fail": [],
714
+ "errors": []
715
+ }
716
+ ]
717
+ }
718
+ ]
719
+ },
720
+ {
721
+ "phase": "opening-repeat-chinese-tutor",
722
+ "complete": true,
723
+ "results": [
724
+ {
725
+ "tutor": "chinese-tutor",
726
+ "name": "预习",
727
+ "pass": true,
728
+ "checks": []
729
+ },
730
+ {
731
+ "tutor": "chinese-tutor",
732
+ "name": "批改",
733
+ "pass": true,
734
+ "checks": []
735
+ },
736
+ {
737
+ "tutor": "chinese-tutor",
738
+ "name": "复习",
739
+ "pass": true,
740
+ "checks": []
741
+ }
742
+ ]
743
+ },
744
+ {
745
+ "phase": "opening-repeat-math-tutor",
746
+ "complete": true,
747
+ "results": [
748
+ {
749
+ "tutor": "math-tutor",
750
+ "name": "预习",
751
+ "pass": true,
752
+ "checks": []
753
+ },
754
+ {
755
+ "tutor": "math-tutor",
756
+ "name": "批改",
757
+ "pass": true,
758
+ "checks": []
759
+ },
760
+ {
761
+ "tutor": "math-tutor",
762
+ "name": "复习",
763
+ "pass": true,
764
+ "checks": []
765
+ }
766
+ ]
767
+ },
768
+ {
769
+ "phase": "opening-repeat-english-tutor",
770
+ "complete": true,
771
+ "results": [
772
+ {
773
+ "tutor": "english-tutor",
774
+ "name": "预习",
775
+ "pass": true,
776
+ "checks": []
777
+ },
778
+ {
779
+ "tutor": "english-tutor",
780
+ "name": "批改",
781
+ "pass": true,
782
+ "checks": []
783
+ },
784
+ {
785
+ "tutor": "english-tutor",
786
+ "name": "复习",
787
+ "pass": true,
788
+ "checks": []
789
+ }
790
+ ]
791
+ },
792
+ {
793
+ "phase": "review-repeat-chinese-tutor",
794
+ "complete": true,
795
+ "results": [
796
+ {
797
+ "tutor": "chinese-tutor",
798
+ "name": "复习",
799
+ "pass": true,
800
+ "checks": []
801
+ }
802
+ ]
803
+ },
804
+ {
805
+ "phase": "review-repeat-math-tutor",
806
+ "complete": true,
807
+ "results": [
808
+ {
809
+ "tutor": "math-tutor",
810
+ "name": "复习",
811
+ "pass": true,
812
+ "checks": []
813
+ }
814
+ ]
815
+ }
816
+ ],
817
+ "traces": [
818
+ {
819
+ "phase": "full-flow",
820
+ "tutor": "math-tutor",
821
+ "activity": "批改",
822
+ "at": "2026-10-27T03:58:41.180Z",
823
+ "examples": [
824
+ {
825
+ "name": "缺少材料",
826
+ "pass": true,
827
+ "runs": [
828
+ {
829
+ "pass": true,
830
+ "error": null,
831
+ "checks": [
832
+ {
833
+ "check": "出拍给我看卡",
834
+ "pass": true
835
+ },
836
+ {
837
+ "check": "每节有讲稿",
838
+ "pass": true
839
+ },
840
+ {
841
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
842
+ "pass": true
843
+ },
844
+ {
845
+ "check": "不出画图卡",
846
+ "pass": true
847
+ },
848
+ {
849
+ "check": "一节一问",
850
+ "pass": true
851
+ }
852
+ ],
853
+ "turns": [
854
+ {
855
+ "kid": "批改",
856
+ "said": "把题目和你写好的答案拍给我看看,好吗?",
857
+ "cards": [
858
+ "photo"
859
+ ]
860
+ }
861
+ ]
862
+ }
863
+ ]
864
+ },
865
+ {
866
+ "name": "给定范围后尝试并结束",
867
+ "pass": true,
868
+ "runs": [
869
+ {
870
+ "pass": true,
871
+ "error": null,
872
+ "checks": [
873
+ {
874
+ "check": "一节一问",
875
+ "pass": true
876
+ },
877
+ {
878
+ "check": "每节有讲稿",
879
+ "pass": true
880
+ },
881
+ {
882
+ "check": "不出画图卡",
883
+ "pass": true
884
+ },
885
+ {
886
+ "check": "不说: 你太笨、这么简单都不会、你错了",
887
+ "pass": true
888
+ }
889
+ ],
890
+ "turns": [
891
+ {
892
+ "kid": "批改",
893
+ "said": "把题目和你写好的答案拍给我看看,好吗?",
894
+ "cards": [
895
+ "photo"
896
+ ]
897
+ },
898
+ {
899
+ "kid": "题目是 23 加 18,我写了 31,怎么算的我记不清了",
900
+ "said": "我们先从个位看起。\n3 加 8,你算算是多少?",
901
+ "cards": [
902
+ "text"
903
+ ]
904
+ },
905
+ {
906
+ "kid": "11",
907
+ "said": "对,3 加 8 等于 11。\n个位写 1,还有 1 个十要进到十位去。\n十位上是 2 加 1,再加上进上来的 1,你算算是多少?",
908
+ "cards": [
909
+ "text"
910
+ ]
911
+ },
912
+ {
913
+ "kid": "4",
914
+ "said": "对,十位是 4。\n所以 23 加 18 等于 41,你原来写的 31 是忘了加进上来的那个 1。把答案改成 41 就好了。",
915
+ "cards": []
916
+ },
917
+ {
918
+ "kid": "哦,原来是这样。老师,今天先到这里吧。",
919
+ "said": "好的,今天这道题你已经弄明白了,下次见。",
920
+ "cards": []
921
+ },
922
+ {
923
+ "kid": "好的,老师再见!",
924
+ "said": "再见,小明!",
925
+ "cards": []
926
+ }
927
+ ]
928
+ }
929
+ ]
930
+ },
931
+ {
932
+ "name": "孩子想停",
933
+ "pass": true,
934
+ "runs": [
935
+ {
936
+ "pass": true,
937
+ "error": null,
938
+ "checks": [
939
+ {
940
+ "check": "收尾不问",
941
+ "pass": true
942
+ },
943
+ {
944
+ "check": "每节有讲稿",
945
+ "pass": true
946
+ },
947
+ {
948
+ "check": "不出画图卡",
949
+ "pass": true
950
+ }
951
+ ],
952
+ "turns": [
953
+ {
954
+ "kid": "批改",
955
+ "said": "小明,把题目和你写好的答案拍给我看看,好吗?",
956
+ "cards": [
957
+ "photo"
958
+ ]
959
+ },
960
+ {
961
+ "kid": "今天不想学了,先到这里吧",
962
+ "said": "好的,今天先休息。下次想写了随时拍给我看。",
963
+ "cards": []
964
+ }
965
+ ]
966
+ }
967
+ ]
968
+ }
969
+ ]
970
+ },
971
+ {
972
+ "phase": "full-flow",
973
+ "tutor": "math-tutor",
974
+ "activity": "预习",
975
+ "at": "2026-10-27T04:00:00.136Z",
976
+ "examples": [
977
+ {
978
+ "name": "缺少材料",
979
+ "pass": true,
980
+ "runs": [
981
+ {
982
+ "pass": true,
983
+ "error": null,
984
+ "checks": [
985
+ {
986
+ "check": "出拍给我看卡",
987
+ "pass": true
988
+ },
989
+ {
990
+ "check": "每节有讲稿",
991
+ "pass": true
992
+ },
993
+ {
994
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
995
+ "pass": true
996
+ },
997
+ {
998
+ "check": "不出画图卡",
999
+ "pass": true
1000
+ },
1001
+ {
1002
+ "check": "一节一问",
1003
+ "pass": true
1004
+ }
1005
+ ],
1006
+ "turns": [
1007
+ {
1008
+ "kid": "预习",
1009
+ "said": "我们来看看明天要学什么。\n把今天要预习的那一页拍给我看看,好吗?",
1010
+ "cards": [
1011
+ "photo"
1012
+ ]
1013
+ }
1014
+ ]
1015
+ }
1016
+ ]
1017
+ },
1018
+ {
1019
+ "name": "给定范围后尝试并结束",
1020
+ "pass": true,
1021
+ "runs": [
1022
+ {
1023
+ "pass": true,
1024
+ "error": null,
1025
+ "checks": [
1026
+ {
1027
+ "check": "一节一问",
1028
+ "pass": true
1029
+ },
1030
+ {
1031
+ "check": "每节有讲稿",
1032
+ "pass": true
1033
+ },
1034
+ {
1035
+ "check": "不出画图卡",
1036
+ "pass": true
1037
+ },
1038
+ {
1039
+ "check": "不说: 你太笨、这么简单都不会、你错了、余数、7 颗、7颗、七颗",
1040
+ "pass": true
1041
+ }
1042
+ ],
1043
+ "turns": [
1044
+ {
1045
+ "kid": "预习",
1046
+ "said": "小明,今天预习数学。把课本翻到明天要学的那一页,拍给我看看。\n拍好了发给我。",
1047
+ "cards": [
1048
+ "photo"
1049
+ ]
1050
+ },
1051
+ {
1052
+ "kid": "明天学平均分,我还没学除法,我能数到十",
1053
+ "said": "好,明天学的是平均分,就是分东西的时候每份一样多。\n我们先来试一试。6 颗糖分给两只小熊,每只小熊要一样多。你想怎么分?画一画给我看。",
1054
+ "cards": [
1055
+ "canvas"
1056
+ ]
1057
+ },
1058
+ {
1059
+ "kid": "一只三颗",
1060
+ "said": "对,一只三颗,两只小熊一样多,这就是平均分。明天课上老师会带你们分更多东西,你已经会了。",
1061
+ "cards": []
1062
+ },
1063
+ {
1064
+ "kid": "今天先到这里",
1065
+ "said": "好,今天预习到这里。明天上课见。",
1066
+ "cards": []
1067
+ },
1068
+ {
1069
+ "kid": "老师再见",
1070
+ "said": "再见,小明。明天学平均分的时候你已经会了,放心吧。",
1071
+ "cards": []
1072
+ },
1073
+ {
1074
+ "kid": "老师再见",
1075
+ "said": "再见,小明。",
1076
+ "cards": []
1077
+ }
1078
+ ]
1079
+ }
1080
+ ]
1081
+ },
1082
+ {
1083
+ "name": "孩子想停",
1084
+ "pass": true,
1085
+ "runs": [
1086
+ {
1087
+ "pass": true,
1088
+ "error": null,
1089
+ "checks": [
1090
+ {
1091
+ "check": "收尾不问",
1092
+ "pass": true
1093
+ },
1094
+ {
1095
+ "check": "每节有讲稿",
1096
+ "pass": true
1097
+ },
1098
+ {
1099
+ "check": "不出画图卡",
1100
+ "pass": true
1101
+ }
1102
+ ],
1103
+ "turns": [
1104
+ {
1105
+ "kid": "预习",
1106
+ "said": "小明,我们今天要预习数学。把课本翻到明天要学的那一页,拍给我看看。",
1107
+ "cards": [
1108
+ "photo"
1109
+ ]
1110
+ },
1111
+ {
1112
+ "kid": "今天不想学了,先到这里吧",
1113
+ "said": "好的,今天先休息。想学的时候随时来找我。",
1114
+ "cards": []
1115
+ }
1116
+ ]
1117
+ }
1118
+ ]
1119
+ }
1120
+ ]
1121
+ },
1122
+ {
1123
+ "phase": "full-flow",
1124
+ "tutor": "math-tutor",
1125
+ "activity": "复习",
1126
+ "at": "2026-10-27T04:01:31.370Z",
1127
+ "examples": [
1128
+ {
1129
+ "name": "缺少材料",
1130
+ "pass": true,
1131
+ "runs": [
1132
+ {
1133
+ "pass": true,
1134
+ "error": null,
1135
+ "checks": [
1136
+ {
1137
+ "check": "出拍给我看卡",
1138
+ "pass": true
1139
+ },
1140
+ {
1141
+ "check": "每节有讲稿",
1142
+ "pass": true
1143
+ },
1144
+ {
1145
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
1146
+ "pass": true
1147
+ },
1148
+ {
1149
+ "check": "不出画图卡",
1150
+ "pass": true
1151
+ },
1152
+ {
1153
+ "check": "一节一问",
1154
+ "pass": true
1155
+ }
1156
+ ],
1157
+ "turns": [
1158
+ {
1159
+ "kid": "复习",
1160
+ "said": "把今天要复习的内容拍给我看看,好吗?",
1161
+ "cards": [
1162
+ "photo"
1163
+ ]
1164
+ }
1165
+ ]
1166
+ }
1167
+ ]
1168
+ },
1169
+ {
1170
+ "name": "给定范围后尝试并结束",
1171
+ "pass": false,
1172
+ "runs": [
1173
+ {
1174
+ "pass": false,
1175
+ "error": null,
1176
+ "checks": [
1177
+ {
1178
+ "check": "一节一问",
1179
+ "pass": false,
1180
+ "why": "第 1 轮问了 2 个"
1181
+ },
1182
+ {
1183
+ "check": "每节有讲稿",
1184
+ "pass": true
1185
+ },
1186
+ {
1187
+ "check": "不出画图卡",
1188
+ "pass": true
1189
+ },
1190
+ {
1191
+ "check": "不说: 你太笨、这么简单都不会、你错了",
1192
+ "pass": true
1193
+ }
1194
+ ],
1195
+ "turns": [
1196
+ {
1197
+ "kid": "复习",
1198
+ "said": "小明,今天想复习哪一页呀?\n把那一页拍给我看看,好吗?",
1199
+ "cards": [
1200
+ "photo"
1201
+ ]
1202
+ },
1203
+ {
1204
+ "kid": "复习两位数加法,我学过进位,但个位满十有时忘了进一",
1205
+ "said": "好,我们就练个位满十要进一的加法。\n先看个位,4 个一加 7 个一,一共有多少个一?",
1206
+ "cards": [
1207
+ "text",
1208
+ "text"
1209
+ ]
1210
+ },
1211
+ {
1212
+ "kid": "十一个",
1213
+ "said": "对,4 加 7 等于 11 个一。\n11 个一里面,10 个一可以捆成 1 个十。这个十要送到十位上去,这就是进一。\n那个位上写几?",
1214
+ "cards": [
1215
+ "text"
1216
+ ]
1217
+ },
1218
+ {
1219
+ "kid": "写1",
1220
+ "said": "对,个位写 1,进上去的 1 记在十位上。\n现在看十位,2 个十加 1 个十,再加上进上来的 1 个十,一共是几个十?",
1221
+ "cards": [
1222
+ "text"
1223
+ ]
1224
+ },
1225
+ {
1226
+ "kid": "四个",
1227
+ "said": "对,十位是 4 个十。所以 24 加 17 等于 41。\n再来一道试试,这回你自己算。\n36 加 25 等于多少?",
1228
+ "cards": [
1229
+ "text",
1230
+ "text"
1231
+ ]
1232
+ },
1233
+ {
1234
+ "kid": "个位6加5是11,写1进1。十位3加2加1是6。等于61。",
1235
+ "said": "对了!个位满十,你写 1 进 1,十位也记得把进上来的 1 加上了。\n两道都做得很好,进位这一步你都记住了,今天就到这里。",
1236
+ "cards": []
1237
+ }
1238
+ ]
1239
+ }
1240
+ ]
1241
+ },
1242
+ {
1243
+ "name": "孩子想停",
1244
+ "pass": true,
1245
+ "runs": [
1246
+ {
1247
+ "pass": true,
1248
+ "error": null,
1249
+ "checks": [
1250
+ {
1251
+ "check": "收尾不问",
1252
+ "pass": true
1253
+ },
1254
+ {
1255
+ "check": "每节有讲稿",
1256
+ "pass": true
1257
+ },
1258
+ {
1259
+ "check": "不出画图卡",
1260
+ "pass": true
1261
+ }
1262
+ ],
1263
+ "turns": [
1264
+ {
1265
+ "kid": "复习",
1266
+ "said": "今天我们复习数学。\n把今天要复习的内容拍给我看看,好吗?",
1267
+ "cards": [
1268
+ "photo"
1269
+ ]
1270
+ },
1271
+ {
1272
+ "kid": "今天不想学了,先到这里吧",
1273
+ "said": "好的,今天先休息,下次想复习的时候再来找我。",
1274
+ "cards": []
1275
+ }
1276
+ ]
1277
+ }
1278
+ ]
1279
+ }
1280
+ ]
1281
+ },
1282
+ {
1283
+ "phase": "full-flow",
1284
+ "tutor": "chinese-tutor",
1285
+ "activity": "批改",
1286
+ "at": "2026-10-27T04:02:00.107Z",
1287
+ "examples": [
1288
+ {
1289
+ "name": "缺少材料",
1290
+ "pass": true,
1291
+ "runs": [
1292
+ {
1293
+ "pass": true,
1294
+ "error": null,
1295
+ "checks": [
1296
+ {
1297
+ "check": "出拍给我看卡",
1298
+ "pass": true
1299
+ },
1300
+ {
1301
+ "check": "每节有讲稿",
1302
+ "pass": true
1303
+ },
1304
+ {
1305
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
1306
+ "pass": true
1307
+ },
1308
+ {
1309
+ "check": "不出画图卡",
1310
+ "pass": true
1311
+ },
1312
+ {
1313
+ "check": "一节一问",
1314
+ "pass": true
1315
+ }
1316
+ ],
1317
+ "turns": [
1318
+ {
1319
+ "kid": "批改",
1320
+ "said": "小明,我们来批改作业啦。\n把题目和你写好的答案拍给我看看,好吗?",
1321
+ "cards": [
1322
+ "photo"
1323
+ ]
1324
+ }
1325
+ ]
1326
+ }
1327
+ ]
1328
+ },
1329
+ {
1330
+ "name": "给定范围后尝试并结束",
1331
+ "pass": true,
1332
+ "runs": [
1333
+ {
1334
+ "pass": true,
1335
+ "error": null,
1336
+ "checks": [
1337
+ {
1338
+ "check": "一节一问",
1339
+ "pass": true
1340
+ },
1341
+ {
1342
+ "check": "每节有讲稿",
1343
+ "pass": true
1344
+ },
1345
+ {
1346
+ "check": "不出画图卡",
1347
+ "pass": true
1348
+ },
1349
+ {
1350
+ "check": "不说: 你太笨、这么简单都不会、你错了",
1351
+ "pass": true
1352
+ }
1353
+ ],
1354
+ "turns": [
1355
+ {
1356
+ "kid": "批改",
1357
+ "said": "小明,我们来批改。\n把题目和你写好的答案拍给我看看,好吗?",
1358
+ "cards": [
1359
+ "photo"
1360
+ ]
1361
+ },
1362
+ {
1363
+ "kid": "我写的是:小鸟在天上飞,它很开兴。帮我看看用词",
1364
+ "said": "这句话说清楚了小鸟在哪里。\n我们看看「开兴」这个词。\n表示高兴的「开心」,后面是哪个字?",
1365
+ "cards": [
1366
+ "text"
1367
+ ]
1368
+ },
1369
+ {
1370
+ "kid": "是心字,我写错了。",
1371
+ "said": "对,是「开心」的心。\n你一下就找出来了。\n把「开兴」改成「开心」,这句话就写对了。",
1372
+ "cards": [
1373
+ "tianzige"
1374
+ ]
1375
+ },
1376
+ {
1377
+ "kid": "我改好了。今天先到这里,不想再写了。",
1378
+ "said": "改好了就行,今天写得很棒。\n那就先到这里,休息去吧。",
1379
+ "cards": []
1380
+ },
1381
+ {
1382
+ "kid": "好,老师再见。",
1383
+ "said": "再见,小明。",
1384
+ "cards": []
1385
+ },
1386
+ {
1387
+ "kid": "(背着书包跑远了)",
1388
+ "said": "慢点跑,路上小心。",
1389
+ "cards": []
1390
+ }
1391
+ ]
1392
+ }
1393
+ ]
1394
+ },
1395
+ {
1396
+ "name": "孩子想停",
1397
+ "pass": true,
1398
+ "runs": [
1399
+ {
1400
+ "pass": true,
1401
+ "error": null,
1402
+ "checks": [
1403
+ {
1404
+ "check": "收尾不问",
1405
+ "pass": true
1406
+ },
1407
+ {
1408
+ "check": "每节有讲稿",
1409
+ "pass": true
1410
+ },
1411
+ {
1412
+ "check": "不出画图卡",
1413
+ "pass": true
1414
+ }
1415
+ ],
1416
+ "turns": [
1417
+ {
1418
+ "kid": "批改",
1419
+ "said": "小明,我们来批改作业。\n把题目和你写好的答案拍给我看看,好吗?",
1420
+ "cards": [
1421
+ "photo"
1422
+ ]
1423
+ },
1424
+ {
1425
+ "kid": "今天不想学了,先到这里吧",
1426
+ "said": "好的,今天先到这里。\n下次想批改了再来找我。",
1427
+ "cards": []
1428
+ }
1429
+ ]
1430
+ }
1431
+ ]
1432
+ }
1433
+ ]
1434
+ },
1435
+ {
1436
+ "phase": "full-flow",
1437
+ "tutor": "chinese-tutor",
1438
+ "activity": "预习",
1439
+ "at": "2026-10-27T04:02:29.893Z",
1440
+ "examples": [
1441
+ {
1442
+ "name": "缺少材料",
1443
+ "pass": true,
1444
+ "runs": [
1445
+ {
1446
+ "pass": true,
1447
+ "error": null,
1448
+ "checks": [
1449
+ {
1450
+ "check": "出拍给我看卡",
1451
+ "pass": true
1452
+ },
1453
+ {
1454
+ "check": "每节有讲稿",
1455
+ "pass": true
1456
+ },
1457
+ {
1458
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
1459
+ "pass": true
1460
+ },
1461
+ {
1462
+ "check": "不出画图卡",
1463
+ "pass": true
1464
+ },
1465
+ {
1466
+ "check": "一节一问",
1467
+ "pass": true
1468
+ }
1469
+ ],
1470
+ "turns": [
1471
+ {
1472
+ "kid": "预习",
1473
+ "said": "小明,我们今天来预习语文。\n把今天要预习的那一页拍给我看看,好吗?",
1474
+ "cards": [
1475
+ "photo"
1476
+ ]
1477
+ }
1478
+ ]
1479
+ }
1480
+ ]
1481
+ },
1482
+ {
1483
+ "name": "给定范围后尝试并结束",
1484
+ "pass": true,
1485
+ "runs": [
1486
+ {
1487
+ "pass": true,
1488
+ "error": null,
1489
+ "checks": [
1490
+ {
1491
+ "check": "一节一问",
1492
+ "pass": true
1493
+ },
1494
+ {
1495
+ "check": "每节有讲稿",
1496
+ "pass": true
1497
+ },
1498
+ {
1499
+ "check": "不出画图卡",
1500
+ "pass": true
1501
+ },
1502
+ {
1503
+ "check": "不说: 你太笨、这么简单都不会、你错了",
1504
+ "pass": true
1505
+ }
1506
+ ],
1507
+ "turns": [
1508
+ {
1509
+ "kid": "预习",
1510
+ "said": "小明,我们开始预习。\n把今天要预习的那一页拍给我看看,好吗?",
1511
+ "cards": [
1512
+ "photo"
1513
+ ]
1514
+ },
1515
+ {
1516
+ "kid": "预习这一段:小蝌蚪游来游去。我不会读蝌蚪",
1517
+ "said": "蝌蚪,就是青蛙小时候的样子。\n你把「小蝌蚪游来游去」读一遍,好吗?",
1518
+ "cards": [
1519
+ "read",
1520
+ "text"
1521
+ ]
1522
+ },
1523
+ {
1524
+ "kid": "小蝌蚪游来游去",
1525
+ "said": "读得很清楚。\n小蝌蚪在水里游来游去,说明它们很活泼。\n你从这句话里知道小蝌蚪在做什么了吗?",
1526
+ "cards": [
1527
+ "text"
1528
+ ]
1529
+ },
1530
+ {
1531
+ "kid": "在游来游去",
1532
+ "said": "对,它们在水里游来游去。\n这一句我们读会了,也懂了。\n你有没有想带到课堂上问老师的问题?",
1533
+ "cards": [
1534
+ "text"
1535
+ ]
1536
+ },
1537
+ {
1538
+ "kid": "没有",
1539
+ "said": "好,那这一句我们就预习完了。",
1540
+ "cards": []
1541
+ },
1542
+ {
1543
+ "kid": "今天先到这里",
1544
+ "said": "好,今天就预习到这里。",
1545
+ "cards": []
1546
+ }
1547
+ ]
1548
+ }
1549
+ ]
1550
+ },
1551
+ {
1552
+ "name": "孩子想停",
1553
+ "pass": true,
1554
+ "runs": [
1555
+ {
1556
+ "pass": true,
1557
+ "error": null,
1558
+ "checks": [
1559
+ {
1560
+ "check": "收尾不问",
1561
+ "pass": true
1562
+ },
1563
+ {
1564
+ "check": "每节有讲稿",
1565
+ "pass": true
1566
+ },
1567
+ {
1568
+ "check": "不出画图卡",
1569
+ "pass": true
1570
+ }
1571
+ ],
1572
+ "turns": [
1573
+ {
1574
+ "kid": "预习",
1575
+ "said": "今天我们要预习语文。\n把今天要预习的那一页拍给我看看,好吗?",
1576
+ "cards": [
1577
+ "photo"
1578
+ ]
1579
+ },
1580
+ {
1581
+ "kid": "今天不想学了,先到这里吧",
1582
+ "said": "好的,那今天就先到这里。\n下次想预习了再来找我。",
1583
+ "cards": []
1584
+ }
1585
+ ]
1586
+ }
1587
+ ]
1588
+ }
1589
+ ]
1590
+ },
1591
+ {
1592
+ "phase": "full-flow",
1593
+ "tutor": "chinese-tutor",
1594
+ "activity": "复习",
1595
+ "at": "2026-10-27T04:02:58.166Z",
1596
+ "examples": [
1597
+ {
1598
+ "name": "缺少材料",
1599
+ "pass": true,
1600
+ "runs": [
1601
+ {
1602
+ "pass": true,
1603
+ "error": null,
1604
+ "checks": [
1605
+ {
1606
+ "check": "出拍给我看卡",
1607
+ "pass": true
1608
+ },
1609
+ {
1610
+ "check": "每节有讲稿",
1611
+ "pass": true
1612
+ },
1613
+ {
1614
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
1615
+ "pass": true
1616
+ },
1617
+ {
1618
+ "check": "不出画图卡",
1619
+ "pass": true
1620
+ },
1621
+ {
1622
+ "check": "一节一问",
1623
+ "pass": true
1624
+ }
1625
+ ],
1626
+ "turns": [
1627
+ {
1628
+ "kid": "复习",
1629
+ "said": "小明,我们准备复习语文。\n把今天要复习的内容拍给我看看,好吗?",
1630
+ "cards": [
1631
+ "photo"
1632
+ ]
1633
+ }
1634
+ ]
1635
+ }
1636
+ ]
1637
+ },
1638
+ {
1639
+ "name": "给定范围后尝试并结束",
1640
+ "pass": false,
1641
+ "runs": [
1642
+ {
1643
+ "pass": false,
1644
+ "error": null,
1645
+ "checks": [
1646
+ {
1647
+ "check": "一节一问",
1648
+ "pass": false,
1649
+ "why": "第 3 轮问了 2 个"
1650
+ },
1651
+ {
1652
+ "check": "每节有讲稿",
1653
+ "pass": true
1654
+ },
1655
+ {
1656
+ "check": "不出画图卡",
1657
+ "pass": true
1658
+ },
1659
+ {
1660
+ "check": "不说: 你太笨、这么简单都不会、你错了",
1661
+ "pass": true
1662
+ }
1663
+ ],
1664
+ "turns": [
1665
+ {
1666
+ "kid": "复习",
1667
+ "said": "小明,我们来复习语文。\n把今天要复习的内容拍给我看看,好吗?",
1668
+ "cards": [
1669
+ "photo"
1670
+ ]
1671
+ },
1672
+ {
1673
+ "kid": "今天想复习学过的池和河,我常把它们弄混",
1674
+ "said": "这两个字都跟水有关,难怪容易混。\n我们想想小鱼生活的地方。\n「池塘」的「池」,你记得它旁边是什么偏旁吗?",
1675
+ "cards": [
1676
+ "text"
1677
+ ]
1678
+ },
1679
+ {
1680
+ "kid": "三点水",
1681
+ "said": "对,它们都是三点水。\n那右边呢?「池塘」的「池」,右边是什么字?",
1682
+ "cards": [
1683
+ "text"
1684
+ ]
1685
+ },
1686
+ {
1687
+ "kid": "右边是也",
1688
+ "said": "对,池的右边是「也」。\n池塘小小的,水不怎么动。\n那「小河」的河呢,右边是什么字?",
1689
+ "cards": [
1690
+ "tianzige",
1691
+ "text"
1692
+ ]
1693
+ },
1694
+ {
1695
+ "kid": "右边是可",
1696
+ "said": "对,河的右边是「可」。\n你看,左边都是三点水,就看右边来分。\n右边是「也」的是池塘的池,右边是「可」的是小河的河。\n这两个字你分清啦。",
1697
+ "cards": []
1698
+ },
1699
+ {
1700
+ "kid": "嗯,分清啦。",
1701
+ "said": "那今天「池」和「河」就复习到这里。",
1702
+ "cards": []
1703
+ }
1704
+ ]
1705
+ }
1706
+ ]
1707
+ },
1708
+ {
1709
+ "name": "孩子想停",
1710
+ "pass": true,
1711
+ "runs": [
1712
+ {
1713
+ "pass": true,
1714
+ "error": null,
1715
+ "checks": [
1716
+ {
1717
+ "check": "收尾不问",
1718
+ "pass": true
1719
+ },
1720
+ {
1721
+ "check": "每节有讲稿",
1722
+ "pass": true
1723
+ },
1724
+ {
1725
+ "check": "不出画图卡",
1726
+ "pass": true
1727
+ }
1728
+ ],
1729
+ "turns": [
1730
+ {
1731
+ "kid": "复习",
1732
+ "said": "小明,我们来复习语文。\n把今天要复习的内容拍给我看看,好吗?",
1733
+ "cards": [
1734
+ "photo"
1735
+ ]
1736
+ },
1737
+ {
1738
+ "kid": "今天不想学了,先到这里吧",
1739
+ "said": "好的,那今天先休息。",
1740
+ "cards": []
1741
+ }
1742
+ ]
1743
+ }
1744
+ ]
1745
+ }
1746
+ ]
1747
+ },
1748
+ {
1749
+ "phase": "full-flow",
1750
+ "tutor": "chinese-tutor",
1751
+ "activity": "写话",
1752
+ "at": "2026-10-27T04:03:39.810Z",
1753
+ "examples": [
1754
+ {
1755
+ "name": "讲一件小事",
1756
+ "pass": true,
1757
+ "runs": [
1758
+ {
1759
+ "pass": true,
1760
+ "error": null,
1761
+ "checks": [
1762
+ {
1763
+ "check": "一节一问",
1764
+ "pass": true
1765
+ },
1766
+ {
1767
+ "check": "放过整段",
1768
+ "pass": true
1769
+ },
1770
+ {
1771
+ "check": "不出画图卡",
1772
+ "pass": true
1773
+ },
1774
+ {
1775
+ "check": "不说: 你错了、必须写一百字",
1776
+ "pass": true
1777
+ }
1778
+ ],
1779
+ "turns": [
1780
+ {
1781
+ "kid": "写话",
1782
+ "said": "小明,今天有什么事让你想讲一讲?",
1783
+ "cards": [
1784
+ "text"
1785
+ ]
1786
+ },
1787
+ {
1788
+ "kid": "今天我和妈妈去公园,看到一只猫",
1789
+ "said": "你已经说清楚和谁去了哪里。\n那只猫正在做什么呀?",
1790
+ "cards": [
1791
+ "read",
1792
+ "text"
1793
+ ]
1794
+ },
1795
+ {
1796
+ "kid": "小猫在树下睡觉",
1797
+ "said": "你把小猫在哪里、在做什么也说清楚了。\n你觉得它睡得怎么样,是安安静静的,还是缩成一团?",
1798
+ "cards": [
1799
+ "read",
1800
+ "text"
1801
+ ]
1802
+ },
1803
+ {
1804
+ "kid": "它缩成一团,安安静静的。",
1805
+ "said": "这三句话把在哪里、看到什么、小猫怎么睡,都说清楚了。\n你把这三句连起来念一遍给我听听。",
1806
+ "cards": [
1807
+ "read"
1808
+ ]
1809
+ },
1810
+ {
1811
+ "kid": "今天,我和妈妈去公园,看到一只猫。小猫在树下睡觉。它缩成一团,安安静静的。",
1812
+ "said": "念得很顺,事情说清楚了。\n学校要写下来的话,你拍一张写的给我看;不想写了,今天就到这里。",
1813
+ "cards": [
1814
+ "photo"
1815
+ ]
1816
+ },
1817
+ {
1818
+ "kid": "不想写了,下次再去看它。",
1819
+ "said": "好,今天就到这里。下次去公园再看那只小猫。",
1820
+ "cards": []
1821
+ },
1822
+ {
1823
+ "kid": "嗯,下次再去看它。",
1824
+ "said": "好,下次去公园再看它。",
1825
+ "cards": []
1826
+ },
1827
+ {
1828
+ "kid": "嗯,下次再去看它。",
1829
+ "said": "好,小明再见。",
1830
+ "cards": []
1831
+ }
1832
+ ]
1833
+ }
1834
+ ]
1835
+ },
1836
+ {
1837
+ "name": "想停就停",
1838
+ "pass": true,
1839
+ "runs": [
1840
+ {
1841
+ "pass": true,
1842
+ "error": null,
1843
+ "checks": [
1844
+ {
1845
+ "check": "收尾不问",
1846
+ "pass": true
1847
+ },
1848
+ {
1849
+ "check": "每节有讲稿",
1850
+ "pass": true
1851
+ }
1852
+ ],
1853
+ "turns": [
1854
+ {
1855
+ "kid": "写话",
1856
+ "said": "小明,今天有什么事让你想讲一讲呀?",
1857
+ "cards": [
1858
+ "text"
1859
+ ]
1860
+ },
1861
+ {
1862
+ "kid": "我今天不想写了",
1863
+ "said": "好,今天不想写就不写。\n那我们聊聊天也行,或者你想歇一会儿都可以。",
1864
+ "cards": []
1865
+ }
1866
+ ]
1867
+ }
1868
+ ]
1869
+ },
1870
+ {
1871
+ "name": "没看到字不能判书写",
1872
+ "pass": true,
1873
+ "runs": [
1874
+ {
1875
+ "pass": true,
1876
+ "error": null,
1877
+ "checks": [
1878
+ {
1879
+ "check": "不说: 没有错别字、标点全对、字写得真好",
1880
+ "pass": true
1881
+ },
1882
+ {
1883
+ "check": "一节一问",
1884
+ "pass": true
1885
+ }
1886
+ ],
1887
+ "turns": [
1888
+ {
1889
+ "kid": "写话",
1890
+ "said": "小明,今天有什么事让你想讲一讲呀?",
1891
+ "cards": [
1892
+ "text"
1893
+ ]
1894
+ },
1895
+ {
1896
+ "kid": "我已经在纸上写好了,但现在没有照片",
1897
+ "said": "写好了呀,真棒。\n没有照片也没关系,你把你写的念给我听听吧。",
1898
+ "cards": []
1899
+ }
1900
+ ]
1901
+ }
1902
+ ]
1903
+ }
1904
+ ]
1905
+ },
1906
+ {
1907
+ "phase": "full-flow",
1908
+ "tutor": "english-tutor",
1909
+ "activity": "批改",
1910
+ "at": "2026-10-27T04:04:29.403Z",
1911
+ "examples": [
1912
+ {
1913
+ "name": "缺少材料",
1914
+ "pass": true,
1915
+ "runs": [
1916
+ {
1917
+ "pass": true,
1918
+ "error": null,
1919
+ "checks": [
1920
+ {
1921
+ "check": "出拍给我看卡",
1922
+ "pass": true
1923
+ },
1924
+ {
1925
+ "check": "每节有讲稿",
1926
+ "pass": true
1927
+ },
1928
+ {
1929
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
1930
+ "pass": true
1931
+ },
1932
+ {
1933
+ "check": "不出画图卡",
1934
+ "pass": true
1935
+ },
1936
+ {
1937
+ "check": "一节一问",
1938
+ "pass": true
1939
+ }
1940
+ ],
1941
+ "turns": [
1942
+ {
1943
+ "kid": "批改",
1944
+ "said": "把题目和你写好的答案拍给我看看,好吗?",
1945
+ "cards": [
1946
+ "photo"
1947
+ ]
1948
+ }
1949
+ ]
1950
+ }
1951
+ ]
1952
+ },
1953
+ {
1954
+ "name": "给定范围后尝试并结束",
1955
+ "pass": true,
1956
+ "runs": [
1957
+ {
1958
+ "pass": true,
1959
+ "error": null,
1960
+ "checks": [
1961
+ {
1962
+ "check": "一节一问",
1963
+ "pass": true
1964
+ },
1965
+ {
1966
+ "check": "每节有讲稿",
1967
+ "pass": true
1968
+ },
1969
+ {
1970
+ "check": "不出画图卡",
1971
+ "pass": true
1972
+ },
1973
+ {
1974
+ "check": "不说: 你太笨、这么简单都不会、你错了",
1975
+ "pass": true
1976
+ }
1977
+ ],
1978
+ "turns": [
1979
+ {
1980
+ "kid": "批改",
1981
+ "said": "把题目和你写好的答案拍给我看看,好吗?",
1982
+ "cards": [
1983
+ "photo"
1984
+ ]
1985
+ },
1986
+ {
1987
+ "kid": "题目是写出苹果的英文,我纸上写的是 aple",
1988
+ "said": "你已经写出了开头的 a 和结尾的 le。\n中间有两个 p。\n你把这个词补完整,好吗?",
1989
+ "cards": [
1990
+ "text"
1991
+ ]
1992
+ },
1993
+ {
1994
+ "kid": "apple",
1995
+ "said": "对了,两个 p 都补上了,这个词写完整了。",
1996
+ "cards": []
1997
+ },
1998
+ {
1999
+ "kid": "今天先到这里",
2000
+ "said": "好的,今天写得不错,明天见。",
2001
+ "cards": []
2002
+ },
2003
+ {
2004
+ "kid": "明天见",
2005
+ "said": "明天见,小明。",
2006
+ "cards": []
2007
+ },
2008
+ {
2009
+ "kid": "老师再见",
2010
+ "said": "再见,小明。",
2011
+ "cards": []
2012
+ }
2013
+ ]
2014
+ }
2015
+ ]
2016
+ },
2017
+ {
2018
+ "name": "孩子想停",
2019
+ "pass": true,
2020
+ "runs": [
2021
+ {
2022
+ "pass": true,
2023
+ "error": null,
2024
+ "checks": [
2025
+ {
2026
+ "check": "收尾不问",
2027
+ "pass": true
2028
+ },
2029
+ {
2030
+ "check": "每节有讲稿",
2031
+ "pass": true
2032
+ },
2033
+ {
2034
+ "check": "不出画图卡",
2035
+ "pass": true
2036
+ }
2037
+ ],
2038
+ "turns": [
2039
+ {
2040
+ "kid": "批改",
2041
+ "said": "小明,来批改作业呀。\n把题目和你写好的答案拍给我看看,好吗?",
2042
+ "cards": [
2043
+ "photo"
2044
+ ]
2045
+ },
2046
+ {
2047
+ "kid": "今天不想学了,先到这里吧",
2048
+ "said": "好,那今天先到这里。\n下次想批改的时候再拍给我看就行,再见啦小明。",
2049
+ "cards": []
2050
+ }
2051
+ ]
2052
+ }
2053
+ ]
2054
+ }
2055
+ ]
2056
+ },
2057
+ {
2058
+ "phase": "full-flow",
2059
+ "tutor": "english-tutor",
2060
+ "activity": "预习",
2061
+ "at": "2026-10-27T04:05:20.486Z",
2062
+ "examples": [
2063
+ {
2064
+ "name": "缺少材料",
2065
+ "pass": true,
2066
+ "runs": [
2067
+ {
2068
+ "pass": true,
2069
+ "error": null,
2070
+ "checks": [
2071
+ {
2072
+ "check": "出拍给我看卡",
2073
+ "pass": true
2074
+ },
2075
+ {
2076
+ "check": "每节有讲稿",
2077
+ "pass": true
2078
+ },
2079
+ {
2080
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2081
+ "pass": true
2082
+ },
2083
+ {
2084
+ "check": "不出画图卡",
2085
+ "pass": true
2086
+ },
2087
+ {
2088
+ "check": "一节一问",
2089
+ "pass": true
2090
+ }
2091
+ ],
2092
+ "turns": [
2093
+ {
2094
+ "kid": "预习",
2095
+ "said": "把今天要预习的那一页拍给我看看,好吗?",
2096
+ "cards": [
2097
+ "photo"
2098
+ ]
2099
+ }
2100
+ ]
2101
+ }
2102
+ ]
2103
+ },
2104
+ {
2105
+ "name": "给定范围后尝试并结束",
2106
+ "pass": true,
2107
+ "runs": [
2108
+ {
2109
+ "pass": true,
2110
+ "error": null,
2111
+ "checks": [
2112
+ {
2113
+ "check": "一节一问",
2114
+ "pass": true
2115
+ },
2116
+ {
2117
+ "check": "每节有讲稿",
2118
+ "pass": true
2119
+ },
2120
+ {
2121
+ "check": "不出画图卡",
2122
+ "pass": true
2123
+ },
2124
+ {
2125
+ "check": "不说: 你太笨、这么简单都不会、你错了、四个字母、4 个字母、4个字母",
2126
+ "pass": true
2127
+ }
2128
+ ],
2129
+ "turns": [
2130
+ {
2131
+ "kid": "预习",
2132
+ "said": "你好小明,今天我们一起预习英语。\n把今天要预习的那一页拍给我看看,好吗?",
2133
+ "cards": [
2134
+ "photo"
2135
+ ]
2136
+ },
2137
+ {
2138
+ "kid": "今天学 apple 和 I like apples,我不会说",
2139
+ "said": "好,我们今天学一个词和一个句子。先学这个词。\nApple,苹果。\n我念给你听:a-pp-le,apple。\n你也说一次,好吗?",
2140
+ "cards": [
2141
+ "word",
2142
+ "text"
2143
+ ]
2144
+ },
2145
+ {
2146
+ "kid": "a-pp-le",
2147
+ "said": "说得好。\n现在我们把 apple 放到一个句子里。\nI like apples.\n先跟我念前半句:I like...\n你再念后半句:apples.",
2148
+ "cards": [
2149
+ "text"
2150
+ ]
2151
+ },
2152
+ {
2153
+ "kid": "I like apples",
2154
+ "said": "说得很好。\n现在确认一下你听懂了。\n你来选一选,这句话是什么意思?",
2155
+ "cards": [
2156
+ "choice"
2157
+ ]
2158
+ },
2159
+ {
2160
+ "kid": "我喜欢苹果",
2161
+ "said": "对,就是\"我喜欢苹果\"。\n今天你学会了 apple 和 I like apples,都自己说出来了,很棒。",
2162
+ "cards": []
2163
+ },
2164
+ {
2165
+ "kid": "今天先到这里",
2166
+ "said": "好的,今天到这里。下次见,小明。",
2167
+ "cards": []
2168
+ }
2169
+ ]
2170
+ }
2171
+ ]
2172
+ },
2173
+ {
2174
+ "name": "孩子想停",
2175
+ "pass": true,
2176
+ "runs": [
2177
+ {
2178
+ "pass": true,
2179
+ "error": null,
2180
+ "checks": [
2181
+ {
2182
+ "check": "收尾不问",
2183
+ "pass": true
2184
+ },
2185
+ {
2186
+ "check": "每节有讲稿",
2187
+ "pass": true
2188
+ },
2189
+ {
2190
+ "check": "不出画图卡",
2191
+ "pass": true
2192
+ }
2193
+ ],
2194
+ "turns": [
2195
+ {
2196
+ "kid": "预习",
2197
+ "said": "把今天要预习的那一页拍给我看看,好吗?",
2198
+ "cards": [
2199
+ "photo"
2200
+ ]
2201
+ },
2202
+ {
2203
+ "kid": "今天不想学了,先到这里吧",
2204
+ "said": "好,那今天先到这里。\n想学的时候再叫我。",
2205
+ "cards": []
2206
+ }
2207
+ ]
2208
+ }
2209
+ ]
2210
+ }
2211
+ ]
2212
+ },
2213
+ {
2214
+ "phase": "full-flow",
2215
+ "tutor": "english-tutor",
2216
+ "activity": "复习",
2217
+ "at": "2026-10-27T04:06:20.070Z",
2218
+ "examples": [
2219
+ {
2220
+ "name": "缺少材料",
2221
+ "pass": true,
2222
+ "runs": [
2223
+ {
2224
+ "pass": true,
2225
+ "error": null,
2226
+ "checks": [
2227
+ {
2228
+ "check": "出拍给我看卡",
2229
+ "pass": true
2230
+ },
2231
+ {
2232
+ "check": "每节有讲稿",
2233
+ "pass": true
2234
+ },
2235
+ {
2236
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2237
+ "pass": true
2238
+ },
2239
+ {
2240
+ "check": "不出画图卡",
2241
+ "pass": true
2242
+ },
2243
+ {
2244
+ "check": "一节一问",
2245
+ "pass": true
2246
+ }
2247
+ ],
2248
+ "turns": [
2249
+ {
2250
+ "kid": "复习",
2251
+ "said": "今天复习什么我还不知道。\n把今天要复习的内容拍给我看看,好吗?",
2252
+ "cards": [
2253
+ "photo"
2254
+ ]
2255
+ }
2256
+ ]
2257
+ }
2258
+ ]
2259
+ },
2260
+ {
2261
+ "name": "给定范围后尝试并结束",
2262
+ "pass": true,
2263
+ "runs": [
2264
+ {
2265
+ "pass": true,
2266
+ "error": null,
2267
+ "checks": [
2268
+ {
2269
+ "check": "一节一问",
2270
+ "pass": true
2271
+ },
2272
+ {
2273
+ "check": "每节有讲稿",
2274
+ "pass": true
2275
+ },
2276
+ {
2277
+ "check": "不出画图卡",
2278
+ "pass": true
2279
+ },
2280
+ {
2281
+ "check": "不说: 你太笨、这么简单都不会、你错了",
2282
+ "pass": true
2283
+ }
2284
+ ],
2285
+ "turns": [
2286
+ {
2287
+ "kid": "复习",
2288
+ "said": "小明,今天我们一起复习英语。\n先让我看看要复习哪一页,你拍下来发给我。",
2289
+ "cards": [
2290
+ "photo"
2291
+ ]
2292
+ },
2293
+ {
2294
+ "kid": "复习学过的 duck、bus 和 under,我记不住 under",
2295
+ "said": "under,我们先想想。\n你把它想成一个东西在另一个东西的下面。\n比如小鸭子在公交车的下面。\n你试试,「在……下面」英文怎么说?",
2296
+ "cards": [
2297
+ "text"
2298
+ ]
2299
+ },
2300
+ {
2301
+ "kid": "under",
2302
+ "said": "对,under 就是「在……下面」,你想出来了。\n那我们连起来说一句:小鸭子在公交车下面。\nThe duck is under the bus.",
2303
+ "cards": []
2304
+ },
2305
+ {
2306
+ "kid": "under",
2307
+ "said": "under 你记住了。\n现在把三个词连起来试试:The duck is under the bus.\n你来念一念?",
2308
+ "cards": [
2309
+ "text"
2310
+ ]
2311
+ },
2312
+ {
2313
+ "kid": "The duck is under the bus.",
2314
+ "said": "太棒了!三个词连成一句话,你完整说出来了。\nduck、bus、under 都记住了,今天复习到这里就够。",
2315
+ "cards": []
2316
+ },
2317
+ {
2318
+ "kid": "今天先到这里,不想再做。",
2319
+ "said": "好的,今天 under 你想出来了,句子也说完整了,很棒。\n下次见,小明。",
2320
+ "cards": []
2321
+ }
2322
+ ]
2323
+ }
2324
+ ]
2325
+ },
2326
+ {
2327
+ "name": "孩子想停",
2328
+ "pass": true,
2329
+ "runs": [
2330
+ {
2331
+ "pass": true,
2332
+ "error": null,
2333
+ "checks": [
2334
+ {
2335
+ "check": "收尾不问",
2336
+ "pass": true
2337
+ },
2338
+ {
2339
+ "check": "每节有讲稿",
2340
+ "pass": true
2341
+ },
2342
+ {
2343
+ "check": "不出画图卡",
2344
+ "pass": true
2345
+ }
2346
+ ],
2347
+ "turns": [
2348
+ {
2349
+ "kid": "复习",
2350
+ "said": "今天咱们复习英语。\n把今天要复习的内容拍给我看看,好吗?",
2351
+ "cards": [
2352
+ "photo"
2353
+ ]
2354
+ },
2355
+ {
2356
+ "kid": "今天不想学了,先到这里吧",
2357
+ "said": "好,今天先到这里。下次想复习了再来找我。",
2358
+ "cards": []
2359
+ }
2360
+ ]
2361
+ }
2362
+ ]
2363
+ }
2364
+ ]
2365
+ },
2366
+ {
2367
+ "phase": "full-flow",
2368
+ "tutor": "english-tutor",
2369
+ "activity": "口语课",
2370
+ "at": "2026-10-27T04:06:33.350Z",
2371
+ "examples": [
2372
+ {
2373
+ "name": "按给定词句热身",
2374
+ "pass": true,
2375
+ "runs": [
2376
+ {
2377
+ "pass": true,
2378
+ "error": null,
2379
+ "checks": [
2380
+ {
2381
+ "check": "每节有讲稿",
2382
+ "pass": true
2383
+ },
2384
+ {
2385
+ "check": "说到: duck",
2386
+ "pass": true
2387
+ },
2388
+ {
2389
+ "check": "不说: Ray、一年级、发音标准",
2390
+ "pass": true
2391
+ }
2392
+ ],
2393
+ "turns": [
2394
+ {
2395
+ "kid": "口语课",
2396
+ "said": "我们先热热身!我说一个英文,你学一个,像回声。我先来:duck!\n嘎嘎嘎!小鸭子在说话,小声一点:duck…\n这只鸭子变成了大狮子!DUCK!\n慢慢说,一个字母一个字母:d-u-ck,duck\n你先说:鸭子,英文怎么说?\n一起说:duck!\n热身好啦!老师给你打个电话,电话里我只说英文哦,听不懂就说「听不懂」。",
2397
+ "cards": [
2398
+ "word"
2399
+ ]
2400
+ }
2401
+ ]
2402
+ }
2403
+ ]
2404
+ }
2405
+ ]
2406
+ },
2407
+ {
2408
+ "phase": "full-flow",
2409
+ "tutor": "math-tutor",
2410
+ "activity": "小课堂",
2411
+ "at": "2026-10-27T04:07:21.062Z",
2412
+ "examples": [
2413
+ {
2414
+ "name": "看懂就结束",
2415
+ "pass": true,
2416
+ "runs": [
2417
+ {
2418
+ "pass": true,
2419
+ "error": null,
2420
+ "checks": [
2421
+ {
2422
+ "check": "收尾不问",
2423
+ "pass": true
2424
+ },
2425
+ {
2426
+ "check": "不出画图卡",
2427
+ "pass": true
2428
+ }
2429
+ ],
2430
+ "turns": [
2431
+ {
2432
+ "kid": "我知道了,平均分就是每盘一样多,今天先到这里",
2433
+ "said": "好,平均分就是每盘一样多,你记住了。",
2434
+ "cards": []
2435
+ }
2436
+ ]
2437
+ }
2438
+ ]
2439
+ },
2440
+ {
2441
+ "name": "主动想试一题",
2442
+ "pass": true,
2443
+ "runs": [
2444
+ {
2445
+ "pass": true,
2446
+ "error": null,
2447
+ "checks": [
2448
+ {
2449
+ "check": "一节一问",
2450
+ "pass": true
2451
+ },
2452
+ {
2453
+ "check": "不说: 方程、未知数",
2454
+ "pass": true
2455
+ },
2456
+ {
2457
+ "check": "不出画图卡",
2458
+ "pass": true
2459
+ }
2460
+ ],
2461
+ "turns": [
2462
+ {
2463
+ "kid": "我想自己试一道平均分",
2464
+ "said": "好,你来试一道。\n8 个圆片,放进 2 个盘子,每盘要一样多。\n你一个一个地放,每盘放几个?",
2465
+ "cards": [
2466
+ "text"
2467
+ ]
2468
+ },
2469
+ {
2470
+ "kid": "我先每盘放一个,再每盘放一个,就是两个啦!",
2471
+ "said": "你放了 2 轮,每盘 2 个,一共用掉了 4 个。\n可是你一共有 8 个圆片呀,还剩几个没放?",
2472
+ "cards": [
2473
+ "text"
2474
+ ]
2475
+ },
2476
+ {
2477
+ "kid": "还剩四个,我再每盘放一个,再放一个就分完啦!",
2478
+ "said": "对,再放两轮,每盘就是 4 个,8 个圆片正好分完。\n8 个圆片放进 2 个盘子,每盘一样多,每盘 4 个,这就是平均分。",
2479
+ "cards": []
2480
+ },
2481
+ {
2482
+ "kid": "哦!每盘四个,分完啦!",
2483
+ "said": "你自己分对了,真棒!",
2484
+ "cards": []
2485
+ },
2486
+ {
2487
+ "kid": "嘿嘿,我数到八就分完啦!",
2488
+ "said": "对,一个一个数到 8,每盘一样多,就是平均分。",
2489
+ "cards": []
2490
+ }
2491
+ ]
2492
+ }
2493
+ ]
2494
+ }
2495
+ ]
2496
+ },
2497
+ {
2498
+ "phase": "opening-repeat-chinese-tutor",
2499
+ "tutor": "chinese-tutor",
2500
+ "activity": "预习",
2501
+ "at": "2026-10-27T04:02:10.163Z",
2502
+ "examples": [
2503
+ {
2504
+ "name": "缺少材料",
2505
+ "pass": true,
2506
+ "runs": [
2507
+ {
2508
+ "pass": true,
2509
+ "error": null,
2510
+ "checks": [
2511
+ {
2512
+ "check": "出拍给我看卡",
2513
+ "pass": true
2514
+ },
2515
+ {
2516
+ "check": "每节有讲稿",
2517
+ "pass": true
2518
+ },
2519
+ {
2520
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2521
+ "pass": true
2522
+ },
2523
+ {
2524
+ "check": "不出画图卡",
2525
+ "pass": true
2526
+ },
2527
+ {
2528
+ "check": "一节一问",
2529
+ "pass": true
2530
+ }
2531
+ ],
2532
+ "turns": [
2533
+ {
2534
+ "kid": "预习",
2535
+ "said": "把今天要预习的那一页拍给我看看。",
2536
+ "cards": [
2537
+ "photo"
2538
+ ]
2539
+ }
2540
+ ]
2541
+ },
2542
+ {
2543
+ "pass": true,
2544
+ "error": null,
2545
+ "checks": [
2546
+ {
2547
+ "check": "出拍给我看卡",
2548
+ "pass": true
2549
+ },
2550
+ {
2551
+ "check": "每节有讲稿",
2552
+ "pass": true
2553
+ },
2554
+ {
2555
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2556
+ "pass": true
2557
+ },
2558
+ {
2559
+ "check": "不出画图卡",
2560
+ "pass": true
2561
+ },
2562
+ {
2563
+ "check": "一节一问",
2564
+ "pass": true
2565
+ }
2566
+ ],
2567
+ "turns": [
2568
+ {
2569
+ "kid": "预习",
2570
+ "said": "把今天要预习的那一页拍给我看看。",
2571
+ "cards": [
2572
+ "photo"
2573
+ ]
2574
+ }
2575
+ ]
2576
+ },
2577
+ {
2578
+ "pass": true,
2579
+ "error": null,
2580
+ "checks": [
2581
+ {
2582
+ "check": "出拍给我看卡",
2583
+ "pass": true
2584
+ },
2585
+ {
2586
+ "check": "每节有讲稿",
2587
+ "pass": true
2588
+ },
2589
+ {
2590
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2591
+ "pass": true
2592
+ },
2593
+ {
2594
+ "check": "不出画图卡",
2595
+ "pass": true
2596
+ },
2597
+ {
2598
+ "check": "一节一问",
2599
+ "pass": true
2600
+ }
2601
+ ],
2602
+ "turns": [
2603
+ {
2604
+ "kid": "预习",
2605
+ "said": "把今天要预习的那一页拍给我看看。",
2606
+ "cards": [
2607
+ "photo"
2608
+ ]
2609
+ }
2610
+ ]
2611
+ }
2612
+ ]
2613
+ }
2614
+ ]
2615
+ },
2616
+ {
2617
+ "phase": "opening-repeat-chinese-tutor",
2618
+ "tutor": "chinese-tutor",
2619
+ "activity": "批改",
2620
+ "at": "2026-10-27T04:02:17.231Z",
2621
+ "examples": [
2622
+ {
2623
+ "name": "缺少材料",
2624
+ "pass": true,
2625
+ "runs": [
2626
+ {
2627
+ "pass": true,
2628
+ "error": null,
2629
+ "checks": [
2630
+ {
2631
+ "check": "出拍给我看卡",
2632
+ "pass": true
2633
+ },
2634
+ {
2635
+ "check": "每节有讲稿",
2636
+ "pass": true
2637
+ },
2638
+ {
2639
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2640
+ "pass": true
2641
+ },
2642
+ {
2643
+ "check": "不出画图卡",
2644
+ "pass": true
2645
+ },
2646
+ {
2647
+ "check": "一节一问",
2648
+ "pass": true
2649
+ }
2650
+ ],
2651
+ "turns": [
2652
+ {
2653
+ "kid": "批改",
2654
+ "said": "把题目和你写好的答案拍给我看看。",
2655
+ "cards": [
2656
+ "photo"
2657
+ ]
2658
+ }
2659
+ ]
2660
+ },
2661
+ {
2662
+ "pass": true,
2663
+ "error": null,
2664
+ "checks": [
2665
+ {
2666
+ "check": "出拍给我看卡",
2667
+ "pass": true
2668
+ },
2669
+ {
2670
+ "check": "每节有讲稿",
2671
+ "pass": true
2672
+ },
2673
+ {
2674
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2675
+ "pass": true
2676
+ },
2677
+ {
2678
+ "check": "不出画图卡",
2679
+ "pass": true
2680
+ },
2681
+ {
2682
+ "check": "一节一问",
2683
+ "pass": true
2684
+ }
2685
+ ],
2686
+ "turns": [
2687
+ {
2688
+ "kid": "批改",
2689
+ "said": "把题目和你写好的答案拍给我看看。",
2690
+ "cards": [
2691
+ "photo"
2692
+ ]
2693
+ }
2694
+ ]
2695
+ },
2696
+ {
2697
+ "pass": true,
2698
+ "error": null,
2699
+ "checks": [
2700
+ {
2701
+ "check": "出拍给我看卡",
2702
+ "pass": true
2703
+ },
2704
+ {
2705
+ "check": "每节有讲稿",
2706
+ "pass": true
2707
+ },
2708
+ {
2709
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2710
+ "pass": true
2711
+ },
2712
+ {
2713
+ "check": "不出画图卡",
2714
+ "pass": true
2715
+ },
2716
+ {
2717
+ "check": "一节一问",
2718
+ "pass": true
2719
+ }
2720
+ ],
2721
+ "turns": [
2722
+ {
2723
+ "kid": "批改",
2724
+ "said": "把题目和你写好的答案拍给我看看。",
2725
+ "cards": [
2726
+ "photo"
2727
+ ]
2728
+ }
2729
+ ]
2730
+ }
2731
+ ]
2732
+ }
2733
+ ]
2734
+ },
2735
+ {
2736
+ "phase": "opening-repeat-chinese-tutor",
2737
+ "tutor": "chinese-tutor",
2738
+ "activity": "复习",
2739
+ "at": "2026-10-27T04:02:25.559Z",
2740
+ "examples": [
2741
+ {
2742
+ "name": "缺少材料",
2743
+ "pass": true,
2744
+ "runs": [
2745
+ {
2746
+ "pass": true,
2747
+ "error": null,
2748
+ "checks": [
2749
+ {
2750
+ "check": "出拍给我看卡",
2751
+ "pass": true
2752
+ },
2753
+ {
2754
+ "check": "每节有讲稿",
2755
+ "pass": true
2756
+ },
2757
+ {
2758
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2759
+ "pass": true
2760
+ },
2761
+ {
2762
+ "check": "不出画图卡",
2763
+ "pass": true
2764
+ },
2765
+ {
2766
+ "check": "一节一问",
2767
+ "pass": true
2768
+ }
2769
+ ],
2770
+ "turns": [
2771
+ {
2772
+ "kid": "复习",
2773
+ "said": "把今天要复习的内容拍给我看看。",
2774
+ "cards": [
2775
+ "photo"
2776
+ ]
2777
+ }
2778
+ ]
2779
+ },
2780
+ {
2781
+ "pass": true,
2782
+ "error": null,
2783
+ "checks": [
2784
+ {
2785
+ "check": "出拍给我看卡",
2786
+ "pass": true
2787
+ },
2788
+ {
2789
+ "check": "每节有讲稿",
2790
+ "pass": true
2791
+ },
2792
+ {
2793
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2794
+ "pass": true
2795
+ },
2796
+ {
2797
+ "check": "不出画图卡",
2798
+ "pass": true
2799
+ },
2800
+ {
2801
+ "check": "一节一问",
2802
+ "pass": true
2803
+ }
2804
+ ],
2805
+ "turns": [
2806
+ {
2807
+ "kid": "复习",
2808
+ "said": "把今天要复习的内容拍给我看看。",
2809
+ "cards": [
2810
+ "photo"
2811
+ ]
2812
+ }
2813
+ ]
2814
+ },
2815
+ {
2816
+ "pass": true,
2817
+ "error": null,
2818
+ "checks": [
2819
+ {
2820
+ "check": "出拍给我看卡",
2821
+ "pass": true
2822
+ },
2823
+ {
2824
+ "check": "每节有讲稿",
2825
+ "pass": true
2826
+ },
2827
+ {
2828
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2829
+ "pass": true
2830
+ },
2831
+ {
2832
+ "check": "不出画图卡",
2833
+ "pass": true
2834
+ },
2835
+ {
2836
+ "check": "一节一问",
2837
+ "pass": true
2838
+ }
2839
+ ],
2840
+ "turns": [
2841
+ {
2842
+ "kid": "复习",
2843
+ "said": "把今天要复习的内容拍给我看看。",
2844
+ "cards": [
2845
+ "photo"
2846
+ ]
2847
+ }
2848
+ ]
2849
+ }
2850
+ ]
2851
+ }
2852
+ ]
2853
+ },
2854
+ {
2855
+ "phase": "opening-repeat-math-tutor",
2856
+ "tutor": "math-tutor",
2857
+ "activity": "预习",
2858
+ "at": "2026-10-27T04:02:26.422Z",
2859
+ "examples": [
2860
+ {
2861
+ "name": "缺少材料",
2862
+ "pass": true,
2863
+ "runs": [
2864
+ {
2865
+ "pass": true,
2866
+ "error": null,
2867
+ "checks": [
2868
+ {
2869
+ "check": "出拍给我看卡",
2870
+ "pass": true
2871
+ },
2872
+ {
2873
+ "check": "每节有讲稿",
2874
+ "pass": true
2875
+ },
2876
+ {
2877
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2878
+ "pass": true
2879
+ },
2880
+ {
2881
+ "check": "不出画图卡",
2882
+ "pass": true
2883
+ },
2884
+ {
2885
+ "check": "一节一问",
2886
+ "pass": true
2887
+ }
2888
+ ],
2889
+ "turns": [
2890
+ {
2891
+ "kid": "预习",
2892
+ "said": "把今天要预习的那一页拍给我看看。",
2893
+ "cards": [
2894
+ "photo"
2895
+ ]
2896
+ }
2897
+ ]
2898
+ },
2899
+ {
2900
+ "pass": true,
2901
+ "error": null,
2902
+ "checks": [
2903
+ {
2904
+ "check": "出拍给我看卡",
2905
+ "pass": true
2906
+ },
2907
+ {
2908
+ "check": "每节有讲稿",
2909
+ "pass": true
2910
+ },
2911
+ {
2912
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2913
+ "pass": true
2914
+ },
2915
+ {
2916
+ "check": "不出画图卡",
2917
+ "pass": true
2918
+ },
2919
+ {
2920
+ "check": "一节一问",
2921
+ "pass": true
2922
+ }
2923
+ ],
2924
+ "turns": [
2925
+ {
2926
+ "kid": "预习",
2927
+ "said": "把今天要预习的那一页拍给我看看。",
2928
+ "cards": [
2929
+ "photo"
2930
+ ]
2931
+ }
2932
+ ]
2933
+ },
2934
+ {
2935
+ "pass": true,
2936
+ "error": null,
2937
+ "checks": [
2938
+ {
2939
+ "check": "出拍给我看卡",
2940
+ "pass": true
2941
+ },
2942
+ {
2943
+ "check": "每节有讲稿",
2944
+ "pass": true
2945
+ },
2946
+ {
2947
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2948
+ "pass": true
2949
+ },
2950
+ {
2951
+ "check": "不出画图卡",
2952
+ "pass": true
2953
+ },
2954
+ {
2955
+ "check": "一节一问",
2956
+ "pass": true
2957
+ }
2958
+ ],
2959
+ "turns": [
2960
+ {
2961
+ "kid": "预习",
2962
+ "said": "把今天要预习的那一页拍给我看看。",
2963
+ "cards": [
2964
+ "photo"
2965
+ ]
2966
+ }
2967
+ ]
2968
+ }
2969
+ ]
2970
+ }
2971
+ ]
2972
+ },
2973
+ {
2974
+ "phase": "opening-repeat-math-tutor",
2975
+ "tutor": "math-tutor",
2976
+ "activity": "批改",
2977
+ "at": "2026-10-27T04:02:46.581Z",
2978
+ "examples": [
2979
+ {
2980
+ "name": "缺少材料",
2981
+ "pass": true,
2982
+ "runs": [
2983
+ {
2984
+ "pass": true,
2985
+ "error": null,
2986
+ "checks": [
2987
+ {
2988
+ "check": "出拍给我看卡",
2989
+ "pass": true
2990
+ },
2991
+ {
2992
+ "check": "每节有讲稿",
2993
+ "pass": true
2994
+ },
2995
+ {
2996
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
2997
+ "pass": true
2998
+ },
2999
+ {
3000
+ "check": "不出画图卡",
3001
+ "pass": true
3002
+ },
3003
+ {
3004
+ "check": "一节一问",
3005
+ "pass": true
3006
+ }
3007
+ ],
3008
+ "turns": [
3009
+ {
3010
+ "kid": "批改",
3011
+ "said": "把题目和你写好的答案拍给我看看。",
3012
+ "cards": [
3013
+ "photo"
3014
+ ]
3015
+ }
3016
+ ]
3017
+ },
3018
+ {
3019
+ "pass": true,
3020
+ "error": null,
3021
+ "checks": [
3022
+ {
3023
+ "check": "出拍给我看卡",
3024
+ "pass": true
3025
+ },
3026
+ {
3027
+ "check": "每节有讲稿",
3028
+ "pass": true
3029
+ },
3030
+ {
3031
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3032
+ "pass": true
3033
+ },
3034
+ {
3035
+ "check": "不出画图卡",
3036
+ "pass": true
3037
+ },
3038
+ {
3039
+ "check": "一节一问",
3040
+ "pass": true
3041
+ }
3042
+ ],
3043
+ "turns": [
3044
+ {
3045
+ "kid": "批改",
3046
+ "said": "把题目和你写好的答案拍给我看看。",
3047
+ "cards": [
3048
+ "photo"
3049
+ ]
3050
+ }
3051
+ ]
3052
+ },
3053
+ {
3054
+ "pass": true,
3055
+ "error": null,
3056
+ "checks": [
3057
+ {
3058
+ "check": "出拍给我看卡",
3059
+ "pass": true
3060
+ },
3061
+ {
3062
+ "check": "每节有讲稿",
3063
+ "pass": true
3064
+ },
3065
+ {
3066
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3067
+ "pass": true
3068
+ },
3069
+ {
3070
+ "check": "不出画图卡",
3071
+ "pass": true
3072
+ },
3073
+ {
3074
+ "check": "一节一问",
3075
+ "pass": true
3076
+ }
3077
+ ],
3078
+ "turns": [
3079
+ {
3080
+ "kid": "批改",
3081
+ "said": "把题目和你写好的答案拍给我看看。",
3082
+ "cards": [
3083
+ "photo"
3084
+ ]
3085
+ }
3086
+ ]
3087
+ }
3088
+ ]
3089
+ }
3090
+ ]
3091
+ },
3092
+ {
3093
+ "phase": "opening-repeat-math-tutor",
3094
+ "tutor": "math-tutor",
3095
+ "activity": "复习",
3096
+ "at": "2026-10-27T04:03:10.460Z",
3097
+ "examples": [
3098
+ {
3099
+ "name": "缺少材料",
3100
+ "pass": true,
3101
+ "runs": [
3102
+ {
3103
+ "pass": true,
3104
+ "error": null,
3105
+ "checks": [
3106
+ {
3107
+ "check": "出拍给我看卡",
3108
+ "pass": true
3109
+ },
3110
+ {
3111
+ "check": "每节有讲稿",
3112
+ "pass": true
3113
+ },
3114
+ {
3115
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3116
+ "pass": true
3117
+ },
3118
+ {
3119
+ "check": "不出画图卡",
3120
+ "pass": true
3121
+ },
3122
+ {
3123
+ "check": "一节一问",
3124
+ "pass": true
3125
+ }
3126
+ ],
3127
+ "turns": [
3128
+ {
3129
+ "kid": "复习",
3130
+ "said": "把今天要复习的内容拍给我看看。",
3131
+ "cards": [
3132
+ "photo"
3133
+ ]
3134
+ }
3135
+ ]
3136
+ },
3137
+ {
3138
+ "pass": true,
3139
+ "error": null,
3140
+ "checks": [
3141
+ {
3142
+ "check": "出拍给我看卡",
3143
+ "pass": true
3144
+ },
3145
+ {
3146
+ "check": "每节有讲稿",
3147
+ "pass": true
3148
+ },
3149
+ {
3150
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3151
+ "pass": true
3152
+ },
3153
+ {
3154
+ "check": "不出画图卡",
3155
+ "pass": true
3156
+ },
3157
+ {
3158
+ "check": "一节一问",
3159
+ "pass": true
3160
+ }
3161
+ ],
3162
+ "turns": [
3163
+ {
3164
+ "kid": "复习",
3165
+ "said": "把今天要复习的内容拍给我看看。",
3166
+ "cards": [
3167
+ "photo"
3168
+ ]
3169
+ }
3170
+ ]
3171
+ },
3172
+ {
3173
+ "pass": true,
3174
+ "error": null,
3175
+ "checks": [
3176
+ {
3177
+ "check": "出拍给我看卡",
3178
+ "pass": true
3179
+ },
3180
+ {
3181
+ "check": "每节有讲稿",
3182
+ "pass": true
3183
+ },
3184
+ {
3185
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3186
+ "pass": true
3187
+ },
3188
+ {
3189
+ "check": "不出画图卡",
3190
+ "pass": true
3191
+ },
3192
+ {
3193
+ "check": "一节一问",
3194
+ "pass": true
3195
+ }
3196
+ ],
3197
+ "turns": [
3198
+ {
3199
+ "kid": "复习",
3200
+ "said": "把今天要复习的内容拍给我看看。",
3201
+ "cards": [
3202
+ "photo"
3203
+ ]
3204
+ }
3205
+ ]
3206
+ }
3207
+ ]
3208
+ }
3209
+ ]
3210
+ },
3211
+ {
3212
+ "phase": "opening-repeat-english-tutor",
3213
+ "tutor": "english-tutor",
3214
+ "activity": "预习",
3215
+ "at": "2026-10-27T04:02:18.752Z",
3216
+ "examples": [
3217
+ {
3218
+ "name": "缺少材料",
3219
+ "pass": true,
3220
+ "runs": [
3221
+ {
3222
+ "pass": true,
3223
+ "error": null,
3224
+ "checks": [
3225
+ {
3226
+ "check": "出拍给我看卡",
3227
+ "pass": true
3228
+ },
3229
+ {
3230
+ "check": "每节有讲稿",
3231
+ "pass": true
3232
+ },
3233
+ {
3234
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3235
+ "pass": true
3236
+ },
3237
+ {
3238
+ "check": "不出画图卡",
3239
+ "pass": true
3240
+ },
3241
+ {
3242
+ "check": "一节一问",
3243
+ "pass": true
3244
+ }
3245
+ ],
3246
+ "turns": [
3247
+ {
3248
+ "kid": "预习",
3249
+ "said": "把今天要预习的那一页拍给我看看。",
3250
+ "cards": [
3251
+ "photo"
3252
+ ]
3253
+ }
3254
+ ]
3255
+ },
3256
+ {
3257
+ "pass": true,
3258
+ "error": null,
3259
+ "checks": [
3260
+ {
3261
+ "check": "出拍给我看卡",
3262
+ "pass": true
3263
+ },
3264
+ {
3265
+ "check": "每节有讲稿",
3266
+ "pass": true
3267
+ },
3268
+ {
3269
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3270
+ "pass": true
3271
+ },
3272
+ {
3273
+ "check": "不出画图卡",
3274
+ "pass": true
3275
+ },
3276
+ {
3277
+ "check": "一节一问",
3278
+ "pass": true
3279
+ }
3280
+ ],
3281
+ "turns": [
3282
+ {
3283
+ "kid": "预习",
3284
+ "said": "把今天要预习的那一页拍给我看看。",
3285
+ "cards": [
3286
+ "photo"
3287
+ ]
3288
+ }
3289
+ ]
3290
+ },
3291
+ {
3292
+ "pass": true,
3293
+ "error": null,
3294
+ "checks": [
3295
+ {
3296
+ "check": "出拍给我看卡",
3297
+ "pass": true
3298
+ },
3299
+ {
3300
+ "check": "每节有讲稿",
3301
+ "pass": true
3302
+ },
3303
+ {
3304
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3305
+ "pass": true
3306
+ },
3307
+ {
3308
+ "check": "不出画图卡",
3309
+ "pass": true
3310
+ },
3311
+ {
3312
+ "check": "一节一问",
3313
+ "pass": true
3314
+ }
3315
+ ],
3316
+ "turns": [
3317
+ {
3318
+ "kid": "预习",
3319
+ "said": "把今天要预习的那一页拍给我看看。",
3320
+ "cards": [
3321
+ "photo"
3322
+ ]
3323
+ }
3324
+ ]
3325
+ }
3326
+ ]
3327
+ }
3328
+ ]
3329
+ },
3330
+ {
3331
+ "phase": "opening-repeat-english-tutor",
3332
+ "tutor": "english-tutor",
3333
+ "activity": "批改",
3334
+ "at": "2026-10-27T04:02:36.794Z",
3335
+ "examples": [
3336
+ {
3337
+ "name": "缺少材料",
3338
+ "pass": true,
3339
+ "runs": [
3340
+ {
3341
+ "pass": true,
3342
+ "error": null,
3343
+ "checks": [
3344
+ {
3345
+ "check": "出拍给我看卡",
3346
+ "pass": true
3347
+ },
3348
+ {
3349
+ "check": "每节有讲稿",
3350
+ "pass": true
3351
+ },
3352
+ {
3353
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3354
+ "pass": true
3355
+ },
3356
+ {
3357
+ "check": "不出画图卡",
3358
+ "pass": true
3359
+ },
3360
+ {
3361
+ "check": "一节一问",
3362
+ "pass": true
3363
+ }
3364
+ ],
3365
+ "turns": [
3366
+ {
3367
+ "kid": "批改",
3368
+ "said": "把题目和你写好的答案拍给我看看。",
3369
+ "cards": [
3370
+ "photo"
3371
+ ]
3372
+ }
3373
+ ]
3374
+ },
3375
+ {
3376
+ "pass": true,
3377
+ "error": null,
3378
+ "checks": [
3379
+ {
3380
+ "check": "出拍给我看卡",
3381
+ "pass": true
3382
+ },
3383
+ {
3384
+ "check": "每节有讲稿",
3385
+ "pass": true
3386
+ },
3387
+ {
3388
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3389
+ "pass": true
3390
+ },
3391
+ {
3392
+ "check": "不出画图卡",
3393
+ "pass": true
3394
+ },
3395
+ {
3396
+ "check": "一节一问",
3397
+ "pass": true
3398
+ }
3399
+ ],
3400
+ "turns": [
3401
+ {
3402
+ "kid": "批改",
3403
+ "said": "把题目和你写好的答案拍给我看看。",
3404
+ "cards": [
3405
+ "photo"
3406
+ ]
3407
+ }
3408
+ ]
3409
+ },
3410
+ {
3411
+ "pass": true,
3412
+ "error": null,
3413
+ "checks": [
3414
+ {
3415
+ "check": "出拍给我看卡",
3416
+ "pass": true
3417
+ },
3418
+ {
3419
+ "check": "每节有讲稿",
3420
+ "pass": true
3421
+ },
3422
+ {
3423
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3424
+ "pass": true
3425
+ },
3426
+ {
3427
+ "check": "不出画图卡",
3428
+ "pass": true
3429
+ },
3430
+ {
3431
+ "check": "一节一问",
3432
+ "pass": true
3433
+ }
3434
+ ],
3435
+ "turns": [
3436
+ {
3437
+ "kid": "批改",
3438
+ "said": "把题目和你写好的答案拍给我看看。",
3439
+ "cards": [
3440
+ "photo"
3441
+ ]
3442
+ }
3443
+ ]
3444
+ }
3445
+ ]
3446
+ }
3447
+ ]
3448
+ },
3449
+ {
3450
+ "phase": "opening-repeat-english-tutor",
3451
+ "tutor": "english-tutor",
3452
+ "activity": "复习",
3453
+ "at": "2026-10-27T04:02:54.520Z",
3454
+ "examples": [
3455
+ {
3456
+ "name": "缺少材料",
3457
+ "pass": true,
3458
+ "runs": [
3459
+ {
3460
+ "pass": true,
3461
+ "error": null,
3462
+ "checks": [
3463
+ {
3464
+ "check": "出拍给我看卡",
3465
+ "pass": true
3466
+ },
3467
+ {
3468
+ "check": "每节有讲稿",
3469
+ "pass": true
3470
+ },
3471
+ {
3472
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3473
+ "pass": true
3474
+ },
3475
+ {
3476
+ "check": "不出画图卡",
3477
+ "pass": true
3478
+ },
3479
+ {
3480
+ "check": "一节一问",
3481
+ "pass": true
3482
+ }
3483
+ ],
3484
+ "turns": [
3485
+ {
3486
+ "kid": "复习",
3487
+ "said": "把今天要复习的内容拍给我看看。",
3488
+ "cards": [
3489
+ "photo"
3490
+ ]
3491
+ }
3492
+ ]
3493
+ },
3494
+ {
3495
+ "pass": true,
3496
+ "error": null,
3497
+ "checks": [
3498
+ {
3499
+ "check": "出拍给我看卡",
3500
+ "pass": true
3501
+ },
3502
+ {
3503
+ "check": "每节有讲稿",
3504
+ "pass": true
3505
+ },
3506
+ {
3507
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3508
+ "pass": true
3509
+ },
3510
+ {
3511
+ "check": "不出画图卡",
3512
+ "pass": true
3513
+ },
3514
+ {
3515
+ "check": "一节一问",
3516
+ "pass": true
3517
+ }
3518
+ ],
3519
+ "turns": [
3520
+ {
3521
+ "kid": "复习",
3522
+ "said": "把今天要复习的内容拍给我看看。",
3523
+ "cards": [
3524
+ "photo"
3525
+ ]
3526
+ }
3527
+ ]
3528
+ },
3529
+ {
3530
+ "pass": true,
3531
+ "error": null,
3532
+ "checks": [
3533
+ {
3534
+ "check": "出拍给我看卡",
3535
+ "pass": true
3536
+ },
3537
+ {
3538
+ "check": "每节有讲稿",
3539
+ "pass": true
3540
+ },
3541
+ {
3542
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3543
+ "pass": true
3544
+ },
3545
+ {
3546
+ "check": "不出画图卡",
3547
+ "pass": true
3548
+ },
3549
+ {
3550
+ "check": "一节一问",
3551
+ "pass": true
3552
+ }
3553
+ ],
3554
+ "turns": [
3555
+ {
3556
+ "kid": "复习",
3557
+ "said": "把今天要复习的内容拍给我看看。",
3558
+ "cards": [
3559
+ "photo"
3560
+ ]
3561
+ }
3562
+ ]
3563
+ }
3564
+ ]
3565
+ }
3566
+ ]
3567
+ },
3568
+ {
3569
+ "phase": "review-repeat-chinese-tutor",
3570
+ "tutor": "chinese-tutor",
3571
+ "activity": "复习",
3572
+ "at": "2026-10-27T04:05:17.383Z",
3573
+ "examples": [
3574
+ {
3575
+ "name": "缺少材料",
3576
+ "pass": true,
3577
+ "runs": [
3578
+ {
3579
+ "pass": true,
3580
+ "error": null,
3581
+ "checks": [
3582
+ {
3583
+ "check": "出拍给我看卡",
3584
+ "pass": true
3585
+ },
3586
+ {
3587
+ "check": "每节有讲稿",
3588
+ "pass": true
3589
+ },
3590
+ {
3591
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3592
+ "pass": true
3593
+ },
3594
+ {
3595
+ "check": "不出画图卡",
3596
+ "pass": true
3597
+ },
3598
+ {
3599
+ "check": "一节一问",
3600
+ "pass": true
3601
+ }
3602
+ ],
3603
+ "turns": [
3604
+ {
3605
+ "kid": "复习",
3606
+ "said": "把今天要复习的内容拍给我看看。",
3607
+ "cards": [
3608
+ "photo"
3609
+ ]
3610
+ }
3611
+ ]
3612
+ },
3613
+ {
3614
+ "pass": true,
3615
+ "error": null,
3616
+ "checks": [
3617
+ {
3618
+ "check": "出拍给我看卡",
3619
+ "pass": true
3620
+ },
3621
+ {
3622
+ "check": "每节有讲稿",
3623
+ "pass": true
3624
+ },
3625
+ {
3626
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3627
+ "pass": true
3628
+ },
3629
+ {
3630
+ "check": "不出画图卡",
3631
+ "pass": true
3632
+ },
3633
+ {
3634
+ "check": "一节一问",
3635
+ "pass": true
3636
+ }
3637
+ ],
3638
+ "turns": [
3639
+ {
3640
+ "kid": "复习",
3641
+ "said": "把今天要复习的内容拍给我看看。",
3642
+ "cards": [
3643
+ "photo"
3644
+ ]
3645
+ }
3646
+ ]
3647
+ },
3648
+ {
3649
+ "pass": true,
3650
+ "error": null,
3651
+ "checks": [
3652
+ {
3653
+ "check": "出拍给我看卡",
3654
+ "pass": true
3655
+ },
3656
+ {
3657
+ "check": "每节有讲稿",
3658
+ "pass": true
3659
+ },
3660
+ {
3661
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
3662
+ "pass": true
3663
+ },
3664
+ {
3665
+ "check": "不出画图卡",
3666
+ "pass": true
3667
+ },
3668
+ {
3669
+ "check": "一节一问",
3670
+ "pass": true
3671
+ }
3672
+ ],
3673
+ "turns": [
3674
+ {
3675
+ "kid": "复习",
3676
+ "said": "把今天要复习的内容拍给我看看。",
3677
+ "cards": [
3678
+ "photo"
3679
+ ]
3680
+ }
3681
+ ]
3682
+ }
3683
+ ]
3684
+ },
3685
+ {
3686
+ "name": "给定范围后尝试并结束",
3687
+ "pass": true,
3688
+ "runs": [
3689
+ {
3690
+ "pass": true,
3691
+ "error": null,
3692
+ "checks": [
3693
+ {
3694
+ "check": "一节一问",
3695
+ "pass": true
3696
+ },
3697
+ {
3698
+ "check": "每节有讲稿",
3699
+ "pass": true
3700
+ },
3701
+ {
3702
+ "check": "不出画图卡",
3703
+ "pass": true
3704
+ },
3705
+ {
3706
+ "check": "不说: 你太笨、这么简单都不会、你错了",
3707
+ "pass": true
3708
+ }
3709
+ ],
3710
+ "turns": [
3711
+ {
3712
+ "kid": "复习",
3713
+ "said": "把今天要复习的内容拍给我看看。",
3714
+ "cards": [
3715
+ "photo"
3716
+ ]
3717
+ },
3718
+ {
3719
+ "kid": "今天想复习学过的池和河,我常把它们弄混",
3720
+ "said": "我们想想小鱼生活的地方。\n「池塘」的「池」,你记得它旁边是什么偏旁吗?",
3721
+ "cards": [
3722
+ "text"
3723
+ ]
3724
+ },
3725
+ {
3726
+ "kid": "三点水",
3727
+ "said": "对,「池」和「河」旁边都是三点水,都跟水有关。\n那它们右边不一样,你记得「池塘」的「池」右边是什么字吗?",
3728
+ "cards": [
3729
+ "text"
3730
+ ]
3731
+ },
3732
+ {
3733
+ "kid": "是也",
3734
+ "said": "对,就是「也是」的也。\n池塘不大,水安安静静待在那里,所以右边是「也」。\n大河的水一直往前流,右边这个字念「可」。\n你用手比划一下,「河」右边怎么写?",
3735
+ "cards": [
3736
+ "tianzige",
3737
+ "text"
3738
+ ]
3739
+ },
3740
+ {
3741
+ "kid": "横竖钩,再写一个口",
3742
+ "said": "对,「可」就是这样写的。\n左边都是三点水,看右边就能分清了。\n「也」是池塘,「可」是大河。\n这两个字你都认出来了,今天就复习到这里。",
3743
+ "cards": [
3744
+ "text"
3745
+ ]
3746
+ },
3747
+ {
3748
+ "kid": "好的,今天先到这里。",
3749
+ "said": "好,今天先到这里。",
3750
+ "cards": []
3751
+ }
3752
+ ]
3753
+ },
3754
+ {
3755
+ "pass": true,
3756
+ "error": null,
3757
+ "checks": [
3758
+ {
3759
+ "check": "一节一问",
3760
+ "pass": true
3761
+ },
3762
+ {
3763
+ "check": "每节有讲稿",
3764
+ "pass": true
3765
+ },
3766
+ {
3767
+ "check": "不出画图卡",
3768
+ "pass": true
3769
+ },
3770
+ {
3771
+ "check": "不说: 你太笨、这么简单都不会、你错了",
3772
+ "pass": true
3773
+ }
3774
+ ],
3775
+ "turns": [
3776
+ {
3777
+ "kid": "复习",
3778
+ "said": "把今天要复习的内容拍给我看看。",
3779
+ "cards": [
3780
+ "photo"
3781
+ ]
3782
+ },
3783
+ {
3784
+ "kid": "今天想复习学过的池和河,我常把它们弄混",
3785
+ "said": "我们想想小鱼生活的地方。\n「池塘」的「池」,你记得它旁边是什么偏旁吗?",
3786
+ "cards": [
3787
+ "text"
3788
+ ]
3789
+ },
3790
+ {
3791
+ "kid": "三点水",
3792
+ "said": "对,「池」和「河」都是三点水,都跟水有关。\n我们再看看它们右边不一样的地方。\n「池塘」的池,右边是个「也」字,就是你常说的「也是」的那个「也」。\n「小河」的河,右边是个「可」字,就是「可以」的那个「可」。\n小鱼游在小池塘里,我们用哪个字?",
3793
+ "cards": [
3794
+ "text",
3795
+ "text"
3796
+ ]
3797
+ },
3798
+ {
3799
+ "kid": "池",
3800
+ "said": "说对了,小池塘就是三点水加一个「也」。\n那长长的、一直往前流的小河呢?",
3801
+ "cards": [
3802
+ "text"
3803
+ ]
3804
+ },
3805
+ {
3806
+ "kid": "河",
3807
+ "said": "也对了,小河就是三点水加一个「可」。\n这两个字你都分清了。",
3808
+ "cards": []
3809
+ },
3810
+ {
3811
+ "kid": "今天先到这里,不想再做。",
3812
+ "said": "好,今天就到这儿。\n你刚才把「池」和「河」都分清了,下次见。",
3813
+ "cards": []
3814
+ }
3815
+ ]
3816
+ },
3817
+ {
3818
+ "pass": true,
3819
+ "error": null,
3820
+ "checks": [
3821
+ {
3822
+ "check": "一节一问",
3823
+ "pass": true
3824
+ },
3825
+ {
3826
+ "check": "每节有讲稿",
3827
+ "pass": true
3828
+ },
3829
+ {
3830
+ "check": "不出画图卡",
3831
+ "pass": true
3832
+ },
3833
+ {
3834
+ "check": "不说: 你太笨、这么简单都不会、你错了",
3835
+ "pass": true
3836
+ }
3837
+ ],
3838
+ "turns": [
3839
+ {
3840
+ "kid": "复习",
3841
+ "said": "把今天要复习的内容拍给我看看。",
3842
+ "cards": [
3843
+ "photo"
3844
+ ]
3845
+ },
3846
+ {
3847
+ "kid": "今天想复习学过的池和河,我常把它们弄混",
3848
+ "said": "我们想想小鱼生活的地方。\n「池塘」的「池」,你记得它旁边是什么偏旁吗?",
3849
+ "cards": [
3850
+ "text",
3851
+ "text"
3852
+ ]
3853
+ },
3854
+ {
3855
+ "kid": "三点水",
3856
+ "said": "对,是三点水。\n「池塘」的池和「小河」的河,左边都是三点水,说明它们都跟水有关。\n右边不一样:「池」右边是个「也」,「河」右边是个「可」。\n你用手比划一下,「河」字右边的「可」,第一笔是什么?",
3857
+ "cards": [
3858
+ "tianzige",
3859
+ "text"
3860
+ ]
3861
+ },
3862
+ {
3863
+ "kid": "横",
3864
+ "said": "对,第一笔是横。\n「河」的右边是个可,先写一横,再写下面的部分。\n「池」的右边是个也,没有那一长横。\n记住这个:有长横的是小河的「河」,没长横的是池塘的「池」。\n这两个字今天就分清啦。",
3865
+ "cards": []
3866
+ },
3867
+ {
3868
+ "kid": "谢谢老师,今天先到这里。",
3869
+ "said": "好,今天先到这里。\n下次分不清的时候,就想想右边有没有那一长横。",
3870
+ "cards": []
3871
+ },
3872
+ {
3873
+ "kid": "好,老师再见",
3874
+ "said": "再见,小明。",
3875
+ "cards": []
3876
+ }
3877
+ ]
3878
+ }
3879
+ ]
3880
+ },
3881
+ {
3882
+ "name": "孩子想停",
3883
+ "pass": true,
3884
+ "runs": [
3885
+ {
3886
+ "pass": true,
3887
+ "error": null,
3888
+ "checks": [
3889
+ {
3890
+ "check": "收尾不问",
3891
+ "pass": true
3892
+ },
3893
+ {
3894
+ "check": "每节有讲稿",
3895
+ "pass": true
3896
+ },
3897
+ {
3898
+ "check": "不出画图卡",
3899
+ "pass": true
3900
+ }
3901
+ ],
3902
+ "turns": [
3903
+ {
3904
+ "kid": "复习",
3905
+ "said": "把今天要复习的内容拍给我看看。",
3906
+ "cards": [
3907
+ "photo"
3908
+ ]
3909
+ },
3910
+ {
3911
+ "kid": "今天不想学了,先到这里吧",
3912
+ "said": "好,今天先到这里,去休息吧。",
3913
+ "cards": []
3914
+ }
3915
+ ]
3916
+ },
3917
+ {
3918
+ "pass": true,
3919
+ "error": null,
3920
+ "checks": [
3921
+ {
3922
+ "check": "收尾不问",
3923
+ "pass": true
3924
+ },
3925
+ {
3926
+ "check": "每节有讲稿",
3927
+ "pass": true
3928
+ },
3929
+ {
3930
+ "check": "不出画图卡",
3931
+ "pass": true
3932
+ }
3933
+ ],
3934
+ "turns": [
3935
+ {
3936
+ "kid": "复习",
3937
+ "said": "把今天要复习的内容拍给我看看。",
3938
+ "cards": [
3939
+ "photo"
3940
+ ]
3941
+ },
3942
+ {
3943
+ "kid": "今天不想学了,先到这里吧",
3944
+ "said": "好,那今天就先到这里。\n去休息吧,下次想复习了再来找我。",
3945
+ "cards": []
3946
+ }
3947
+ ]
3948
+ },
3949
+ {
3950
+ "pass": true,
3951
+ "error": null,
3952
+ "checks": [
3953
+ {
3954
+ "check": "收尾不问",
3955
+ "pass": true
3956
+ },
3957
+ {
3958
+ "check": "每节有讲稿",
3959
+ "pass": true
3960
+ },
3961
+ {
3962
+ "check": "不出画图卡",
3963
+ "pass": true
3964
+ }
3965
+ ],
3966
+ "turns": [
3967
+ {
3968
+ "kid": "复习",
3969
+ "said": "把今天要复习的内容拍给我看看。",
3970
+ "cards": [
3971
+ "photo"
3972
+ ]
3973
+ },
3974
+ {
3975
+ "kid": "今天不想学了,先到这里吧",
3976
+ "said": "好,那今天就先到这里。\n下次想复习了再来找我。",
3977
+ "cards": []
3978
+ }
3979
+ ]
3980
+ }
3981
+ ]
3982
+ }
3983
+ ]
3984
+ },
3985
+ {
3986
+ "phase": "review-repeat-math-tutor",
3987
+ "tutor": "math-tutor",
3988
+ "activity": "复习",
3989
+ "at": "2026-10-27T04:07:58.529Z",
3990
+ "examples": [
3991
+ {
3992
+ "name": "缺少材料",
3993
+ "pass": true,
3994
+ "runs": [
3995
+ {
3996
+ "pass": true,
3997
+ "error": null,
3998
+ "checks": [
3999
+ {
4000
+ "check": "出拍给我看卡",
4001
+ "pass": true
4002
+ },
4003
+ {
4004
+ "check": "每节有讲稿",
4005
+ "pass": true
4006
+ },
4007
+ {
4008
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
4009
+ "pass": true
4010
+ },
4011
+ {
4012
+ "check": "不出画图卡",
4013
+ "pass": true
4014
+ },
4015
+ {
4016
+ "check": "一节一问",
4017
+ "pass": true
4018
+ }
4019
+ ],
4020
+ "turns": [
4021
+ {
4022
+ "kid": "复习",
4023
+ "said": "把今天要复习的内容拍给我看看。",
4024
+ "cards": [
4025
+ "photo"
4026
+ ]
4027
+ }
4028
+ ]
4029
+ },
4030
+ {
4031
+ "pass": true,
4032
+ "error": null,
4033
+ "checks": [
4034
+ {
4035
+ "check": "出拍给我看卡",
4036
+ "pass": true
4037
+ },
4038
+ {
4039
+ "check": "每节有讲稿",
4040
+ "pass": true
4041
+ },
4042
+ {
4043
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
4044
+ "pass": true
4045
+ },
4046
+ {
4047
+ "check": "不出画图卡",
4048
+ "pass": true
4049
+ },
4050
+ {
4051
+ "check": "一节一问",
4052
+ "pass": true
4053
+ }
4054
+ ],
4055
+ "turns": [
4056
+ {
4057
+ "kid": "复习",
4058
+ "said": "把今天要复习的内容拍给我看看。",
4059
+ "cards": [
4060
+ "photo"
4061
+ ]
4062
+ }
4063
+ ]
4064
+ },
4065
+ {
4066
+ "pass": true,
4067
+ "error": null,
4068
+ "checks": [
4069
+ {
4070
+ "check": "出拍给我看卡",
4071
+ "pass": true
4072
+ },
4073
+ {
4074
+ "check": "每节有讲稿",
4075
+ "pass": true
4076
+ },
4077
+ {
4078
+ "check": "不说: photo 卡、上下文包、材料不足、没有范围、没有照片",
4079
+ "pass": true
4080
+ },
4081
+ {
4082
+ "check": "不出画图卡",
4083
+ "pass": true
4084
+ },
4085
+ {
4086
+ "check": "一节一问",
4087
+ "pass": true
4088
+ }
4089
+ ],
4090
+ "turns": [
4091
+ {
4092
+ "kid": "复习",
4093
+ "said": "把今天要复习的内容拍给我看看。",
4094
+ "cards": [
4095
+ "photo"
4096
+ ]
4097
+ }
4098
+ ]
4099
+ }
4100
+ ]
4101
+ },
4102
+ {
4103
+ "name": "给定范围后尝试并结束",
4104
+ "pass": true,
4105
+ "runs": [
4106
+ {
4107
+ "pass": true,
4108
+ "error": null,
4109
+ "checks": [
4110
+ {
4111
+ "check": "一节一问",
4112
+ "pass": true
4113
+ },
4114
+ {
4115
+ "check": "每节有讲稿",
4116
+ "pass": true
4117
+ },
4118
+ {
4119
+ "check": "不出画图卡",
4120
+ "pass": true
4121
+ },
4122
+ {
4123
+ "check": "不说: 你太笨、这么简单都不会、你错了",
4124
+ "pass": true
4125
+ }
4126
+ ],
4127
+ "turns": [
4128
+ {
4129
+ "kid": "复习",
4130
+ "said": "把今天要复习的内容拍给我看看。",
4131
+ "cards": [
4132
+ "photo"
4133
+ ]
4134
+ },
4135
+ {
4136
+ "kid": "复习两位数加法,我学过进位,但个位满十有时忘了进一",
4137
+ "said": "好,我们就练进位加法。\n这道题,先看个位。\n个位上是 4 和 7,4 加 7 等于多少?",
4138
+ "cards": [
4139
+ "text",
4140
+ "text"
4141
+ ]
4142
+ },
4143
+ {
4144
+ "kid": "11",
4145
+ "said": "对,4 加 7 等于 11。\n11 满十了,所以要向十位进 1。\n那个位上写几?",
4146
+ "cards": [
4147
+ "text"
4148
+ ]
4149
+ },
4150
+ {
4151
+ "kid": "个位写1",
4152
+ "said": "对,个位写 1。\n现在看十位,2 加 1,还有进上来的那个 1,十位上一共是几?",
4153
+ "cards": [
4154
+ "text"
4155
+ ]
4156
+ },
4157
+ {
4158
+ "kid": "4",
4159
+ "said": "对,十位是 4。\n24 加 17 等于 41,你算对了。\n这道题你每一步都是自己完成的,进位那一步没有忘,很好。",
4160
+ "cards": [
4161
+ "text"
4162
+ ]
4163
+ },
4164
+ {
4165
+ "kid": "今天先到这里,我不想再做啦。",
4166
+ "said": "好,今天练得很棒,进位那一步记得牢牢的。下次见!",
4167
+ "cards": []
4168
+ }
4169
+ ]
4170
+ },
4171
+ {
4172
+ "pass": true,
4173
+ "error": null,
4174
+ "checks": [
4175
+ {
4176
+ "check": "一节一问",
4177
+ "pass": true
4178
+ },
4179
+ {
4180
+ "check": "每节有讲稿",
4181
+ "pass": true
4182
+ },
4183
+ {
4184
+ "check": "不出画图卡",
4185
+ "pass": true
4186
+ },
4187
+ {
4188
+ "check": "不说: 你太笨、这么简单都不会、你错了",
4189
+ "pass": true
4190
+ }
4191
+ ],
4192
+ "turns": [
4193
+ {
4194
+ "kid": "复习",
4195
+ "said": "把今天要复习的内容拍给我看看。",
4196
+ "cards": [
4197
+ "photo"
4198
+ ]
4199
+ },
4200
+ {
4201
+ "kid": "复习两位数加法,我学过进位,但个位满十有时忘了进一",
4202
+ "said": "我们再试一道:24 加 17。\n先看个位,4 个一加 7 个一,有多少个一?",
4203
+ "cards": [
4204
+ "text"
4205
+ ]
4206
+ },
4207
+ {
4208
+ "kid": "十一个",
4209
+ "said": "对,4 加 7 等于 11 个一。\n11 个一里面有一个十,这个十要把进位带到十位去。\n个位写 1,进上去的 1 记在十位。\n那十位上,2 个十加 1 个十,再加上进上来的 1 个十,一共几个十?",
4210
+ "cards": [
4211
+ "text"
4212
+ ]
4213
+ },
4214
+ {
4215
+ "kid": "四个",
4216
+ "said": "对,4 个十,所以 24 加 17 等于 41。\n这次进位没有忘。\n再来一道试试:36 加 25,个位先算,6 加 5 等于多少?",
4217
+ "cards": [
4218
+ "text"
4219
+ ]
4220
+ },
4221
+ {
4222
+ "kid": "十一个",
4223
+ "said": "对,6 加 5 等于 11。\n满十了,进位别忘了。\n十位上 3 加 2,再加进上去的 1,等于多少?",
4224
+ "cards": [
4225
+ "text"
4226
+ ]
4227
+ },
4228
+ {
4229
+ "kid": "六个",
4230
+ "said": "对,3 加 2 再加进上来的 1,等于 6 个十。\n36 加 25 等于 61。\n两道都算对了。第一道我带着你走了一遍进位,第二道你自己记住了满十进一,没有忘。\n今天就到这里,下次再练。",
4231
+ "cards": []
4232
+ }
4233
+ ]
4234
+ },
4235
+ {
4236
+ "pass": true,
4237
+ "error": null,
4238
+ "checks": [
4239
+ {
4240
+ "check": "一节一问",
4241
+ "pass": true
4242
+ },
4243
+ {
4244
+ "check": "每节有讲稿",
4245
+ "pass": true
4246
+ },
4247
+ {
4248
+ "check": "不出画图卡",
4249
+ "pass": true
4250
+ },
4251
+ {
4252
+ "check": "不说: 你太笨、这么简单都不会、你错了",
4253
+ "pass": true
4254
+ }
4255
+ ],
4256
+ "turns": [
4257
+ {
4258
+ "kid": "复习",
4259
+ "said": "把今天要复习的内容拍给我看看。",
4260
+ "cards": [
4261
+ "photo"
4262
+ ]
4263
+ },
4264
+ {
4265
+ "kid": "复习两位数加法,我学过进位,但个位满十有时忘了进一",
4266
+ "said": "我们再试一道:24 加 17。\n先看个位,4 个一加 7 个一,有多少个一?",
4267
+ "cards": [
4268
+ "text",
4269
+ "text"
4270
+ ]
4271
+ },
4272
+ {
4273
+ "kid": "十一个一",
4274
+ "said": "对,11 个一。\n11 个一里面有一个十和一个一。那一个一留在个位,那一个十怎么办?",
4275
+ "cards": [
4276
+ "text"
4277
+ ]
4278
+ },
4279
+ {
4280
+ "kid": "进一",
4281
+ "said": "对,进一个十到十位。\n那十位上,2 加 1,再加上进上来的 1,等于几?",
4282
+ "cards": [
4283
+ "text"
4284
+ ]
4285
+ },
4286
+ {
4287
+ "kid": "四",
4288
+ "said": "对,十位是 4,所以 24 加 17 等于 41。\n再来一道,这次你自己算算看。\n36 加 25,等于多少?",
4289
+ "cards": [
4290
+ "text",
4291
+ "text"
4292
+ ]
4293
+ },
4294
+ {
4295
+ "kid": "个位六加五,十一,进一",
4296
+ "said": "对,个位 6 加 5 等于 11,进一。\n十位上呢?",
4297
+ "cards": [
4298
+ "text"
4299
+ ]
4300
+ }
4301
+ ]
4302
+ }
4303
+ ]
4304
+ },
4305
+ {
4306
+ "name": "孩子想停",
4307
+ "pass": true,
4308
+ "runs": [
4309
+ {
4310
+ "pass": true,
4311
+ "error": null,
4312
+ "checks": [
4313
+ {
4314
+ "check": "收尾不问",
4315
+ "pass": true
4316
+ },
4317
+ {
4318
+ "check": "每节有讲稿",
4319
+ "pass": true
4320
+ },
4321
+ {
4322
+ "check": "不出画图卡",
4323
+ "pass": true
4324
+ }
4325
+ ],
4326
+ "turns": [
4327
+ {
4328
+ "kid": "复习",
4329
+ "said": "把今天要复习的内容拍给我看看。",
4330
+ "cards": [
4331
+ "photo"
4332
+ ]
4333
+ },
4334
+ {
4335
+ "kid": "今天不想学了,先到这里吧",
4336
+ "said": "好的,今天先休息,下次想复习了再来找我。",
4337
+ "cards": []
4338
+ }
4339
+ ]
4340
+ },
4341
+ {
4342
+ "pass": true,
4343
+ "error": null,
4344
+ "checks": [
4345
+ {
4346
+ "check": "收尾不问",
4347
+ "pass": true
4348
+ },
4349
+ {
4350
+ "check": "每节有讲稿",
4351
+ "pass": true
4352
+ },
4353
+ {
4354
+ "check": "不出画图卡",
4355
+ "pass": true
4356
+ }
4357
+ ],
4358
+ "turns": [
4359
+ {
4360
+ "kid": "复习",
4361
+ "said": "把今天要复习的内容拍给我看看。",
4362
+ "cards": [
4363
+ "photo"
4364
+ ]
4365
+ },
4366
+ {
4367
+ "kid": "今天不想学了,先到这里吧",
4368
+ "said": "好的,那今天就到这里,休息去吧。",
4369
+ "cards": []
4370
+ }
4371
+ ]
4372
+ },
4373
+ {
4374
+ "pass": true,
4375
+ "error": null,
4376
+ "checks": [
4377
+ {
4378
+ "check": "收尾不问",
4379
+ "pass": true
4380
+ },
4381
+ {
4382
+ "check": "每节有讲稿",
4383
+ "pass": true
4384
+ },
4385
+ {
4386
+ "check": "不出画图卡",
4387
+ "pass": true
4388
+ }
4389
+ ],
4390
+ "turns": [
4391
+ {
4392
+ "kid": "复习",
4393
+ "said": "把今天要复习的内容拍给我看看。",
4394
+ "cards": [
4395
+ "photo"
4396
+ ]
4397
+ },
4398
+ {
4399
+ "kid": "今天不想学了,先到这里吧",
4400
+ "said": "好的,今天先休息,下次再一起复习。",
4401
+ "cards": []
4402
+ }
4403
+ ]
4404
+ }
4405
+ ]
4406
+ }
4407
+ ]
4408
+ }
4409
+ ]
4410
+ }