wrong-notebook 0.0.0-stage → 2026.10.21

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 (1067) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +81 -0
  3. package/.next/build-manifest.json +24 -0
  4. package/.next/package.json +1 -0
  5. package/.next/prerender-manifest.json +104 -0
  6. package/.next/required-server-files.json +358 -0
  7. package/.next/routes-manifest.json +579 -0
  8. package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  9. package/.next/server/app/_global-error/page/build-manifest.json +20 -0
  10. package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  11. package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  12. package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  13. package/.next/server/app/_global-error/page.js +9 -0
  14. package/.next/server/app/_global-error/page.js.map +5 -0
  15. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  16. package/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
  17. package/.next/server/app/_global-error.html +1 -0
  18. package/.next/server/app/_global-error.meta +30 -0
  19. package/.next/server/app/_global-error.rsc +15 -0
  20. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +20 -0
  21. package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
  22. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  23. package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  24. package/.next/server/app/_not-found/page/build-manifest.json +20 -0
  25. package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  26. package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  27. package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  28. package/.next/server/app/_not-found/page.js +13 -0
  29. package/.next/server/app/_not-found/page.js.map +5 -0
  30. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  31. package/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
  32. package/.next/server/app/admin/page/app-paths-manifest.json +3 -0
  33. package/.next/server/app/admin/page/build-manifest.json +20 -0
  34. package/.next/server/app/admin/page/next-font-manifest.json +11 -0
  35. package/.next/server/app/admin/page/react-loadable-manifest.json +1 -0
  36. package/.next/server/app/admin/page/server-reference-manifest.json +4 -0
  37. package/.next/server/app/admin/page.js +14 -0
  38. package/.next/server/app/admin/page.js.map +5 -0
  39. package/.next/server/app/admin/page.js.nft.json +1 -0
  40. package/.next/server/app/admin/page_client-reference-manifest.js +3 -0
  41. package/.next/server/app/admin/user/[id]/page/app-paths-manifest.json +3 -0
  42. package/.next/server/app/admin/user/[id]/page/build-manifest.json +20 -0
  43. package/.next/server/app/admin/user/[id]/page/next-font-manifest.json +11 -0
  44. package/.next/server/app/admin/user/[id]/page/react-loadable-manifest.json +1 -0
  45. package/.next/server/app/admin/user/[id]/page/server-reference-manifest.json +4 -0
  46. package/.next/server/app/admin/user/[id]/page.js +14 -0
  47. package/.next/server/app/admin/user/[id]/page.js.map +5 -0
  48. package/.next/server/app/admin/user/[id]/page.js.nft.json +1 -0
  49. package/.next/server/app/admin/user/[id]/page_client-reference-manifest.js +3 -0
  50. package/.next/server/app/api/admin/dashboard/route/app-paths-manifest.json +3 -0
  51. package/.next/server/app/api/admin/dashboard/route/build-manifest.json +12 -0
  52. package/.next/server/app/api/admin/dashboard/route/server-reference-manifest.json +4 -0
  53. package/.next/server/app/api/admin/dashboard/route.js +10 -0
  54. package/.next/server/app/api/admin/dashboard/route.js.map +5 -0
  55. package/.next/server/app/api/admin/dashboard/route.js.nft.json +1 -0
  56. package/.next/server/app/api/admin/dashboard/route_client-reference-manifest.js +3 -0
  57. package/.next/server/app/api/admin/migrate-tags/route/app-paths-manifest.json +3 -0
  58. package/.next/server/app/api/admin/migrate-tags/route/build-manifest.json +12 -0
  59. package/.next/server/app/api/admin/migrate-tags/route/server-reference-manifest.json +4 -0
  60. package/.next/server/app/api/admin/migrate-tags/route.js +9 -0
  61. package/.next/server/app/api/admin/migrate-tags/route.js.map +5 -0
  62. package/.next/server/app/api/admin/migrate-tags/route.js.nft.json +1 -0
  63. package/.next/server/app/api/admin/migrate-tags/route_client-reference-manifest.js +3 -0
  64. package/.next/server/app/api/admin/system-reset/route/app-paths-manifest.json +3 -0
  65. package/.next/server/app/api/admin/system-reset/route/build-manifest.json +12 -0
  66. package/.next/server/app/api/admin/system-reset/route/server-reference-manifest.json +4 -0
  67. package/.next/server/app/api/admin/system-reset/route.js +8 -0
  68. package/.next/server/app/api/admin/system-reset/route.js.map +5 -0
  69. package/.next/server/app/api/admin/system-reset/route.js.nft.json +1 -0
  70. package/.next/server/app/api/admin/system-reset/route_client-reference-manifest.js +3 -0
  71. package/.next/server/app/api/admin/users/[id]/detail/route/app-paths-manifest.json +3 -0
  72. package/.next/server/app/api/admin/users/[id]/detail/route/build-manifest.json +12 -0
  73. package/.next/server/app/api/admin/users/[id]/detail/route/server-reference-manifest.json +4 -0
  74. package/.next/server/app/api/admin/users/[id]/detail/route.js +9 -0
  75. package/.next/server/app/api/admin/users/[id]/detail/route.js.map +5 -0
  76. package/.next/server/app/api/admin/users/[id]/detail/route.js.nft.json +1 -0
  77. package/.next/server/app/api/admin/users/[id]/detail/route_client-reference-manifest.js +3 -0
  78. package/.next/server/app/api/admin/users/[id]/route/app-paths-manifest.json +3 -0
  79. package/.next/server/app/api/admin/users/[id]/route/build-manifest.json +12 -0
  80. package/.next/server/app/api/admin/users/[id]/route/server-reference-manifest.json +4 -0
  81. package/.next/server/app/api/admin/users/[id]/route.js +8 -0
  82. package/.next/server/app/api/admin/users/[id]/route.js.map +5 -0
  83. package/.next/server/app/api/admin/users/[id]/route.js.nft.json +1 -0
  84. package/.next/server/app/api/admin/users/[id]/route_client-reference-manifest.js +3 -0
  85. package/.next/server/app/api/admin/users/route/app-paths-manifest.json +3 -0
  86. package/.next/server/app/api/admin/users/route/build-manifest.json +12 -0
  87. package/.next/server/app/api/admin/users/route/server-reference-manifest.json +4 -0
  88. package/.next/server/app/api/admin/users/route.js +8 -0
  89. package/.next/server/app/api/admin/users/route.js.map +5 -0
  90. package/.next/server/app/api/admin/users/route.js.nft.json +1 -0
  91. package/.next/server/app/api/admin/users/route_client-reference-manifest.js +3 -0
  92. package/.next/server/app/api/ai/models/route/app-paths-manifest.json +3 -0
  93. package/.next/server/app/api/ai/models/route/build-manifest.json +12 -0
  94. package/.next/server/app/api/ai/models/route/server-reference-manifest.json +4 -0
  95. package/.next/server/app/api/ai/models/route.js +14 -0
  96. package/.next/server/app/api/ai/models/route.js.map +5 -0
  97. package/.next/server/app/api/ai/models/route.js.nft.json +1 -0
  98. package/.next/server/app/api/ai/models/route_client-reference-manifest.js +3 -0
  99. package/.next/server/app/api/ai/test/route/app-paths-manifest.json +3 -0
  100. package/.next/server/app/api/ai/test/route/build-manifest.json +12 -0
  101. package/.next/server/app/api/ai/test/route/server-reference-manifest.json +4 -0
  102. package/.next/server/app/api/ai/test/route.js +15 -0
  103. package/.next/server/app/api/ai/test/route.js.map +5 -0
  104. package/.next/server/app/api/ai/test/route.js.nft.json +1 -0
  105. package/.next/server/app/api/ai/test/route_client-reference-manifest.js +3 -0
  106. package/.next/server/app/api/analytics/route/app-paths-manifest.json +3 -0
  107. package/.next/server/app/api/analytics/route/build-manifest.json +12 -0
  108. package/.next/server/app/api/analytics/route/server-reference-manifest.json +4 -0
  109. package/.next/server/app/api/analytics/route.js +9 -0
  110. package/.next/server/app/api/analytics/route.js.map +5 -0
  111. package/.next/server/app/api/analytics/route.js.nft.json +1 -0
  112. package/.next/server/app/api/analytics/route_client-reference-manifest.js +3 -0
  113. package/.next/server/app/api/analyze/route/app-paths-manifest.json +3 -0
  114. package/.next/server/app/api/analyze/route/build-manifest.json +12 -0
  115. package/.next/server/app/api/analyze/route/server-reference-manifest.json +4 -0
  116. package/.next/server/app/api/analyze/route.js +16 -0
  117. package/.next/server/app/api/analyze/route.js.map +5 -0
  118. package/.next/server/app/api/analyze/route.js.nft.json +1 -0
  119. package/.next/server/app/api/analyze/route_client-reference-manifest.js +3 -0
  120. package/.next/server/app/api/auth/[...nextauth]/route/app-paths-manifest.json +3 -0
  121. package/.next/server/app/api/auth/[...nextauth]/route/build-manifest.json +12 -0
  122. package/.next/server/app/api/auth/[...nextauth]/route/server-reference-manifest.json +4 -0
  123. package/.next/server/app/api/auth/[...nextauth]/route.js +7 -0
  124. package/.next/server/app/api/auth/[...nextauth]/route.js.map +5 -0
  125. package/.next/server/app/api/auth/[...nextauth]/route.js.nft.json +1 -0
  126. package/.next/server/app/api/auth/[...nextauth]/route_client-reference-manifest.js +3 -0
  127. package/.next/server/app/api/error-items/[id]/delete/route/app-paths-manifest.json +3 -0
  128. package/.next/server/app/api/error-items/[id]/delete/route/build-manifest.json +12 -0
  129. package/.next/server/app/api/error-items/[id]/delete/route/server-reference-manifest.json +4 -0
  130. package/.next/server/app/api/error-items/[id]/delete/route.js +8 -0
  131. package/.next/server/app/api/error-items/[id]/delete/route.js.map +5 -0
  132. package/.next/server/app/api/error-items/[id]/delete/route.js.nft.json +1 -0
  133. package/.next/server/app/api/error-items/[id]/delete/route_client-reference-manifest.js +3 -0
  134. package/.next/server/app/api/error-items/[id]/figure/route/app-paths-manifest.json +3 -0
  135. package/.next/server/app/api/error-items/[id]/figure/route/build-manifest.json +12 -0
  136. package/.next/server/app/api/error-items/[id]/figure/route/server-reference-manifest.json +4 -0
  137. package/.next/server/app/api/error-items/[id]/figure/route.js +15 -0
  138. package/.next/server/app/api/error-items/[id]/figure/route.js.map +5 -0
  139. package/.next/server/app/api/error-items/[id]/figure/route.js.nft.json +1 -0
  140. package/.next/server/app/api/error-items/[id]/figure/route_client-reference-manifest.js +3 -0
  141. package/.next/server/app/api/error-items/[id]/fix-latex/route/app-paths-manifest.json +3 -0
  142. package/.next/server/app/api/error-items/[id]/fix-latex/route/build-manifest.json +12 -0
  143. package/.next/server/app/api/error-items/[id]/fix-latex/route/server-reference-manifest.json +4 -0
  144. package/.next/server/app/api/error-items/[id]/fix-latex/route.js +16 -0
  145. package/.next/server/app/api/error-items/[id]/fix-latex/route.js.map +5 -0
  146. package/.next/server/app/api/error-items/[id]/fix-latex/route.js.nft.json +1 -0
  147. package/.next/server/app/api/error-items/[id]/fix-latex/route_client-reference-manifest.js +3 -0
  148. package/.next/server/app/api/error-items/[id]/geogebra/route/app-paths-manifest.json +3 -0
  149. package/.next/server/app/api/error-items/[id]/geogebra/route/build-manifest.json +12 -0
  150. package/.next/server/app/api/error-items/[id]/geogebra/route/server-reference-manifest.json +4 -0
  151. package/.next/server/app/api/error-items/[id]/geogebra/route.js +15 -0
  152. package/.next/server/app/api/error-items/[id]/geogebra/route.js.map +5 -0
  153. package/.next/server/app/api/error-items/[id]/geogebra/route.js.nft.json +1 -0
  154. package/.next/server/app/api/error-items/[id]/geogebra/route_client-reference-manifest.js +3 -0
  155. package/.next/server/app/api/error-items/[id]/image/route/app-paths-manifest.json +3 -0
  156. package/.next/server/app/api/error-items/[id]/image/route/build-manifest.json +12 -0
  157. package/.next/server/app/api/error-items/[id]/image/route/server-reference-manifest.json +4 -0
  158. package/.next/server/app/api/error-items/[id]/image/route.js +9 -0
  159. package/.next/server/app/api/error-items/[id]/image/route.js.map +5 -0
  160. package/.next/server/app/api/error-items/[id]/image/route.js.nft.json +1 -0
  161. package/.next/server/app/api/error-items/[id]/image/route_client-reference-manifest.js +3 -0
  162. package/.next/server/app/api/error-items/[id]/mastery/route/app-paths-manifest.json +3 -0
  163. package/.next/server/app/api/error-items/[id]/mastery/route/build-manifest.json +12 -0
  164. package/.next/server/app/api/error-items/[id]/mastery/route/server-reference-manifest.json +4 -0
  165. package/.next/server/app/api/error-items/[id]/mastery/route.js +8 -0
  166. package/.next/server/app/api/error-items/[id]/mastery/route.js.map +5 -0
  167. package/.next/server/app/api/error-items/[id]/mastery/route.js.nft.json +1 -0
  168. package/.next/server/app/api/error-items/[id]/mastery/route_client-reference-manifest.js +3 -0
  169. package/.next/server/app/api/error-items/[id]/notes/route/app-paths-manifest.json +3 -0
  170. package/.next/server/app/api/error-items/[id]/notes/route/build-manifest.json +12 -0
  171. package/.next/server/app/api/error-items/[id]/notes/route/server-reference-manifest.json +4 -0
  172. package/.next/server/app/api/error-items/[id]/notes/route.js +8 -0
  173. package/.next/server/app/api/error-items/[id]/notes/route.js.map +5 -0
  174. package/.next/server/app/api/error-items/[id]/notes/route.js.nft.json +1 -0
  175. package/.next/server/app/api/error-items/[id]/notes/route_client-reference-manifest.js +3 -0
  176. package/.next/server/app/api/error-items/[id]/practice-records/route/app-paths-manifest.json +3 -0
  177. package/.next/server/app/api/error-items/[id]/practice-records/route/build-manifest.json +12 -0
  178. package/.next/server/app/api/error-items/[id]/practice-records/route/server-reference-manifest.json +4 -0
  179. package/.next/server/app/api/error-items/[id]/practice-records/route.js +8 -0
  180. package/.next/server/app/api/error-items/[id]/practice-records/route.js.map +5 -0
  181. package/.next/server/app/api/error-items/[id]/practice-records/route.js.nft.json +1 -0
  182. package/.next/server/app/api/error-items/[id]/practice-records/route_client-reference-manifest.js +3 -0
  183. package/.next/server/app/api/error-items/[id]/reanswer/route/app-paths-manifest.json +3 -0
  184. package/.next/server/app/api/error-items/[id]/reanswer/route/build-manifest.json +12 -0
  185. package/.next/server/app/api/error-items/[id]/reanswer/route/server-reference-manifest.json +4 -0
  186. package/.next/server/app/api/error-items/[id]/reanswer/route.js +15 -0
  187. package/.next/server/app/api/error-items/[id]/reanswer/route.js.map +5 -0
  188. package/.next/server/app/api/error-items/[id]/reanswer/route.js.nft.json +1 -0
  189. package/.next/server/app/api/error-items/[id]/reanswer/route_client-reference-manifest.js +3 -0
  190. package/.next/server/app/api/error-items/[id]/retag/route/app-paths-manifest.json +3 -0
  191. package/.next/server/app/api/error-items/[id]/retag/route/build-manifest.json +12 -0
  192. package/.next/server/app/api/error-items/[id]/retag/route/server-reference-manifest.json +4 -0
  193. package/.next/server/app/api/error-items/[id]/retag/route.js +16 -0
  194. package/.next/server/app/api/error-items/[id]/retag/route.js.map +5 -0
  195. package/.next/server/app/api/error-items/[id]/retag/route.js.nft.json +1 -0
  196. package/.next/server/app/api/error-items/[id]/retag/route_client-reference-manifest.js +3 -0
  197. package/.next/server/app/api/error-items/[id]/route/app-paths-manifest.json +3 -0
  198. package/.next/server/app/api/error-items/[id]/route/build-manifest.json +12 -0
  199. package/.next/server/app/api/error-items/[id]/route/server-reference-manifest.json +4 -0
  200. package/.next/server/app/api/error-items/[id]/route.js +9 -0
  201. package/.next/server/app/api/error-items/[id]/route.js.map +5 -0
  202. package/.next/server/app/api/error-items/[id]/route.js.nft.json +1 -0
  203. package/.next/server/app/api/error-items/[id]/route_client-reference-manifest.js +3 -0
  204. package/.next/server/app/api/error-items/[id]/svg-animation/route/app-paths-manifest.json +3 -0
  205. package/.next/server/app/api/error-items/[id]/svg-animation/route/build-manifest.json +12 -0
  206. package/.next/server/app/api/error-items/[id]/svg-animation/route/server-reference-manifest.json +4 -0
  207. package/.next/server/app/api/error-items/[id]/svg-animation/route.js +16 -0
  208. package/.next/server/app/api/error-items/[id]/svg-animation/route.js.map +5 -0
  209. package/.next/server/app/api/error-items/[id]/svg-animation/route.js.nft.json +1 -0
  210. package/.next/server/app/api/error-items/[id]/svg-animation/route_client-reference-manifest.js +3 -0
  211. package/.next/server/app/api/error-items/batch-delete/route/app-paths-manifest.json +3 -0
  212. package/.next/server/app/api/error-items/batch-delete/route/build-manifest.json +12 -0
  213. package/.next/server/app/api/error-items/batch-delete/route/server-reference-manifest.json +4 -0
  214. package/.next/server/app/api/error-items/batch-delete/route.js +8 -0
  215. package/.next/server/app/api/error-items/batch-delete/route.js.map +5 -0
  216. package/.next/server/app/api/error-items/batch-delete/route.js.nft.json +1 -0
  217. package/.next/server/app/api/error-items/batch-delete/route_client-reference-manifest.js +3 -0
  218. package/.next/server/app/api/error-items/clear/route/app-paths-manifest.json +3 -0
  219. package/.next/server/app/api/error-items/clear/route/build-manifest.json +12 -0
  220. package/.next/server/app/api/error-items/clear/route/server-reference-manifest.json +4 -0
  221. package/.next/server/app/api/error-items/clear/route.js +8 -0
  222. package/.next/server/app/api/error-items/clear/route.js.map +5 -0
  223. package/.next/server/app/api/error-items/clear/route.js.nft.json +1 -0
  224. package/.next/server/app/api/error-items/clear/route_client-reference-manifest.js +3 -0
  225. package/.next/server/app/api/error-items/list/route/app-paths-manifest.json +3 -0
  226. package/.next/server/app/api/error-items/list/route/build-manifest.json +12 -0
  227. package/.next/server/app/api/error-items/list/route/server-reference-manifest.json +4 -0
  228. package/.next/server/app/api/error-items/list/route.js +10 -0
  229. package/.next/server/app/api/error-items/list/route.js.map +5 -0
  230. package/.next/server/app/api/error-items/list/route.js.nft.json +1 -0
  231. package/.next/server/app/api/error-items/list/route_client-reference-manifest.js +3 -0
  232. package/.next/server/app/api/error-items/route/app-paths-manifest.json +3 -0
  233. package/.next/server/app/api/error-items/route/build-manifest.json +12 -0
  234. package/.next/server/app/api/error-items/route/server-reference-manifest.json +4 -0
  235. package/.next/server/app/api/error-items/route.js +17 -0
  236. package/.next/server/app/api/error-items/route.js.map +5 -0
  237. package/.next/server/app/api/error-items/route.js.nft.json +1 -0
  238. package/.next/server/app/api/error-items/route_client-reference-manifest.js +3 -0
  239. package/.next/server/app/api/error-items/short/[shortId]/route/app-paths-manifest.json +3 -0
  240. package/.next/server/app/api/error-items/short/[shortId]/route/build-manifest.json +12 -0
  241. package/.next/server/app/api/error-items/short/[shortId]/route/server-reference-manifest.json +4 -0
  242. package/.next/server/app/api/error-items/short/[shortId]/route.js +8 -0
  243. package/.next/server/app/api/error-items/short/[shortId]/route.js.map +5 -0
  244. package/.next/server/app/api/error-items/short/[shortId]/route.js.nft.json +1 -0
  245. package/.next/server/app/api/error-items/short/[shortId]/route_client-reference-manifest.js +3 -0
  246. package/.next/server/app/api/error-items/similarity/route/app-paths-manifest.json +3 -0
  247. package/.next/server/app/api/error-items/similarity/route/build-manifest.json +12 -0
  248. package/.next/server/app/api/error-items/similarity/route/server-reference-manifest.json +4 -0
  249. package/.next/server/app/api/error-items/similarity/route.js +9 -0
  250. package/.next/server/app/api/error-items/similarity/route.js.map +5 -0
  251. package/.next/server/app/api/error-items/similarity/route.js.nft.json +1 -0
  252. package/.next/server/app/api/error-items/similarity/route_client-reference-manifest.js +3 -0
  253. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route/app-paths-manifest.json +3 -0
  254. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route/build-manifest.json +12 -0
  255. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route/server-reference-manifest.json +4 -0
  256. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js +16 -0
  257. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js.map +5 -0
  258. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js.nft.json +1 -0
  259. package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route_client-reference-manifest.js +3 -0
  260. package/.next/server/app/api/exams/[id]/results/route/app-paths-manifest.json +3 -0
  261. package/.next/server/app/api/exams/[id]/results/route/build-manifest.json +12 -0
  262. package/.next/server/app/api/exams/[id]/results/route/server-reference-manifest.json +4 -0
  263. package/.next/server/app/api/exams/[id]/results/route.js +16 -0
  264. package/.next/server/app/api/exams/[id]/results/route.js.map +5 -0
  265. package/.next/server/app/api/exams/[id]/results/route.js.nft.json +1 -0
  266. package/.next/server/app/api/exams/[id]/results/route_client-reference-manifest.js +3 -0
  267. package/.next/server/app/api/exams/[id]/retry/route/app-paths-manifest.json +3 -0
  268. package/.next/server/app/api/exams/[id]/retry/route/build-manifest.json +12 -0
  269. package/.next/server/app/api/exams/[id]/retry/route/server-reference-manifest.json +4 -0
  270. package/.next/server/app/api/exams/[id]/retry/route.js +16 -0
  271. package/.next/server/app/api/exams/[id]/retry/route.js.map +5 -0
  272. package/.next/server/app/api/exams/[id]/retry/route.js.nft.json +1 -0
  273. package/.next/server/app/api/exams/[id]/retry/route_client-reference-manifest.js +3 -0
  274. package/.next/server/app/api/exams/[id]/route/app-paths-manifest.json +3 -0
  275. package/.next/server/app/api/exams/[id]/route/build-manifest.json +12 -0
  276. package/.next/server/app/api/exams/[id]/route/server-reference-manifest.json +4 -0
  277. package/.next/server/app/api/exams/[id]/route.js +16 -0
  278. package/.next/server/app/api/exams/[id]/route.js.map +5 -0
  279. package/.next/server/app/api/exams/[id]/route.js.nft.json +1 -0
  280. package/.next/server/app/api/exams/[id]/route_client-reference-manifest.js +3 -0
  281. package/.next/server/app/api/exams/route/app-paths-manifest.json +3 -0
  282. package/.next/server/app/api/exams/route/build-manifest.json +12 -0
  283. package/.next/server/app/api/exams/route/server-reference-manifest.json +4 -0
  284. package/.next/server/app/api/exams/route.js +16 -0
  285. package/.next/server/app/api/exams/route.js.map +5 -0
  286. package/.next/server/app/api/exams/route.js.nft.json +1 -0
  287. package/.next/server/app/api/exams/route_client-reference-manifest.js +3 -0
  288. package/.next/server/app/api/export/route/app-paths-manifest.json +3 -0
  289. package/.next/server/app/api/export/route/build-manifest.json +12 -0
  290. package/.next/server/app/api/export/route/server-reference-manifest.json +4 -0
  291. package/.next/server/app/api/export/route.js +10 -0
  292. package/.next/server/app/api/export/route.js.map +5 -0
  293. package/.next/server/app/api/export/route.js.nft.json +1 -0
  294. package/.next/server/app/api/export/route_client-reference-manifest.js +3 -0
  295. package/.next/server/app/api/geogebra-analyze/route/app-paths-manifest.json +3 -0
  296. package/.next/server/app/api/geogebra-analyze/route/build-manifest.json +12 -0
  297. package/.next/server/app/api/geogebra-analyze/route/server-reference-manifest.json +4 -0
  298. package/.next/server/app/api/geogebra-analyze/route.js +15 -0
  299. package/.next/server/app/api/geogebra-analyze/route.js.map +5 -0
  300. package/.next/server/app/api/geogebra-analyze/route.js.nft.json +1 -0
  301. package/.next/server/app/api/geogebra-analyze/route_client-reference-manifest.js +3 -0
  302. package/.next/server/app/api/health/route/app-paths-manifest.json +3 -0
  303. package/.next/server/app/api/health/route/build-manifest.json +12 -0
  304. package/.next/server/app/api/health/route/server-reference-manifest.json +4 -0
  305. package/.next/server/app/api/health/route.js +7 -0
  306. package/.next/server/app/api/health/route.js.map +5 -0
  307. package/.next/server/app/api/health/route.js.nft.json +1 -0
  308. package/.next/server/app/api/health/route_client-reference-manifest.js +3 -0
  309. package/.next/server/app/api/import/route/app-paths-manifest.json +3 -0
  310. package/.next/server/app/api/import/route/build-manifest.json +12 -0
  311. package/.next/server/app/api/import/route/server-reference-manifest.json +4 -0
  312. package/.next/server/app/api/import/route.js +17 -0
  313. package/.next/server/app/api/import/route.js.map +5 -0
  314. package/.next/server/app/api/import/route.js.nft.json +1 -0
  315. package/.next/server/app/api/import/route_client-reference-manifest.js +3 -0
  316. package/.next/server/app/api/logs/frontend/route/app-paths-manifest.json +3 -0
  317. package/.next/server/app/api/logs/frontend/route/build-manifest.json +12 -0
  318. package/.next/server/app/api/logs/frontend/route/server-reference-manifest.json +4 -0
  319. package/.next/server/app/api/logs/frontend/route.js +8 -0
  320. package/.next/server/app/api/logs/frontend/route.js.map +5 -0
  321. package/.next/server/app/api/logs/frontend/route.js.nft.json +1 -0
  322. package/.next/server/app/api/logs/frontend/route_client-reference-manifest.js +3 -0
  323. package/.next/server/app/api/notebooks/[id]/retag/route/app-paths-manifest.json +3 -0
  324. package/.next/server/app/api/notebooks/[id]/retag/route/build-manifest.json +12 -0
  325. package/.next/server/app/api/notebooks/[id]/retag/route/server-reference-manifest.json +4 -0
  326. package/.next/server/app/api/notebooks/[id]/retag/route.js +16 -0
  327. package/.next/server/app/api/notebooks/[id]/retag/route.js.map +5 -0
  328. package/.next/server/app/api/notebooks/[id]/retag/route.js.nft.json +1 -0
  329. package/.next/server/app/api/notebooks/[id]/retag/route_client-reference-manifest.js +3 -0
  330. package/.next/server/app/api/notebooks/[id]/route/app-paths-manifest.json +3 -0
  331. package/.next/server/app/api/notebooks/[id]/route/build-manifest.json +12 -0
  332. package/.next/server/app/api/notebooks/[id]/route/server-reference-manifest.json +4 -0
  333. package/.next/server/app/api/notebooks/[id]/route.js +9 -0
  334. package/.next/server/app/api/notebooks/[id]/route.js.map +5 -0
  335. package/.next/server/app/api/notebooks/[id]/route.js.nft.json +1 -0
  336. package/.next/server/app/api/notebooks/[id]/route_client-reference-manifest.js +3 -0
  337. package/.next/server/app/api/notebooks/route/app-paths-manifest.json +3 -0
  338. package/.next/server/app/api/notebooks/route/build-manifest.json +12 -0
  339. package/.next/server/app/api/notebooks/route/server-reference-manifest.json +4 -0
  340. package/.next/server/app/api/notebooks/route.js +10 -0
  341. package/.next/server/app/api/notebooks/route.js.map +5 -0
  342. package/.next/server/app/api/notebooks/route.js.nft.json +1 -0
  343. package/.next/server/app/api/notebooks/route_client-reference-manifest.js +3 -0
  344. package/.next/server/app/api/openclaw/batch-upload/route/app-paths-manifest.json +3 -0
  345. package/.next/server/app/api/openclaw/batch-upload/route/build-manifest.json +12 -0
  346. package/.next/server/app/api/openclaw/batch-upload/route/server-reference-manifest.json +4 -0
  347. package/.next/server/app/api/openclaw/batch-upload/route.js +15 -0
  348. package/.next/server/app/api/openclaw/batch-upload/route.js.map +5 -0
  349. package/.next/server/app/api/openclaw/batch-upload/route.js.nft.json +1 -0
  350. package/.next/server/app/api/openclaw/batch-upload/route_client-reference-manifest.js +3 -0
  351. package/.next/server/app/api/practice/generate/route/app-paths-manifest.json +3 -0
  352. package/.next/server/app/api/practice/generate/route/build-manifest.json +12 -0
  353. package/.next/server/app/api/practice/generate/route/server-reference-manifest.json +4 -0
  354. package/.next/server/app/api/practice/generate/route.js +15 -0
  355. package/.next/server/app/api/practice/generate/route.js.map +5 -0
  356. package/.next/server/app/api/practice/generate/route.js.nft.json +1 -0
  357. package/.next/server/app/api/practice/generate/route_client-reference-manifest.js +3 -0
  358. package/.next/server/app/api/practice/record/[id]/route/app-paths-manifest.json +3 -0
  359. package/.next/server/app/api/practice/record/[id]/route/build-manifest.json +12 -0
  360. package/.next/server/app/api/practice/record/[id]/route/server-reference-manifest.json +4 -0
  361. package/.next/server/app/api/practice/record/[id]/route.js +15 -0
  362. package/.next/server/app/api/practice/record/[id]/route.js.map +5 -0
  363. package/.next/server/app/api/practice/record/[id]/route.js.nft.json +1 -0
  364. package/.next/server/app/api/practice/record/[id]/route_client-reference-manifest.js +3 -0
  365. package/.next/server/app/api/practice/record/route/app-paths-manifest.json +3 -0
  366. package/.next/server/app/api/practice/record/route/build-manifest.json +12 -0
  367. package/.next/server/app/api/practice/record/route/server-reference-manifest.json +4 -0
  368. package/.next/server/app/api/practice/record/route.js +15 -0
  369. package/.next/server/app/api/practice/record/route.js.map +5 -0
  370. package/.next/server/app/api/practice/record/route.js.nft.json +1 -0
  371. package/.next/server/app/api/practice/record/route_client-reference-manifest.js +3 -0
  372. package/.next/server/app/api/reanswer/route/app-paths-manifest.json +3 -0
  373. package/.next/server/app/api/reanswer/route/build-manifest.json +12 -0
  374. package/.next/server/app/api/reanswer/route/server-reference-manifest.json +4 -0
  375. package/.next/server/app/api/reanswer/route.js +15 -0
  376. package/.next/server/app/api/reanswer/route.js.map +5 -0
  377. package/.next/server/app/api/reanswer/route.js.nft.json +1 -0
  378. package/.next/server/app/api/reanswer/route_client-reference-manifest.js +3 -0
  379. package/.next/server/app/api/register/route/app-paths-manifest.json +3 -0
  380. package/.next/server/app/api/register/route/build-manifest.json +12 -0
  381. package/.next/server/app/api/register/route/server-reference-manifest.json +4 -0
  382. package/.next/server/app/api/register/route.js +9 -0
  383. package/.next/server/app/api/register/route.js.map +5 -0
  384. package/.next/server/app/api/register/route.js.nft.json +1 -0
  385. package/.next/server/app/api/register/route_client-reference-manifest.js +3 -0
  386. package/.next/server/app/api/register/status/route/app-paths-manifest.json +3 -0
  387. package/.next/server/app/api/register/status/route/build-manifest.json +12 -0
  388. package/.next/server/app/api/register/status/route/server-reference-manifest.json +4 -0
  389. package/.next/server/app/api/register/status/route.js +8 -0
  390. package/.next/server/app/api/register/status/route.js.map +5 -0
  391. package/.next/server/app/api/register/status/route.js.nft.json +1 -0
  392. package/.next/server/app/api/register/status/route_client-reference-manifest.js +3 -0
  393. package/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
  394. package/.next/server/app/api/settings/route/build-manifest.json +12 -0
  395. package/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
  396. package/.next/server/app/api/settings/route.js +9 -0
  397. package/.next/server/app/api/settings/route.js.map +5 -0
  398. package/.next/server/app/api/settings/route.js.nft.json +1 -0
  399. package/.next/server/app/api/settings/route_client-reference-manifest.js +3 -0
  400. package/.next/server/app/api/stats/practice/clear/route/app-paths-manifest.json +3 -0
  401. package/.next/server/app/api/stats/practice/clear/route/build-manifest.json +12 -0
  402. package/.next/server/app/api/stats/practice/clear/route/server-reference-manifest.json +4 -0
  403. package/.next/server/app/api/stats/practice/clear/route.js +8 -0
  404. package/.next/server/app/api/stats/practice/clear/route.js.map +5 -0
  405. package/.next/server/app/api/stats/practice/clear/route.js.nft.json +1 -0
  406. package/.next/server/app/api/stats/practice/clear/route_client-reference-manifest.js +3 -0
  407. package/.next/server/app/api/stats/practice/route/app-paths-manifest.json +3 -0
  408. package/.next/server/app/api/stats/practice/route/build-manifest.json +12 -0
  409. package/.next/server/app/api/stats/practice/route/server-reference-manifest.json +4 -0
  410. package/.next/server/app/api/stats/practice/route.js +9 -0
  411. package/.next/server/app/api/stats/practice/route.js.map +5 -0
  412. package/.next/server/app/api/stats/practice/route.js.nft.json +1 -0
  413. package/.next/server/app/api/stats/practice/route_client-reference-manifest.js +3 -0
  414. package/.next/server/app/api/tags/route/app-paths-manifest.json +3 -0
  415. package/.next/server/app/api/tags/route/build-manifest.json +12 -0
  416. package/.next/server/app/api/tags/route/server-reference-manifest.json +4 -0
  417. package/.next/server/app/api/tags/route.js +9 -0
  418. package/.next/server/app/api/tags/route.js.map +5 -0
  419. package/.next/server/app/api/tags/route.js.nft.json +1 -0
  420. package/.next/server/app/api/tags/route_client-reference-manifest.js +3 -0
  421. package/.next/server/app/api/tags/stats/route/app-paths-manifest.json +3 -0
  422. package/.next/server/app/api/tags/stats/route/build-manifest.json +12 -0
  423. package/.next/server/app/api/tags/stats/route/server-reference-manifest.json +4 -0
  424. package/.next/server/app/api/tags/stats/route.js +8 -0
  425. package/.next/server/app/api/tags/stats/route.js.map +5 -0
  426. package/.next/server/app/api/tags/stats/route.js.nft.json +1 -0
  427. package/.next/server/app/api/tags/stats/route_client-reference-manifest.js +3 -0
  428. package/.next/server/app/api/tags/suggestions/route/app-paths-manifest.json +3 -0
  429. package/.next/server/app/api/tags/suggestions/route/build-manifest.json +12 -0
  430. package/.next/server/app/api/tags/suggestions/route/server-reference-manifest.json +4 -0
  431. package/.next/server/app/api/tags/suggestions/route.js +8 -0
  432. package/.next/server/app/api/tags/suggestions/route.js.map +5 -0
  433. package/.next/server/app/api/tags/suggestions/route.js.nft.json +1 -0
  434. package/.next/server/app/api/tags/suggestions/route_client-reference-manifest.js +3 -0
  435. package/.next/server/app/api/tasks/route/app-paths-manifest.json +3 -0
  436. package/.next/server/app/api/tasks/route/build-manifest.json +12 -0
  437. package/.next/server/app/api/tasks/route/server-reference-manifest.json +4 -0
  438. package/.next/server/app/api/tasks/route.js +8 -0
  439. package/.next/server/app/api/tasks/route.js.map +5 -0
  440. package/.next/server/app/api/tasks/route.js.nft.json +1 -0
  441. package/.next/server/app/api/tasks/route_client-reference-manifest.js +3 -0
  442. package/.next/server/app/api/user/route/app-paths-manifest.json +3 -0
  443. package/.next/server/app/api/user/route/build-manifest.json +12 -0
  444. package/.next/server/app/api/user/route/server-reference-manifest.json +4 -0
  445. package/.next/server/app/api/user/route.js +10 -0
  446. package/.next/server/app/api/user/route.js.map +5 -0
  447. package/.next/server/app/api/user/route.js.nft.json +1 -0
  448. package/.next/server/app/api/user/route_client-reference-manifest.js +3 -0
  449. package/.next/server/app/api/version/route/app-paths-manifest.json +3 -0
  450. package/.next/server/app/api/version/route/build-manifest.json +12 -0
  451. package/.next/server/app/api/version/route/server-reference-manifest.json +4 -0
  452. package/.next/server/app/api/version/route.js +7 -0
  453. package/.next/server/app/api/version/route.js.map +5 -0
  454. package/.next/server/app/api/version/route.js.nft.json +1 -0
  455. package/.next/server/app/api/version/route_client-reference-manifest.js +3 -0
  456. package/.next/server/app/error-items/[id]/page/app-paths-manifest.json +3 -0
  457. package/.next/server/app/error-items/[id]/page/build-manifest.json +20 -0
  458. package/.next/server/app/error-items/[id]/page/next-font-manifest.json +11 -0
  459. package/.next/server/app/error-items/[id]/page/react-loadable-manifest.json +1 -0
  460. package/.next/server/app/error-items/[id]/page/server-reference-manifest.json +4 -0
  461. package/.next/server/app/error-items/[id]/page.js +14 -0
  462. package/.next/server/app/error-items/[id]/page.js.map +5 -0
  463. package/.next/server/app/error-items/[id]/page.js.nft.json +1 -0
  464. package/.next/server/app/error-items/[id]/page_client-reference-manifest.js +3 -0
  465. package/.next/server/app/exams/[id]/page/app-paths-manifest.json +3 -0
  466. package/.next/server/app/exams/[id]/page/build-manifest.json +20 -0
  467. package/.next/server/app/exams/[id]/page/next-font-manifest.json +11 -0
  468. package/.next/server/app/exams/[id]/page/react-loadable-manifest.json +1 -0
  469. package/.next/server/app/exams/[id]/page/server-reference-manifest.json +4 -0
  470. package/.next/server/app/exams/[id]/page.js +14 -0
  471. package/.next/server/app/exams/[id]/page.js.map +5 -0
  472. package/.next/server/app/exams/[id]/page.js.nft.json +1 -0
  473. package/.next/server/app/exams/[id]/page_client-reference-manifest.js +3 -0
  474. package/.next/server/app/exams/[id]/print/page/app-paths-manifest.json +3 -0
  475. package/.next/server/app/exams/[id]/print/page/build-manifest.json +20 -0
  476. package/.next/server/app/exams/[id]/print/page/next-font-manifest.json +11 -0
  477. package/.next/server/app/exams/[id]/print/page/react-loadable-manifest.json +1 -0
  478. package/.next/server/app/exams/[id]/print/page/server-reference-manifest.json +4 -0
  479. package/.next/server/app/exams/[id]/print/page.js +14 -0
  480. package/.next/server/app/exams/[id]/print/page.js.map +5 -0
  481. package/.next/server/app/exams/[id]/print/page.js.nft.json +1 -0
  482. package/.next/server/app/exams/[id]/print/page_client-reference-manifest.js +3 -0
  483. package/.next/server/app/exams/page/app-paths-manifest.json +3 -0
  484. package/.next/server/app/exams/page/build-manifest.json +20 -0
  485. package/.next/server/app/exams/page/next-font-manifest.json +11 -0
  486. package/.next/server/app/exams/page/react-loadable-manifest.json +1 -0
  487. package/.next/server/app/exams/page/server-reference-manifest.json +4 -0
  488. package/.next/server/app/exams/page.js +14 -0
  489. package/.next/server/app/exams/page.js.map +5 -0
  490. package/.next/server/app/exams/page.js.nft.json +1 -0
  491. package/.next/server/app/exams/page_client-reference-manifest.js +3 -0
  492. package/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
  493. package/.next/server/app/favicon.ico/route/build-manifest.json +12 -0
  494. package/.next/server/app/favicon.ico/route.js +8 -0
  495. package/.next/server/app/favicon.ico/route.js.map +5 -0
  496. package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
  497. package/.next/server/app/favicon.ico.body +0 -0
  498. package/.next/server/app/favicon.ico.meta +1 -0
  499. package/.next/server/app/latex-test/page/app-paths-manifest.json +3 -0
  500. package/.next/server/app/latex-test/page/build-manifest.json +20 -0
  501. package/.next/server/app/latex-test/page/next-font-manifest.json +11 -0
  502. package/.next/server/app/latex-test/page/react-loadable-manifest.json +1 -0
  503. package/.next/server/app/latex-test/page/server-reference-manifest.json +4 -0
  504. package/.next/server/app/latex-test/page.js +14 -0
  505. package/.next/server/app/latex-test/page.js.map +5 -0
  506. package/.next/server/app/latex-test/page.js.nft.json +1 -0
  507. package/.next/server/app/latex-test/page_client-reference-manifest.js +3 -0
  508. package/.next/server/app/login/page/app-paths-manifest.json +3 -0
  509. package/.next/server/app/login/page/build-manifest.json +20 -0
  510. package/.next/server/app/login/page/next-font-manifest.json +11 -0
  511. package/.next/server/app/login/page/react-loadable-manifest.json +1 -0
  512. package/.next/server/app/login/page/server-reference-manifest.json +4 -0
  513. package/.next/server/app/login/page.js +14 -0
  514. package/.next/server/app/login/page.js.map +5 -0
  515. package/.next/server/app/login/page.js.nft.json +1 -0
  516. package/.next/server/app/login/page_client-reference-manifest.js +3 -0
  517. package/.next/server/app/manifest.webmanifest/route/app-paths-manifest.json +3 -0
  518. package/.next/server/app/manifest.webmanifest/route/build-manifest.json +12 -0
  519. package/.next/server/app/manifest.webmanifest/route/server-reference-manifest.json +4 -0
  520. package/.next/server/app/manifest.webmanifest/route.js +8 -0
  521. package/.next/server/app/manifest.webmanifest/route.js.map +5 -0
  522. package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -0
  523. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +3 -0
  524. package/.next/server/app/manifest.webmanifest.body +1 -0
  525. package/.next/server/app/manifest.webmanifest.meta +1 -0
  526. package/.next/server/app/notebooks/[id]/add/page/app-paths-manifest.json +3 -0
  527. package/.next/server/app/notebooks/[id]/add/page/build-manifest.json +20 -0
  528. package/.next/server/app/notebooks/[id]/add/page/next-font-manifest.json +11 -0
  529. package/.next/server/app/notebooks/[id]/add/page/react-loadable-manifest.json +1 -0
  530. package/.next/server/app/notebooks/[id]/add/page/server-reference-manifest.json +4 -0
  531. package/.next/server/app/notebooks/[id]/add/page.js +14 -0
  532. package/.next/server/app/notebooks/[id]/add/page.js.map +5 -0
  533. package/.next/server/app/notebooks/[id]/add/page.js.nft.json +1 -0
  534. package/.next/server/app/notebooks/[id]/add/page_client-reference-manifest.js +3 -0
  535. package/.next/server/app/notebooks/[id]/page/app-paths-manifest.json +3 -0
  536. package/.next/server/app/notebooks/[id]/page/build-manifest.json +20 -0
  537. package/.next/server/app/notebooks/[id]/page/next-font-manifest.json +11 -0
  538. package/.next/server/app/notebooks/[id]/page/react-loadable-manifest.json +1 -0
  539. package/.next/server/app/notebooks/[id]/page/server-reference-manifest.json +4 -0
  540. package/.next/server/app/notebooks/[id]/page.js +14 -0
  541. package/.next/server/app/notebooks/[id]/page.js.map +5 -0
  542. package/.next/server/app/notebooks/[id]/page.js.nft.json +1 -0
  543. package/.next/server/app/notebooks/[id]/page_client-reference-manifest.js +3 -0
  544. package/.next/server/app/notebooks/page/app-paths-manifest.json +3 -0
  545. package/.next/server/app/notebooks/page/build-manifest.json +20 -0
  546. package/.next/server/app/notebooks/page/next-font-manifest.json +11 -0
  547. package/.next/server/app/notebooks/page/react-loadable-manifest.json +1 -0
  548. package/.next/server/app/notebooks/page/server-reference-manifest.json +4 -0
  549. package/.next/server/app/notebooks/page.js +14 -0
  550. package/.next/server/app/notebooks/page.js.map +5 -0
  551. package/.next/server/app/notebooks/page.js.nft.json +1 -0
  552. package/.next/server/app/notebooks/page_client-reference-manifest.js +3 -0
  553. package/.next/server/app/page/app-paths-manifest.json +3 -0
  554. package/.next/server/app/page/build-manifest.json +20 -0
  555. package/.next/server/app/page/next-font-manifest.json +11 -0
  556. package/.next/server/app/page/react-loadable-manifest.json +1 -0
  557. package/.next/server/app/page/server-reference-manifest.json +4 -0
  558. package/.next/server/app/page.js +14 -0
  559. package/.next/server/app/page.js.map +5 -0
  560. package/.next/server/app/page.js.nft.json +1 -0
  561. package/.next/server/app/page_client-reference-manifest.js +3 -0
  562. package/.next/server/app/practice/page/app-paths-manifest.json +3 -0
  563. package/.next/server/app/practice/page/build-manifest.json +20 -0
  564. package/.next/server/app/practice/page/next-font-manifest.json +11 -0
  565. package/.next/server/app/practice/page/react-loadable-manifest.json +1 -0
  566. package/.next/server/app/practice/page/server-reference-manifest.json +4 -0
  567. package/.next/server/app/practice/page.js +14 -0
  568. package/.next/server/app/practice/page.js.map +5 -0
  569. package/.next/server/app/practice/page.js.nft.json +1 -0
  570. package/.next/server/app/practice/page_client-reference-manifest.js +3 -0
  571. package/.next/server/app/print-preview/page/app-paths-manifest.json +3 -0
  572. package/.next/server/app/print-preview/page/build-manifest.json +20 -0
  573. package/.next/server/app/print-preview/page/next-font-manifest.json +11 -0
  574. package/.next/server/app/print-preview/page/react-loadable-manifest.json +1 -0
  575. package/.next/server/app/print-preview/page/server-reference-manifest.json +4 -0
  576. package/.next/server/app/print-preview/page.js +14 -0
  577. package/.next/server/app/print-preview/page.js.map +5 -0
  578. package/.next/server/app/print-preview/page.js.nft.json +1 -0
  579. package/.next/server/app/print-preview/page_client-reference-manifest.js +3 -0
  580. package/.next/server/app/register/page/app-paths-manifest.json +3 -0
  581. package/.next/server/app/register/page/build-manifest.json +20 -0
  582. package/.next/server/app/register/page/next-font-manifest.json +11 -0
  583. package/.next/server/app/register/page/react-loadable-manifest.json +1 -0
  584. package/.next/server/app/register/page/server-reference-manifest.json +4 -0
  585. package/.next/server/app/register/page.js +14 -0
  586. package/.next/server/app/register/page.js.map +5 -0
  587. package/.next/server/app/register/page.js.nft.json +1 -0
  588. package/.next/server/app/register/page_client-reference-manifest.js +3 -0
  589. package/.next/server/app/stats/page/app-paths-manifest.json +3 -0
  590. package/.next/server/app/stats/page/build-manifest.json +20 -0
  591. package/.next/server/app/stats/page/next-font-manifest.json +11 -0
  592. package/.next/server/app/stats/page/react-loadable-manifest.json +1 -0
  593. package/.next/server/app/stats/page/server-reference-manifest.json +4 -0
  594. package/.next/server/app/stats/page.js +14 -0
  595. package/.next/server/app/stats/page.js.map +5 -0
  596. package/.next/server/app/stats/page.js.nft.json +1 -0
  597. package/.next/server/app/stats/page_client-reference-manifest.js +3 -0
  598. package/.next/server/app/tags/page/app-paths-manifest.json +3 -0
  599. package/.next/server/app/tags/page/build-manifest.json +20 -0
  600. package/.next/server/app/tags/page/next-font-manifest.json +11 -0
  601. package/.next/server/app/tags/page/react-loadable-manifest.json +1 -0
  602. package/.next/server/app/tags/page/server-reference-manifest.json +4 -0
  603. package/.next/server/app/tags/page.js +14 -0
  604. package/.next/server/app/tags/page.js.map +5 -0
  605. package/.next/server/app/tags/page.js.nft.json +1 -0
  606. package/.next/server/app/tags/page_client-reference-manifest.js +3 -0
  607. package/.next/server/app-paths-manifest.json +81 -0
  608. package/.next/server/chunks/1jng_app_api_exams_[id]_questions_[questionId]_regenerate_route_actions_1ggead3.js +3 -0
  609. package/.next/server/chunks/1oeh_server_app_api_error-items_[id]_practice-records_route_actions_0z2zuf1.js +3 -0
  610. package/.next/server/chunks/1oeh_server_app_api_error-items_[id]_svg-animation_route_actions_17gckf3.js +3 -0
  611. package/.next/server/chunks/[externals]__04n7qbr._.js +3 -0
  612. package/.next/server/chunks/[externals]__0pot68n._.js +3 -0
  613. package/.next/server/chunks/[externals]__1735khz._.js +3 -0
  614. package/.next/server/chunks/[externals]_assert_1pwe1ri._.js +3 -0
  615. package/.next/server/chunks/[root-of-the-server]__0-8hf14._.js +3 -0
  616. package/.next/server/chunks/[root-of-the-server]__00_hq9v._.js +153 -0
  617. package/.next/server/chunks/[root-of-the-server]__00m7v48._.js +3 -0
  618. package/.next/server/chunks/[root-of-the-server]__01bzczj._.js +3 -0
  619. package/.next/server/chunks/[root-of-the-server]__01m28mx._.js +3 -0
  620. package/.next/server/chunks/[root-of-the-server]__04mu6-m._.js +3 -0
  621. package/.next/server/chunks/[root-of-the-server]__04tyyvs._.js +3 -0
  622. package/.next/server/chunks/[root-of-the-server]__05no8nw._.js +3 -0
  623. package/.next/server/chunks/[root-of-the-server]__05s4wut._.js +3 -0
  624. package/.next/server/chunks/[root-of-the-server]__06h5afw._.js +3 -0
  625. package/.next/server/chunks/[root-of-the-server]__07jl92a._.js +3 -0
  626. package/.next/server/chunks/[root-of-the-server]__07nvz1d._.js +3 -0
  627. package/.next/server/chunks/[root-of-the-server]__08gak8r._.js +3 -0
  628. package/.next/server/chunks/[root-of-the-server]__08zi-xg._.js +3 -0
  629. package/.next/server/chunks/[root-of-the-server]__0994h9l._.js +3 -0
  630. package/.next/server/chunks/[root-of-the-server]__0_t7bbz._.js +3 -0
  631. package/.next/server/chunks/[root-of-the-server]__0akadps._.js +3 -0
  632. package/.next/server/chunks/[root-of-the-server]__0b3nww4._.js +3 -0
  633. package/.next/server/chunks/[root-of-the-server]__0bs5unr._.js +3 -0
  634. package/.next/server/chunks/[root-of-the-server]__0c59gc3._.js +3 -0
  635. package/.next/server/chunks/[root-of-the-server]__0dfbwm3._.js +3 -0
  636. package/.next/server/chunks/[root-of-the-server]__0e22a4y._.js +122 -0
  637. package/.next/server/chunks/[root-of-the-server]__0els3c1._.js +3 -0
  638. package/.next/server/chunks/[root-of-the-server]__0gp88gz._.js +3 -0
  639. package/.next/server/chunks/[root-of-the-server]__0gpohuv._.js +3 -0
  640. package/.next/server/chunks/[root-of-the-server]__0grkic-._.js +3 -0
  641. package/.next/server/chunks/[root-of-the-server]__0hj9oe2._.js +3 -0
  642. package/.next/server/chunks/[root-of-the-server]__0inxsnu._.js +3 -0
  643. package/.next/server/chunks/[root-of-the-server]__0j-gv3-._.js +3 -0
  644. package/.next/server/chunks/[root-of-the-server]__0jaawra._.js +3 -0
  645. package/.next/server/chunks/[root-of-the-server]__0je3zje._.js +3 -0
  646. package/.next/server/chunks/[root-of-the-server]__0m8p-6f._.js +3 -0
  647. package/.next/server/chunks/[root-of-the-server]__0m_f8ct._.js +3 -0
  648. package/.next/server/chunks/[root-of-the-server]__0na-z2m._.js +3 -0
  649. package/.next/server/chunks/[root-of-the-server]__0nqbham._.js +3 -0
  650. package/.next/server/chunks/[root-of-the-server]__0ns_tws._.js +3 -0
  651. package/.next/server/chunks/[root-of-the-server]__0p3hkz7._.js +3 -0
  652. package/.next/server/chunks/[root-of-the-server]__0pli74s._.js +3 -0
  653. package/.next/server/chunks/[root-of-the-server]__0qaih8c._.js +3 -0
  654. package/.next/server/chunks/[root-of-the-server]__0ra48rd._.js +3 -0
  655. package/.next/server/chunks/[root-of-the-server]__0rk_yxy._.js +9 -0
  656. package/.next/server/chunks/[root-of-the-server]__0sh6-yu._.js +3 -0
  657. package/.next/server/chunks/[root-of-the-server]__0ssagl1._.js +3 -0
  658. package/.next/server/chunks/[root-of-the-server]__0u58zap._.js +3 -0
  659. package/.next/server/chunks/[root-of-the-server]__0ws6c0v._.js +3 -0
  660. package/.next/server/chunks/[root-of-the-server]__0yc8r2x._.js +3 -0
  661. package/.next/server/chunks/[root-of-the-server]__0ydrrdj._.js +3 -0
  662. package/.next/server/chunks/[root-of-the-server]__0yds0ae._.js +3 -0
  663. package/.next/server/chunks/[root-of-the-server]__0ynfeq-._.js +3 -0
  664. package/.next/server/chunks/[root-of-the-server]__0z-sjqh._.js +3 -0
  665. package/.next/server/chunks/[root-of-the-server]__0zp1e41._.js +3 -0
  666. package/.next/server/chunks/[root-of-the-server]__108ydjw._.js +3 -0
  667. package/.next/server/chunks/[root-of-the-server]__10yghm_._.js +3 -0
  668. package/.next/server/chunks/[root-of-the-server]__11-sf2-._.js +3 -0
  669. package/.next/server/chunks/[root-of-the-server]__11wobg2._.js +3 -0
  670. package/.next/server/chunks/[root-of-the-server]__122xu-0._.js +32 -0
  671. package/.next/server/chunks/[root-of-the-server]__13_c7nc._.js +3 -0
  672. package/.next/server/chunks/[root-of-the-server]__13ebiit._.js +3 -0
  673. package/.next/server/chunks/[root-of-the-server]__1413v0e._.js +3 -0
  674. package/.next/server/chunks/[root-of-the-server]__14pcopd._.js +3 -0
  675. package/.next/server/chunks/[root-of-the-server]__150ei9u._.js +3 -0
  676. package/.next/server/chunks/[root-of-the-server]__15g7yjy._.js +3 -0
  677. package/.next/server/chunks/[root-of-the-server]__15tkoe6._.js +10 -0
  678. package/.next/server/chunks/[root-of-the-server]__19nm3y_._.js +3 -0
  679. package/.next/server/chunks/[root-of-the-server]__19vj8qy._.js +3 -0
  680. package/.next/server/chunks/[root-of-the-server]__1_gkx5x._.js +3 -0
  681. package/.next/server/chunks/[root-of-the-server]__1a4i9sz._.js +3 -0
  682. package/.next/server/chunks/[root-of-the-server]__1cn6rlb._.js +3 -0
  683. package/.next/server/chunks/[root-of-the-server]__1csfdxc._.js +3 -0
  684. package/.next/server/chunks/[root-of-the-server]__1e3crdc._.js +3 -0
  685. package/.next/server/chunks/[root-of-the-server]__1ezwxao._.js +3 -0
  686. package/.next/server/chunks/[root-of-the-server]__1g-xe1f._.js +3 -0
  687. package/.next/server/chunks/[root-of-the-server]__1g1wi9i._.js +3 -0
  688. package/.next/server/chunks/[root-of-the-server]__1g3usdn._.js +3 -0
  689. package/.next/server/chunks/[root-of-the-server]__1gmc_uw._.js +3 -0
  690. package/.next/server/chunks/[root-of-the-server]__1hmv25w._.js +3 -0
  691. package/.next/server/chunks/[root-of-the-server]__1hpwwxw._.js +3 -0
  692. package/.next/server/chunks/[root-of-the-server]__1hq73__._.js +3 -0
  693. package/.next/server/chunks/[root-of-the-server]__1jtd2ar._.js +6 -0
  694. package/.next/server/chunks/[root-of-the-server]__1kqv61m._.js +3 -0
  695. package/.next/server/chunks/[root-of-the-server]__1m4-ab6._.js +3 -0
  696. package/.next/server/chunks/[root-of-the-server]__1nmtv65._.js +10 -0
  697. package/.next/server/chunks/[root-of-the-server]__1oup682._.js +3 -0
  698. package/.next/server/chunks/[root-of-the-server]__1ouzjax._.js +3 -0
  699. package/.next/server/chunks/[root-of-the-server]__1pcgq22._.js +3 -0
  700. package/.next/server/chunks/[root-of-the-server]__1pplzr1._.js +3 -0
  701. package/.next/server/chunks/[root-of-the-server]__1q5nt5y._.js +3 -0
  702. package/.next/server/chunks/[root-of-the-server]__1qt6_3b._.js +3 -0
  703. package/.next/server/chunks/[root-of-the-server]__1sdtn83._.js +3 -0
  704. package/.next/server/chunks/[root-of-the-server]__1utxo11._.js +3 -0
  705. package/.next/server/chunks/[root-of-the-server]__1v1dgs2._.js +3 -0
  706. package/.next/server/chunks/[root-of-the-server]__1v9b8go._.js +3 -0
  707. package/.next/server/chunks/[root-of-the-server]__1vw740y._.js +32 -0
  708. package/.next/server/chunks/[root-of-the-server]__1vzxn91._.js +3 -0
  709. package/.next/server/chunks/[root-of-the-server]__1wgn76g._.js +3 -0
  710. package/.next/server/chunks/[root-of-the-server]__1wkh9sj._.js +3 -0
  711. package/.next/server/chunks/[root-of-the-server]__1xcmja4._.js +3 -0
  712. package/.next/server/chunks/[root-of-the-server]__1y6fx9-._.js +3 -0
  713. package/.next/server/chunks/[root-of-the-server]__1zos_p4._.js +3 -0
  714. package/.next/server/chunks/[root-of-the-server]__1zp0oig._.js +3 -0
  715. package/.next/server/chunks/[root-of-the-server]__203q6el._.js +3 -0
  716. package/.next/server/chunks/[root-of-the-server]__20bun16._.js +3 -0
  717. package/.next/server/chunks/[turbopack]_runtime.js +939 -0
  718. package/.next/server/chunks/_008zx49._.js +3 -0
  719. package/.next/server/chunks/_011-ll5._.js +3 -0
  720. package/.next/server/chunks/_0431fxn._.js +3 -0
  721. package/.next/server/chunks/_0ae3z2e._.js +3 -0
  722. package/.next/server/chunks/_0c5hvv3._.js +11 -0
  723. package/.next/server/chunks/_0ekrwj-._.js +36 -0
  724. package/.next/server/chunks/_0frix22._.js +11 -0
  725. package/.next/server/chunks/_0gxi3zr._.js +3 -0
  726. package/.next/server/chunks/_0lz3t4l._.js +19 -0
  727. package/.next/server/chunks/_0o1p57f._.js +3 -0
  728. package/.next/server/chunks/_0t6g4yt._.js +3 -0
  729. package/.next/server/chunks/_0uxp3uh._.js +3 -0
  730. package/.next/server/chunks/_0x3ltk0._.js +36 -0
  731. package/.next/server/chunks/_12w5k19._.js +3 -0
  732. package/.next/server/chunks/_13ffmxv._.js +3 -0
  733. package/.next/server/chunks/_14tz_k9._.js +3 -0
  734. package/.next/server/chunks/_16jdov0._.js +3 -0
  735. package/.next/server/chunks/_18amra5._.js +3 -0
  736. package/.next/server/chunks/_19fidvw._.js +3 -0
  737. package/.next/server/chunks/_1_ns7o3._.js +3 -0
  738. package/.next/server/chunks/_1a1aqmi._.js +3 -0
  739. package/.next/server/chunks/_1a1udq0._.js +3 -0
  740. package/.next/server/chunks/_1b0269x._.js +3 -0
  741. package/.next/server/chunks/_1b7qjlv._.js +3 -0
  742. package/.next/server/chunks/_1be-y66._.js +3 -0
  743. package/.next/server/chunks/_1ex6ovo._.js +3 -0
  744. package/.next/server/chunks/_1fgb9ve._.js +3 -0
  745. package/.next/server/chunks/_1m-yyz-._.js +3 -0
  746. package/.next/server/chunks/_1oj6gy_._.js +3 -0
  747. package/.next/server/chunks/_1oqpwh8._.js +3 -0
  748. package/.next/server/chunks/_1q5w9fc._.js +3 -0
  749. package/.next/server/chunks/_1ve0z0w._.js +3 -0
  750. package/.next/server/chunks/_1z_ujac._.js +3 -0
  751. package/.next/server/chunks/_211va-d._.js +3 -0
  752. package/.next/server/chunks/_next-internal_server_app_api_admin_dashboard_route_actions_1ispso-.js +3 -0
  753. package/.next/server/chunks/_next-internal_server_app_api_admin_migrate-tags_route_actions_1ztwxhx.js +3 -0
  754. package/.next/server/chunks/_next-internal_server_app_api_admin_system-reset_route_actions_15aselt.js +3 -0
  755. package/.next/server/chunks/_next-internal_server_app_api_admin_users_[id]_detail_route_actions_0oe_wkt.js +3 -0
  756. package/.next/server/chunks/_next-internal_server_app_api_admin_users_[id]_route_actions_1hhpuc4.js +3 -0
  757. package/.next/server/chunks/_next-internal_server_app_api_admin_users_route_actions_0q-rtz1.js +3 -0
  758. package/.next/server/chunks/_next-internal_server_app_api_ai_models_route_actions_0w7iwv-.js +3 -0
  759. package/.next/server/chunks/_next-internal_server_app_api_ai_test_route_actions_1p0n1q8.js +3 -0
  760. package/.next/server/chunks/_next-internal_server_app_api_analytics_route_actions_1e0ou17.js +3 -0
  761. package/.next/server/chunks/_next-internal_server_app_api_analyze_route_actions_0lx-23h.js +3 -0
  762. package/.next/server/chunks/_next-internal_server_app_api_auth_[___nextauth]_route_actions_08nexdk.js +3 -0
  763. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_delete_route_actions_1w26boq.js +3 -0
  764. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_figure_route_actions_0adlts0.js +3 -0
  765. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_fix-latex_route_actions_0hc7dhx.js +3 -0
  766. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_geogebra_route_actions_1-ks4uv.js +3 -0
  767. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_image_route_actions_1k9n5yl.js +3 -0
  768. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_mastery_route_actions_1l5uan6.js +3 -0
  769. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_notes_route_actions_1cjux7z.js +3 -0
  770. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_reanswer_route_actions_1-sw0j2.js +3 -0
  771. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_retag_route_actions_0ckki4n.js +3 -0
  772. package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_route_actions_1kbs4ux.js +3 -0
  773. package/.next/server/chunks/_next-internal_server_app_api_error-items_batch-delete_route_actions_0hiq_1k.js +3 -0
  774. package/.next/server/chunks/_next-internal_server_app_api_error-items_clear_route_actions_14t_6i-.js +3 -0
  775. package/.next/server/chunks/_next-internal_server_app_api_error-items_list_route_actions_032x4ue.js +3 -0
  776. package/.next/server/chunks/_next-internal_server_app_api_error-items_route_actions_1zdvz0p.js +3 -0
  777. package/.next/server/chunks/_next-internal_server_app_api_error-items_short_[shortId]_route_actions_02976v-.js +3 -0
  778. package/.next/server/chunks/_next-internal_server_app_api_error-items_similarity_route_actions_1i26if9.js +3 -0
  779. package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_results_route_actions_1v3vhi4.js +3 -0
  780. package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_retry_route_actions_1fdi39f.js +3 -0
  781. package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_route_actions_1wuidrq.js +3 -0
  782. package/.next/server/chunks/_next-internal_server_app_api_exams_route_actions_1c_zhtj.js +3 -0
  783. package/.next/server/chunks/_next-internal_server_app_api_export_route_actions_0lpcnjc.js +3 -0
  784. package/.next/server/chunks/_next-internal_server_app_api_geogebra-analyze_route_actions_1xng0_c.js +3 -0
  785. package/.next/server/chunks/_next-internal_server_app_api_health_route_actions_1ryftkb.js +3 -0
  786. package/.next/server/chunks/_next-internal_server_app_api_import_route_actions_20ko04x.js +3 -0
  787. package/.next/server/chunks/_next-internal_server_app_api_logs_frontend_route_actions_0nxepty.js +3 -0
  788. package/.next/server/chunks/_next-internal_server_app_api_notebooks_[id]_retag_route_actions_00su_t8.js +3 -0
  789. package/.next/server/chunks/_next-internal_server_app_api_notebooks_[id]_route_actions_11j3vxg.js +3 -0
  790. package/.next/server/chunks/_next-internal_server_app_api_notebooks_route_actions_02cy45r.js +3 -0
  791. package/.next/server/chunks/_next-internal_server_app_api_openclaw_batch-upload_route_actions_1zz3oen.js +3 -0
  792. package/.next/server/chunks/_next-internal_server_app_api_practice_generate_route_actions_1krr9n_.js +3 -0
  793. package/.next/server/chunks/_next-internal_server_app_api_practice_record_[id]_route_actions_0zreiom.js +3 -0
  794. package/.next/server/chunks/_next-internal_server_app_api_practice_record_route_actions_0py9z__.js +3 -0
  795. package/.next/server/chunks/_next-internal_server_app_api_reanswer_route_actions_04xweh_.js +3 -0
  796. package/.next/server/chunks/_next-internal_server_app_api_register_route_actions_0vlzh_c.js +3 -0
  797. package/.next/server/chunks/_next-internal_server_app_api_register_status_route_actions_0b52_sj.js +3 -0
  798. package/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +3 -0
  799. package/.next/server/chunks/_next-internal_server_app_api_stats_practice_clear_route_actions_1iz6iz0.js +3 -0
  800. package/.next/server/chunks/_next-internal_server_app_api_stats_practice_route_actions_1tfoxx-.js +3 -0
  801. package/.next/server/chunks/_next-internal_server_app_api_tags_route_actions_1nb9ma2.js +3 -0
  802. package/.next/server/chunks/_next-internal_server_app_api_tags_stats_route_actions_0fmeadc.js +3 -0
  803. package/.next/server/chunks/_next-internal_server_app_api_tags_suggestions_route_actions_1xpolyv.js +3 -0
  804. package/.next/server/chunks/_next-internal_server_app_api_tasks_route_actions_123tq1_.js +3 -0
  805. package/.next/server/chunks/_next-internal_server_app_api_user_route_actions_1k-4clg.js +3 -0
  806. package/.next/server/chunks/_next-internal_server_app_api_version_route_actions_0kbx30h.js +3 -0
  807. package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js +3 -0
  808. package/.next/server/chunks/_next-internal_server_app_manifest_webmanifest_route_actions_08hcpz0.js +3 -0
  809. package/.next/server/chunks/node_modules_next_1zdbrne._.js +10 -0
  810. package/.next/server/chunks/node_modules_zod_v4_classic_external_1-pw2v2.js +22 -0
  811. package/.next/server/chunks/src_0tzpy5j._.js +3 -0
  812. package/.next/server/chunks/src_lib_ai_prompts_ts_0z36zms._.js +554 -0
  813. package/.next/server/chunks/src_lib_date-time_ts_14chb27._.js +3 -0
  814. package/.next/server/chunks/src_lib_question-deduplication_ts_1p1bik-._.js +3 -0
  815. package/.next/server/chunks/ssr/[externals]_fs_0pplqgc._.js +3 -0
  816. package/.next/server/chunks/ssr/[root-of-the-server]__00gewu3._.js +35 -0
  817. package/.next/server/chunks/ssr/[root-of-the-server]__05f8wbh._.js +3 -0
  818. package/.next/server/chunks/ssr/[root-of-the-server]__0a0nty7._.js +3 -0
  819. package/.next/server/chunks/ssr/[root-of-the-server]__0ax9dog._.js +3 -0
  820. package/.next/server/chunks/ssr/[root-of-the-server]__0b8kewv._.js +3 -0
  821. package/.next/server/chunks/ssr/[root-of-the-server]__0bvtza7._.js +33 -0
  822. package/.next/server/chunks/ssr/[root-of-the-server]__0g_-bym._.js +3 -0
  823. package/.next/server/chunks/ssr/[root-of-the-server]__0gwwr7e._.js +3 -0
  824. package/.next/server/chunks/ssr/[root-of-the-server]__0hzktoi._.js +3 -0
  825. package/.next/server/chunks/ssr/[root-of-the-server]__0icjezr._.js +3 -0
  826. package/.next/server/chunks/ssr/[root-of-the-server]__0koj8h0._.js +3 -0
  827. package/.next/server/chunks/ssr/[root-of-the-server]__0s87xha._.js +3 -0
  828. package/.next/server/chunks/ssr/[root-of-the-server]__0snpjfe._.js +3 -0
  829. package/.next/server/chunks/ssr/[root-of-the-server]__0y_e9do._.js +3 -0
  830. package/.next/server/chunks/ssr/[root-of-the-server]__0ybs_4c._.js +3 -0
  831. package/.next/server/chunks/ssr/[root-of-the-server]__14l7peq._.js +3 -0
  832. package/.next/server/chunks/ssr/[root-of-the-server]__1507q8a._.js +3 -0
  833. package/.next/server/chunks/ssr/[root-of-the-server]__15ppb9j._.js +3 -0
  834. package/.next/server/chunks/ssr/[root-of-the-server]__191jn5n._.js +3 -0
  835. package/.next/server/chunks/ssr/[root-of-the-server]__1f2jx51._.js +33 -0
  836. package/.next/server/chunks/ssr/[root-of-the-server]__1gth76-._.js +3 -0
  837. package/.next/server/chunks/ssr/[root-of-the-server]__1ko_dw5._.js +3 -0
  838. package/.next/server/chunks/ssr/[root-of-the-server]__1l84pks._.js +3 -0
  839. package/.next/server/chunks/ssr/[root-of-the-server]__1m7qw-2._.js +3 -0
  840. package/.next/server/chunks/ssr/[root-of-the-server]__1ma2oml._.js +3 -0
  841. package/.next/server/chunks/ssr/[root-of-the-server]__1o8jotz._.js +3 -0
  842. package/.next/server/chunks/ssr/[root-of-the-server]__1o__w27._.js +3 -0
  843. package/.next/server/chunks/ssr/[root-of-the-server]__1p7f0va._.js +3 -0
  844. package/.next/server/chunks/ssr/[root-of-the-server]__1sg9eoj._.js +3 -0
  845. package/.next/server/chunks/ssr/[root-of-the-server]__1u74hyi._.js +3 -0
  846. package/.next/server/chunks/ssr/[root-of-the-server]__1xsovpr._.js +3 -0
  847. package/.next/server/chunks/ssr/[turbopack]_runtime.js +939 -0
  848. package/.next/server/chunks/ssr/_054yhx9._.js +3 -0
  849. package/.next/server/chunks/ssr/_07ls0n_._.js +3 -0
  850. package/.next/server/chunks/ssr/_0i9hwpv._.js +3 -0
  851. package/.next/server/chunks/ssr/_0iqp5hs._.js +3 -0
  852. package/.next/server/chunks/ssr/_0m1-rq-._.js +3 -0
  853. package/.next/server/chunks/ssr/_0mgbe2b._.js +3 -0
  854. package/.next/server/chunks/ssr/_0nv22wt._.js +3 -0
  855. package/.next/server/chunks/ssr/_0rz2_qb._.js +151 -0
  856. package/.next/server/chunks/ssr/_0sbbx9z._.js +7 -0
  857. package/.next/server/chunks/ssr/_0sf1gd9._.js +3 -0
  858. package/.next/server/chunks/ssr/_0uemk57._.js +3 -0
  859. package/.next/server/chunks/ssr/_0zj7dlu._.js +3 -0
  860. package/.next/server/chunks/ssr/_12c20v5._.js +3 -0
  861. package/.next/server/chunks/ssr/_17igtpd._.js +3 -0
  862. package/.next/server/chunks/ssr/_1filpif._.js +3 -0
  863. package/.next/server/chunks/ssr/_1gu1rou._.js +3 -0
  864. package/.next/server/chunks/ssr/_1jniqsj._.js +3 -0
  865. package/.next/server/chunks/ssr/_1kgnhmo._.js +8 -0
  866. package/.next/server/chunks/ssr/_1lt1lhz._.js +8 -0
  867. package/.next/server/chunks/ssr/_1yeu09q._.js +3 -0
  868. package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +3 -0
  869. package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +3 -0
  870. package/.next/server/chunks/ssr/_next-internal_server_app_admin_page_actions_1mcickz.js +3 -0
  871. package/.next/server/chunks/ssr/_next-internal_server_app_admin_user_[id]_page_actions_0baj8gs.js +3 -0
  872. package/.next/server/chunks/ssr/_next-internal_server_app_error-items_[id]_page_actions_0qla9ak.js +3 -0
  873. package/.next/server/chunks/ssr/_next-internal_server_app_exams_[id]_page_actions_1kushg5.js +3 -0
  874. package/.next/server/chunks/ssr/_next-internal_server_app_exams_[id]_print_page_actions_0pxdgxq.js +3 -0
  875. package/.next/server/chunks/ssr/_next-internal_server_app_exams_page_actions_0av69f-.js +3 -0
  876. package/.next/server/chunks/ssr/_next-internal_server_app_latex-test_page_actions_19v7ka0.js +3 -0
  877. package/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js +3 -0
  878. package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_[id]_add_page_actions_0275ft2.js +3 -0
  879. package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_[id]_page_actions_1qj0i-7.js +3 -0
  880. package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_page_actions_06x1kdz.js +3 -0
  881. package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js +3 -0
  882. package/.next/server/chunks/ssr/_next-internal_server_app_practice_page_actions_0cy-h5n.js +3 -0
  883. package/.next/server/chunks/ssr/_next-internal_server_app_print-preview_page_actions_1jhaaln.js +3 -0
  884. package/.next/server/chunks/ssr/_next-internal_server_app_register_page_actions_1op-s-x.js +3 -0
  885. package/.next/server/chunks/ssr/_next-internal_server_app_stats_page_actions_1olf1_a.js +3 -0
  886. package/.next/server/chunks/ssr/_next-internal_server_app_tags_page_actions_20v_n--.js +3 -0
  887. package/.next/server/chunks/ssr/node_modules_0o2aki7._.js +3 -0
  888. package/.next/server/chunks/ssr/node_modules_1y5ym6h._.js +3 -0
  889. package/.next/server/chunks/ssr/node_modules_next_1lnqo1a._.js +5 -0
  890. package/.next/server/chunks/ssr/node_modules_next_dist_077yo5w._.js +3 -0
  891. package/.next/server/chunks/ssr/node_modules_next_dist_0nkkbfv._.js +6 -0
  892. package/.next/server/chunks/ssr/node_modules_next_dist_1_c-t1n._.js +14 -0
  893. package/.next/server/chunks/ssr/node_modules_next_dist_1v8aef8._.js +3 -0
  894. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js +33 -0
  895. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
  896. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +3 -0
  897. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js +3 -0
  898. package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +3 -0
  899. package/.next/server/chunks/ssr/src_1biegcg._.js +3 -0
  900. package/.next/server/chunks/ssr/src_1gayunq._.js +3 -0
  901. package/.next/server/chunks/ssr/src_1o363ao._.js +3 -0
  902. package/.next/server/chunks/ssr/src_app_admin_page_tsx_0ublbd0._.js +3 -0
  903. package/.next/server/chunks/ssr/src_app_error-items_[id]_page_tsx_04xwwdm._.js +3 -0
  904. package/.next/server/chunks/ssr/src_app_notebooks_[id]_page_tsx_08njm-5._.js +3 -0
  905. package/.next/server/chunks/ssr/src_app_notebooks_page_tsx_1p9src5._.js +3 -0
  906. package/.next/server/chunks/ssr/src_app_page_tsx_1chiuah._.js +3 -0
  907. package/.next/server/chunks/ssr/src_app_practice_page_tsx_10gnx53._.js +3 -0
  908. package/.next/server/chunks/ssr/src_app_tags_page_tsx_1h2vkk4._.js +3 -0
  909. package/.next/server/chunks/ssr/src_components_providers_tsx_09kw-mv._.js +193 -0
  910. package/.next/server/chunks/ssr/src_lib_date-time_ts_0oyqctn._.js +3 -0
  911. package/.next/server/edge/chunks/[root-of-the-server]__1osrt2u._.js +3 -0
  912. package/.next/server/edge/chunks/_1s0wgnu._.js +3 -0
  913. package/.next/server/edge/chunks/node_modules_0g4gi6f._.js +13 -0
  914. package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1iafar9.js +3 -0
  915. package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1x1n1fx.js +3 -0
  916. package/.next/server/functions-config-manifest.json +6 -0
  917. package/.next/server/instrumentation.js +4 -0
  918. package/.next/server/middleware-build-manifest.js +24 -0
  919. package/.next/server/middleware-manifest.json +36 -0
  920. package/.next/server/next-font-manifest.js +1 -0
  921. package/.next/server/next-font-manifest.json +79 -0
  922. package/.next/server/pages/500.html +1 -0
  923. package/.next/server/pages-manifest.json +3 -0
  924. package/.next/server/prefetch-hints.json +11 -0
  925. package/.next/server/server-reference-manifest.js +1 -0
  926. package/.next/server/server-reference-manifest.json +5 -0
  927. package/.next/static/OpwRvHtdhPgxve2rKkWkK/_buildManifest.js +11 -0
  928. package/.next/static/OpwRvHtdhPgxve2rKkWkK/_clientMiddlewareManifest.js +6 -0
  929. package/.next/static/OpwRvHtdhPgxve2rKkWkK/_ssgManifest.js +1 -0
  930. package/.next/static/chunks/00pn0o7lymln6.js +1 -0
  931. package/.next/static/chunks/02521degnqmf0.js +1 -0
  932. package/.next/static/chunks/05q4yafxnvtzs.js +1 -0
  933. package/.next/static/chunks/0_w084ms_lq25.js +22 -0
  934. package/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
  935. package/.next/static/chunks/0dzfsm6h13fyr.js +1 -0
  936. package/.next/static/chunks/0ehjiuuxbbhq9.js +1 -0
  937. package/.next/static/chunks/0iq53qkw5hvrs.js +1 -0
  938. package/.next/static/chunks/0lxsaj3bivcgo.css +1 -0
  939. package/.next/static/chunks/0m81l71kojx8j.js +1 -0
  940. package/.next/static/chunks/0nckb2-62ooyq.js +1 -0
  941. package/.next/static/chunks/0snej-v5yglxr.js +1 -0
  942. package/.next/static/chunks/1-7k9gbbjkcml.js +1 -0
  943. package/.next/static/chunks/1ad3ir88_e_v6.css +3 -0
  944. package/.next/static/chunks/1cd32rtomdngh.js +1 -0
  945. package/.next/static/chunks/1io3-cth_2-cd.js +1 -0
  946. package/.next/static/chunks/1oiuiyv1cv06v.js +31 -0
  947. package/.next/static/chunks/1t4-pobw0y5cf.js +1 -0
  948. package/.next/static/chunks/1xg811762s1p1.js +1 -0
  949. package/.next/static/chunks/1z_5sj1wqi06v.js +1 -0
  950. package/.next/static/chunks/29erttsjondpe.js +1 -0
  951. package/.next/static/chunks/2dlme2fdlkms6.js +1 -0
  952. package/.next/static/chunks/2h-exsnhkfnb8.js +1 -0
  953. package/.next/static/chunks/2pmzqbg-qabof.js +1 -0
  954. package/.next/static/chunks/2rmhba08h4qqo.js +33 -0
  955. package/.next/static/chunks/2s07soqug65hc.js +1 -0
  956. package/.next/static/chunks/2w2uo9jjxt-re.js +1 -0
  957. package/.next/static/chunks/2yl8a-gxngbuq.js +1 -0
  958. package/.next/static/chunks/31rxdwy0u_t29.js +1 -0
  959. package/.next/static/chunks/32bl-oqw9oso0.js +1 -0
  960. package/.next/static/chunks/35cov9g4cgt-v.js +1 -0
  961. package/.next/static/chunks/37g3bsrs22xg7.js +191 -0
  962. package/.next/static/chunks/3b-g5_r9nto3s.js +6 -0
  963. package/.next/static/chunks/3c4-ozf1dxam2.css +1 -0
  964. package/.next/static/chunks/3g1rm2suowncy.js +3 -0
  965. package/.next/static/chunks/3helovsg02qr4.js +1 -0
  966. package/.next/static/chunks/3jta6jrk-jubq.js +1 -0
  967. package/.next/static/chunks/3yhf6xyypekz6.js +1 -0
  968. package/.next/static/chunks/3z9gc_02gl8n9.js +1 -0
  969. package/.next/static/chunks/427wg73nuzpiz.js +5 -0
  970. package/.next/static/chunks/turbopack-1-0r7_puvz3eq.js +1 -0
  971. package/.next/static/media/GeistMono_Variable-s.p.0iy569vnmknd-.woff2 +0 -0
  972. package/.next/static/media/Geist_Variable-s.p.03oqkqkevsckn.woff2 +0 -0
  973. package/.next/static/media/KaTeX_AMS-Regular.10y3kupq4t663.woff +0 -0
  974. package/.next/static/media/KaTeX_AMS-Regular.25ieegmnh38ts.woff2 +0 -0
  975. package/.next/static/media/KaTeX_AMS-Regular.418dr7cz3fo2x.ttf +0 -0
  976. package/.next/static/media/KaTeX_Caligraphic-Bold.06b-ya9t43ioz.woff2 +0 -0
  977. package/.next/static/media/KaTeX_Caligraphic-Bold.2vmk2hva4ctha.woff +0 -0
  978. package/.next/static/media/KaTeX_Caligraphic-Bold.40ltxhe834pns.ttf +0 -0
  979. package/.next/static/media/KaTeX_Caligraphic-Regular.07-7u27-nhn_r.ttf +0 -0
  980. package/.next/static/media/KaTeX_Caligraphic-Regular.2eph4dlhid_m9.woff2 +0 -0
  981. package/.next/static/media/KaTeX_Caligraphic-Regular.3gxeetazf831f.woff +0 -0
  982. package/.next/static/media/KaTeX_Fraktur-Bold.19yqa_tc9d_gx.ttf +0 -0
  983. package/.next/static/media/KaTeX_Fraktur-Bold.1alcy76__wdj2.woff +0 -0
  984. package/.next/static/media/KaTeX_Fraktur-Bold.2sasz-d-jtw8y.woff2 +0 -0
  985. package/.next/static/media/KaTeX_Fraktur-Regular.110oo81prr9n5.woff +0 -0
  986. package/.next/static/media/KaTeX_Fraktur-Regular.2d10y4xmjvzlf.woff2 +0 -0
  987. package/.next/static/media/KaTeX_Fraktur-Regular.2qhy34r6a05dn.ttf +0 -0
  988. package/.next/static/media/KaTeX_Main-Bold.0us_n0tnxlxu7.ttf +0 -0
  989. package/.next/static/media/KaTeX_Main-Bold.0v1esh257kqpe.woff +0 -0
  990. package/.next/static/media/KaTeX_Main-Bold.3-rowy8o6_4ky.woff2 +0 -0
  991. package/.next/static/media/KaTeX_Main-BoldItalic.13355ck5zr48q.woff +0 -0
  992. package/.next/static/media/KaTeX_Main-BoldItalic.14r2naom8mrec.woff2 +0 -0
  993. package/.next/static/media/KaTeX_Main-BoldItalic.3x_u9cepaced0.ttf +0 -0
  994. package/.next/static/media/KaTeX_Main-Italic.0afv392dj4w59.woff +0 -0
  995. package/.next/static/media/KaTeX_Main-Italic.0lig0v9j0700p.woff2 +0 -0
  996. package/.next/static/media/KaTeX_Main-Italic.2hkw3230mfwcv.ttf +0 -0
  997. package/.next/static/media/KaTeX_Main-Regular.0symfa7dqj6jd.ttf +0 -0
  998. package/.next/static/media/KaTeX_Main-Regular.15u8r3b2y7fv4.woff +0 -0
  999. package/.next/static/media/KaTeX_Main-Regular.1ryvsdzh2w1_e.woff2 +0 -0
  1000. package/.next/static/media/KaTeX_Math-BoldItalic.0y5w36a5aq__2.ttf +0 -0
  1001. package/.next/static/media/KaTeX_Math-BoldItalic.12pl58orkw9rg.woff +0 -0
  1002. package/.next/static/media/KaTeX_Math-BoldItalic.1oopuu636h4il.woff2 +0 -0
  1003. package/.next/static/media/KaTeX_Math-Italic.0w0b1ugh62cfr.woff +0 -0
  1004. package/.next/static/media/KaTeX_Math-Italic.2vkekfblmz5nb.ttf +0 -0
  1005. package/.next/static/media/KaTeX_Math-Italic.32405s1aq8vas.woff2 +0 -0
  1006. package/.next/static/media/KaTeX_SansSerif-Bold.0h3wi2z_eouyg.woff2 +0 -0
  1007. package/.next/static/media/KaTeX_SansSerif-Bold.1ovw5p-yjp56g.woff +0 -0
  1008. package/.next/static/media/KaTeX_SansSerif-Bold.2d03q85pwxpti.ttf +0 -0
  1009. package/.next/static/media/KaTeX_SansSerif-Italic.0wkjc4dm2kcit.woff2 +0 -0
  1010. package/.next/static/media/KaTeX_SansSerif-Italic.1qavw__2zz8gk.woff +0 -0
  1011. package/.next/static/media/KaTeX_SansSerif-Italic.3i-q087b23-m8.ttf +0 -0
  1012. package/.next/static/media/KaTeX_SansSerif-Regular.1i4afx8nk8n4r.woff +0 -0
  1013. package/.next/static/media/KaTeX_SansSerif-Regular.2peiewu59z3d-.woff2 +0 -0
  1014. package/.next/static/media/KaTeX_SansSerif-Regular.31pbu25feko_c.ttf +0 -0
  1015. package/.next/static/media/KaTeX_Script-Regular.11h14300o9pd0.woff2 +0 -0
  1016. package/.next/static/media/KaTeX_Script-Regular.28p_x7iz71ofe.ttf +0 -0
  1017. package/.next/static/media/KaTeX_Script-Regular.3110jb9c-bxna.woff +0 -0
  1018. package/.next/static/media/KaTeX_Size1-Regular.03lhvx36ekcou.woff2 +0 -0
  1019. package/.next/static/media/KaTeX_Size1-Regular.1slf4bh0hc6vm.woff +0 -0
  1020. package/.next/static/media/KaTeX_Size1-Regular.1y57-ck23ey8c.ttf +0 -0
  1021. package/.next/static/media/KaTeX_Size2-Regular.0-kwyvx03omo8.woff +0 -0
  1022. package/.next/static/media/KaTeX_Size2-Regular.14s5gg-puz6h-.woff2 +0 -0
  1023. package/.next/static/media/KaTeX_Size2-Regular.2u0s-b07k2o9m.ttf +0 -0
  1024. package/.next/static/media/KaTeX_Size3-Regular.04o9a_02gu_e8.woff +0 -0
  1025. package/.next/static/media/KaTeX_Size3-Regular.1n1rgzz84z8r9.woff2 +0 -0
  1026. package/.next/static/media/KaTeX_Size3-Regular.1pkn-dge4q0fv.ttf +0 -0
  1027. package/.next/static/media/KaTeX_Size4-Regular.2sgotkdv3dcyv.woff2 +0 -0
  1028. package/.next/static/media/KaTeX_Size4-Regular.2uelkfk2yna5e.ttf +0 -0
  1029. package/.next/static/media/KaTeX_Size4-Regular.3p2r1l7xmebxv.woff +0 -0
  1030. package/.next/static/media/KaTeX_Typewriter-Regular.11gr2d2wuwz77.woff2 +0 -0
  1031. package/.next/static/media/KaTeX_Typewriter-Regular.12f8myjij3617.woff +0 -0
  1032. package/.next/static/media/KaTeX_Typewriter-Regular.3nee9kjfy6nm8.ttf +0 -0
  1033. package/.next/static/media/favicon.2vob68tjqpejf.ico +0 -0
  1034. package/README.md +35 -2
  1035. package/bin/wrong-notebook.js +60 -0
  1036. package/launcher.js +177 -0
  1037. package/package.json +44 -4
  1038. package/prisma/migrations/20251127143435_init/migration.sql +62 -0
  1039. package/prisma/migrations/20251129152530_init/migration.sql +40 -0
  1040. package/prisma/migrations/20251130150624_add_education_info/migration.sql +6 -0
  1041. package/prisma/migrations/20251130161659_init/migration.sql +2 -0
  1042. package/prisma/migrations/20251201050917_add_admin_role/migration.sql +21 -0
  1043. package/prisma/migrations/20251203155126_cascade_delete_subject_error_items/migration.sql +29 -0
  1044. package/prisma/migrations/20251213132347_add_knowledge_tag_model/migration.sql +38 -0
  1045. package/prisma/migrations/20251219014445_fix_tag_constraints/migration.sql +11 -0
  1046. package/prisma/migrations/20260427090000_add_mistake_analysis_fields/migration.sql +4 -0
  1047. package/prisma/migrations/20260608000000_add_geogebra_commands/migration.sql +2 -0
  1048. package/prisma/migrations/20261018120000_add_practice_mastery_exam/migration.sql +103 -0
  1049. package/prisma/migrations/20261018133653_add_duplicate_import_details/migration.sql +4 -0
  1050. package/prisma/migrations/20261018134606_add_question_duplicate_threshold/migration.sql +2 -0
  1051. package/prisma/migrations/20261019090000_add_user_enable_geogebra/migration.sql +2 -0
  1052. package/prisma/migrations/20261019120000_lower_question_duplicate_threshold_default/migration.sql +27 -0
  1053. package/prisma/migrations/20261019150000_add_error_item_difficulty_stars/migration.sql +2 -0
  1054. package/prisma/migrations/20261019170000_add_notebook_stage_subject/migration.sql +17 -0
  1055. package/prisma/migrations/20261019190000_add_question_figure_svg/migration.sql +6 -0
  1056. package/prisma/migrations/20261019210000_add_svg_animation/migration.sql +3 -0
  1057. package/prisma/migrations/20261019230000_exam_question_multiple_results/migration.sql +40 -0
  1058. package/prisma/migrations/migration_lock.toml +3 -0
  1059. package/prisma/schema.prisma +222 -0
  1060. package/prisma/seed.db +0 -0
  1061. package/public/file.svg +1 -0
  1062. package/public/globe.svg +1 -0
  1063. package/public/icons/icon.png +0 -0
  1064. package/public/next.svg +1 -0
  1065. package/public/vercel.svg +1 -0
  1066. package/public/window.svg +1 -0
  1067. package/server.js +38 -0
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * wrong-notebook 命令行入口(npm 全局安装)
4
+ * wrong-notebook [start] [--port 3000] [--host 0.0.0.0] [--data-dir ~/.wrong-notebook]
5
+ * wrong-notebook prepare-client 生成本机 Prisma Client(postinstall 自动执行)
6
+ * wrong-notebook version | help
7
+ */
8
+ const path = require('node:path');
9
+ const { spawnSync } = require('node:child_process');
10
+
11
+ const launcher = require('../launcher.js');
12
+ const pkg = require('../package.json');
13
+
14
+ const HELP = `错题本 wrong-notebook v${pkg.version}
15
+
16
+ 用法:
17
+ wrong-notebook [start] [选项] 启动服务(默认监听 0.0.0.0:3000)
18
+ wrong-notebook version 显示版本
19
+ wrong-notebook help 显示帮助
20
+
21
+ 选项:
22
+ -p, --port <端口> 监听端口,默认 3000(也可用环境变量 PORT)
23
+ -H, --host <地址> 监听地址,默认 0.0.0.0;仅本机访问可设为 127.0.0.1
24
+ -d, --data-dir <目录> 数据目录,默认 ~/.wrong-notebook(也可用环境变量 WRONG_NOTEBOOK_HOME)
25
+
26
+ 数据库、配置文件(config/app-config.json)和会话密钥都保存在数据目录中,升级不会丢失数据。
27
+ 首次启动的默认管理员:admin@localhost / 123456,登录后请立即修改密码。`;
28
+
29
+ const ALIASES = { '-h': 'help', '--help': 'help', '-v': 'version', '--version': 'version' };
30
+ const [first, ...rest] = process.argv.slice(2);
31
+ const command = ALIASES[first] || (!first || first.startsWith('-') ? 'start' : first);
32
+ const args = command === 'start' && first !== 'start' ? process.argv.slice(2) : rest;
33
+
34
+ switch (command) {
35
+ case 'start':
36
+ try {
37
+ launcher.start(launcher.parseArgs(args));
38
+ } catch (error) {
39
+ console.error(`[wrong-notebook] 启动失败:${error.message}`);
40
+ process.exit(1);
41
+ }
42
+ break;
43
+ case 'prepare-client': {
44
+ // 安装时生成 Prisma Client;失败不阻断安装,首次启动时会再尝试
45
+ const cli = require.resolve('prisma/build/index.js', { paths: [path.join(__dirname, '..')] });
46
+ const schema = path.join(__dirname, '..', 'prisma', 'schema.prisma');
47
+ const result = spawnSync(process.execPath, [cli, 'generate', '--schema', schema], { stdio: 'inherit' });
48
+ if (result.status !== 0) console.warn('[wrong-notebook] Prisma Client 生成失败,首次启动时将重试');
49
+ break;
50
+ }
51
+ case 'version':
52
+ console.log(pkg.version);
53
+ break;
54
+ case 'help':
55
+ console.log(HELP);
56
+ break;
57
+ default:
58
+ console.error(`未知命令:${command}\n\n${HELP}`);
59
+ process.exit(1);
60
+ }
package/launcher.js ADDED
@@ -0,0 +1,177 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * wrong-notebook 安装包通用启动器(npm、桌面端、飞牛OS 共用)
4
+ *
5
+ * 与 docker-entrypoint.sh 的行为保持一致:
6
+ * 1. 准备数据目录:数据库、配置文件、NextAuth 密钥都放在数据目录,安装目录可以只读
7
+ * 2. 首次运行时复制打包时预置的数据库(含管理员账号和系统标签)
8
+ * 3. 每次启动执行 prisma migrate deploy,只做增量迁移,保留已有数据
9
+ * 4. 在当前进程内启动 Next.js standalone 服务
10
+ *
11
+ * 用法:node launcher.js [--port 3000] [--host 0.0.0.0] [--data-dir 目录]
12
+ * 也可用环境变量 PORT、HOSTNAME、WRONG_NOTEBOOK_HOME 指定。
13
+ */
14
+ const fs = require('node:fs');
15
+ const os = require('node:os');
16
+ const path = require('node:path');
17
+ const crypto = require('node:crypto');
18
+ const { spawnSync } = require('node:child_process');
19
+
20
+ const APP_DIR = __dirname;
21
+ const DEFAULT_PORT = 3000;
22
+
23
+ function parseArgs(argv) {
24
+ const opts = {};
25
+ for (let i = 0; i < argv.length; i++) {
26
+ const arg = argv[i];
27
+ const [key, inline] = arg.split('=', 2);
28
+ const next = () => (inline !== undefined ? inline : argv[++i]);
29
+ if (key === '--port' || key === '-p') opts.port = next();
30
+ else if (key === '--host' || key === '-H') opts.host = next();
31
+ else if (key === '--data-dir' || key === '-d') opts.dataDir = next();
32
+ }
33
+ return opts;
34
+ }
35
+
36
+ function defaultDataDir() {
37
+ if (process.env.WRONG_NOTEBOOK_HOME) return process.env.WRONG_NOTEBOOK_HOME;
38
+ return path.join(os.homedir(), '.wrong-notebook');
39
+ }
40
+
41
+ function appVersion() {
42
+ try {
43
+ return JSON.parse(fs.readFileSync(path.join(APP_DIR, 'package.json'), 'utf8')).version || 'unknown';
44
+ } catch {
45
+ return 'unknown';
46
+ }
47
+ }
48
+
49
+ /** NextAuth 会话密钥:首次运行随机生成并保存,之后保持不变,避免重启后登录失效 */
50
+ function ensureSecret(dataDir) {
51
+ const file = path.join(dataDir, '.nextauth_secret');
52
+ if (fs.existsSync(file)) {
53
+ const saved = fs.readFileSync(file, 'utf8').trim();
54
+ if (saved) return saved;
55
+ }
56
+ const secret = crypto.randomBytes(32).toString('base64');
57
+ fs.writeFileSync(file, secret, { mode: 0o600 });
58
+ return secret;
59
+ }
60
+
61
+ /** Prisma 的 SQLite 地址统一使用正斜杠,Windows 盘符路径也可用 */
62
+ function sqliteUrl(file) {
63
+ return `file:${file.split(path.sep).join('/')}`;
64
+ }
65
+
66
+ function runPrisma(args, env) {
67
+ const cli = require.resolve('prisma/build/index.js', { paths: [APP_DIR] });
68
+ const result = spawnSync(process.execPath, [cli, ...args], {
69
+ cwd: APP_DIR,
70
+ env,
71
+ stdio: 'inherit',
72
+ windowsHide: true,
73
+ });
74
+ if (result.error) throw result.error;
75
+ return result.status === 0;
76
+ }
77
+
78
+ /** npm 安装时 Prisma Client 由 postinstall 生成;被 --ignore-scripts 跳过时在这里补生成 */
79
+ function ensurePrismaClient(env) {
80
+ let clientDir;
81
+ try {
82
+ clientDir = path.dirname(require.resolve('.prisma/client/index.js', { paths: [APP_DIR] }));
83
+ } catch {
84
+ clientDir = null;
85
+ }
86
+ if (clientDir && fs.existsSync(path.join(clientDir, 'schema.prisma'))) return;
87
+ console.log('[wrong-notebook] 正在生成 Prisma Client...');
88
+ if (!runPrisma(['generate', '--schema', path.join(APP_DIR, 'prisma', 'schema.prisma')], env)) {
89
+ throw new Error('Prisma Client 生成失败,请检查安装目录是否可写');
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Turbopack 把 serverExternalPackages 编译成带哈希的别名(如 @prisma/client-2c3a283f134fdcb6),
95
+ * standalone 用 .next/node_modules 下的符号链接指向真实包。npm 打包会丢弃该目录,
96
+ * 飞牛OS 打包也不接受符号链接,因此安装包不带这些链接,改为在解析失败时去掉哈希后缀再解析。
97
+ */
98
+ function installExternalAliasResolver() {
99
+ const Module = require('node:module');
100
+ if (typeof Module.registerHooks !== 'function') {
101
+ throw new Error(`需要 Node.js 22.15 或更高版本(当前 ${process.version})`);
102
+ }
103
+ const alias = /^((?:@[^/]+\/)?[^/]+)-[0-9a-f]{16}(\/.*)?$/;
104
+ // 同时作用于 require 和 import(bcryptjs 3 为 ESM,由 import() 加载)
105
+ Module.registerHooks({
106
+ resolve(specifier, context, nextResolve) {
107
+ try {
108
+ return nextResolve(specifier, context);
109
+ } catch (error) {
110
+ const match = alias.exec(specifier);
111
+ if (!match) throw error;
112
+ return nextResolve(match[1] + (match[2] || ''), context);
113
+ }
114
+ },
115
+ });
116
+ }
117
+
118
+ function prepare(options = {}) {
119
+ const dataDir = path.resolve(options.dataDir || defaultDataDir());
120
+ const configDir = path.join(dataDir, 'config');
121
+ fs.mkdirSync(configDir, { recursive: true });
122
+
123
+ const dbFile = path.join(dataDir, 'wrong-notebook.db');
124
+ const version = appVersion();
125
+ const env = {
126
+ ...process.env,
127
+ NODE_ENV: 'production',
128
+ NEXT_TELEMETRY_DISABLED: '1',
129
+ DATABASE_URL: sqliteUrl(dbFile),
130
+ CONFIG_DIR: configDir,
131
+ NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET || ensureSecret(dataDir),
132
+ AUTH_TRUST_HOST: process.env.AUTH_TRUST_HOST || 'true',
133
+ PRESERVE_EXISTING_DATA: 'true',
134
+ APP_VERSION: process.env.APP_VERSION || version,
135
+ WRONG_NOTEBOOK_HOME: dataDir,
136
+ };
137
+
138
+ ensurePrismaClient(env);
139
+
140
+ if (!fs.existsSync(dbFile) || fs.statSync(dbFile).size === 0) {
141
+ const seed = path.join(APP_DIR, 'prisma', 'seed.db');
142
+ if (fs.existsSync(seed)) {
143
+ console.log('[wrong-notebook] 初始化数据库(默认管理员 admin@localhost / 123456,登录后请立即修改密码)');
144
+ fs.copyFileSync(seed, dbFile);
145
+ }
146
+ }
147
+
148
+ console.log('[wrong-notebook] 正在执行数据库迁移...');
149
+ if (!runPrisma(['migrate', 'deploy', '--schema', path.join(APP_DIR, 'prisma', 'schema.prisma')], env)) {
150
+ throw new Error('数据库迁移失败,已停止启动');
151
+ }
152
+ return { dataDir, dbFile, env, version };
153
+ }
154
+
155
+ function start(options = {}) {
156
+ const { dataDir, env, version } = prepare(options);
157
+ const port = String(options.port || process.env.PORT || DEFAULT_PORT);
158
+ const host = options.host || process.env.HOSTNAME || '0.0.0.0';
159
+ Object.assign(process.env, env, { PORT: port, HOSTNAME: host });
160
+ console.log(`[wrong-notebook] v${version} 数据目录:${dataDir}`);
161
+ const shownHost = host === '0.0.0.0' || host === '::' ? '127.0.0.1' : host;
162
+ console.log(`[wrong-notebook] 访问地址:http://${shownHost}:${port}`);
163
+ installExternalAliasResolver();
164
+ // standalone 的 server.js 会切换工作目录到自身所在目录并监听 PORT/HOSTNAME
165
+ require(path.join(APP_DIR, 'server.js'));
166
+ }
167
+
168
+ module.exports = { prepare, start, parseArgs, defaultDataDir, sqliteUrl };
169
+
170
+ if (require.main === module) {
171
+ try {
172
+ start(parseArgs(process.argv.slice(2)));
173
+ } catch (error) {
174
+ console.error(`[wrong-notebook] 启动失败:${error.message}`);
175
+ process.exit(1);
176
+ }
177
+ }
package/package.json CHANGED
@@ -1,6 +1,46 @@
1
1
  {
2
2
  "name": "wrong-notebook",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "2026.10.21",
4
+ "description": "错题本:上传题目图片,由 AI 识别、解析并标注知识点,支持练习、统计与打印导出",
5
+ "keywords": [
6
+ "wrong-notebook",
7
+ "mistake-notebook",
8
+ "错题本",
9
+ "ai",
10
+ "education"
11
+ ],
12
+ "homepage": "https://github.com/margrop/wrong-notebook",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/margrop/wrong-notebook.git"
16
+ },
17
+ "bugs": "https://github.com/margrop/wrong-notebook/issues",
18
+ "license": "MIT",
19
+ "bin": {
20
+ "wrong-notebook": "bin/wrong-notebook.js"
21
+ },
22
+ "files": [
23
+ "bin",
24
+ "launcher.js",
25
+ "server.js",
26
+ ".next",
27
+ "public",
28
+ "prisma",
29
+ "README.md"
30
+ ],
31
+ "engines": {
32
+ "node": ">=22.15"
33
+ },
34
+ "scripts": {
35
+ "postinstall": "node bin/wrong-notebook.js prepare-client"
36
+ },
37
+ "dependencies": {
38
+ "@prisma/client": "5.22.0",
39
+ "bcryptjs": "3.0.3",
40
+ "google-auth-library": "10.5.0",
41
+ "next": "16.3.8",
42
+ "react": "19.2.8",
43
+ "react-dom": "19.2.8",
44
+ "prisma": "5.22.0"
45
+ }
46
+ }
@@ -0,0 +1,62 @@
1
+ -- CreateTable
2
+ CREATE TABLE "User" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "email" TEXT NOT NULL,
5
+ "password" TEXT NOT NULL,
6
+ "name" TEXT,
7
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
8
+ "updatedAt" DATETIME NOT NULL
9
+ );
10
+
11
+ -- CreateTable
12
+ CREATE TABLE "Subject" (
13
+ "id" TEXT NOT NULL PRIMARY KEY,
14
+ "name" TEXT NOT NULL,
15
+ "userId" TEXT NOT NULL,
16
+ CONSTRAINT "Subject_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
17
+ );
18
+
19
+ -- CreateTable
20
+ CREATE TABLE "ErrorItem" (
21
+ "id" TEXT NOT NULL PRIMARY KEY,
22
+ "userId" TEXT NOT NULL,
23
+ "subjectId" TEXT,
24
+ "originalImageUrl" TEXT NOT NULL,
25
+ "ocrText" TEXT,
26
+ "questionText" TEXT,
27
+ "answerText" TEXT,
28
+ "analysis" TEXT,
29
+ "knowledgePoints" TEXT,
30
+ "source" TEXT,
31
+ "errorType" TEXT,
32
+ "userNotes" TEXT,
33
+ "masteryLevel" INTEGER NOT NULL DEFAULT 0,
34
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
35
+ "updatedAt" DATETIME NOT NULL,
36
+ CONSTRAINT "ErrorItem_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
37
+ CONSTRAINT "ErrorItem_subjectId_fkey" FOREIGN KEY ("subjectId") REFERENCES "Subject" ("id") ON DELETE SET NULL ON UPDATE CASCADE
38
+ );
39
+
40
+ -- CreateTable
41
+ CREATE TABLE "ReviewSchedule" (
42
+ "id" TEXT NOT NULL PRIMARY KEY,
43
+ "errorItemId" TEXT NOT NULL,
44
+ "scheduledFor" DATETIME NOT NULL,
45
+ "completedAt" DATETIME,
46
+ "isCorrect" BOOLEAN,
47
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
48
+ CONSTRAINT "ReviewSchedule_errorItemId_fkey" FOREIGN KEY ("errorItemId") REFERENCES "ErrorItem" ("id") ON DELETE CASCADE ON UPDATE CASCADE
49
+ );
50
+
51
+ -- CreateTable
52
+ CREATE TABLE "PracticeSession" (
53
+ "id" TEXT NOT NULL PRIMARY KEY,
54
+ "userId" TEXT NOT NULL,
55
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
56
+ );
57
+
58
+ -- CreateIndex
59
+ CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
60
+
61
+ -- CreateIndex
62
+ CREATE UNIQUE INDEX "Subject_name_userId_key" ON "Subject"("name", "userId");
@@ -0,0 +1,40 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the `PracticeSession` table. If the table is not empty, all the data it contains will be lost.
5
+ - Added the required column `updatedAt` to the `Subject` table without a default value. This is not possible if the table is not empty.
6
+
7
+ */
8
+ -- DropTable
9
+ PRAGMA foreign_keys=off;
10
+ DROP TABLE "PracticeSession";
11
+ PRAGMA foreign_keys=on;
12
+
13
+ -- CreateTable
14
+ CREATE TABLE "PracticeRecord" (
15
+ "id" TEXT NOT NULL PRIMARY KEY,
16
+ "userId" TEXT NOT NULL,
17
+ "subject" TEXT,
18
+ "difficulty" TEXT,
19
+ "isCorrect" BOOLEAN,
20
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
21
+ CONSTRAINT "PracticeRecord_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
22
+ );
23
+
24
+ -- RedefineTables
25
+ PRAGMA defer_foreign_keys=ON;
26
+ PRAGMA foreign_keys=OFF;
27
+ CREATE TABLE "new_Subject" (
28
+ "id" TEXT NOT NULL PRIMARY KEY,
29
+ "name" TEXT NOT NULL,
30
+ "userId" TEXT NOT NULL,
31
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
32
+ "updatedAt" DATETIME NOT NULL,
33
+ CONSTRAINT "Subject_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
34
+ );
35
+ INSERT INTO "new_Subject" ("id", "name", "userId") SELECT "id", "name", "userId" FROM "Subject";
36
+ DROP TABLE "Subject";
37
+ ALTER TABLE "new_Subject" RENAME TO "Subject";
38
+ CREATE UNIQUE INDEX "Subject_name_userId_key" ON "Subject"("name", "userId");
39
+ PRAGMA foreign_keys=ON;
40
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,6 @@
1
+ -- AlterTable
2
+ ALTER TABLE "ErrorItem" ADD COLUMN "gradeSemester" TEXT;
3
+
4
+ -- AlterTable
5
+ ALTER TABLE "User" ADD COLUMN "educationStage" TEXT;
6
+ ALTER TABLE "User" ADD COLUMN "enrollmentYear" INTEGER;
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "ErrorItem" ADD COLUMN "paperLevel" TEXT;
@@ -0,0 +1,21 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_User" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "email" TEXT NOT NULL,
7
+ "password" TEXT NOT NULL,
8
+ "name" TEXT,
9
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
10
+ "updatedAt" DATETIME NOT NULL,
11
+ "educationStage" TEXT,
12
+ "enrollmentYear" INTEGER,
13
+ "role" TEXT NOT NULL DEFAULT 'user',
14
+ "isActive" BOOLEAN NOT NULL DEFAULT true
15
+ );
16
+ INSERT INTO "new_User" ("createdAt", "educationStage", "email", "enrollmentYear", "id", "name", "password", "updatedAt") SELECT "createdAt", "educationStage", "email", "enrollmentYear", "id", "name", "password", "updatedAt" FROM "User";
17
+ DROP TABLE "User";
18
+ ALTER TABLE "new_User" RENAME TO "User";
19
+ CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
20
+ PRAGMA foreign_keys=ON;
21
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,29 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_ErrorItem" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "userId" TEXT NOT NULL,
7
+ "subjectId" TEXT,
8
+ "originalImageUrl" TEXT NOT NULL,
9
+ "ocrText" TEXT,
10
+ "questionText" TEXT,
11
+ "answerText" TEXT,
12
+ "analysis" TEXT,
13
+ "knowledgePoints" TEXT,
14
+ "source" TEXT,
15
+ "errorType" TEXT,
16
+ "userNotes" TEXT,
17
+ "masteryLevel" INTEGER NOT NULL DEFAULT 0,
18
+ "gradeSemester" TEXT,
19
+ "paperLevel" TEXT,
20
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
21
+ "updatedAt" DATETIME NOT NULL,
22
+ CONSTRAINT "ErrorItem_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
23
+ CONSTRAINT "ErrorItem_subjectId_fkey" FOREIGN KEY ("subjectId") REFERENCES "Subject" ("id") ON DELETE CASCADE ON UPDATE CASCADE
24
+ );
25
+ INSERT INTO "new_ErrorItem" ("analysis", "answerText", "createdAt", "errorType", "gradeSemester", "id", "knowledgePoints", "masteryLevel", "ocrText", "originalImageUrl", "paperLevel", "questionText", "source", "subjectId", "updatedAt", "userId", "userNotes") SELECT "analysis", "answerText", "createdAt", "errorType", "gradeSemester", "id", "knowledgePoints", "masteryLevel", "ocrText", "originalImageUrl", "paperLevel", "questionText", "source", "subjectId", "updatedAt", "userId", "userNotes" FROM "ErrorItem";
26
+ DROP TABLE "ErrorItem";
27
+ ALTER TABLE "new_ErrorItem" RENAME TO "ErrorItem";
28
+ PRAGMA foreign_keys=ON;
29
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,38 @@
1
+ -- CreateTable
2
+ CREATE TABLE "KnowledgeTag" (
3
+ "id" TEXT NOT NULL PRIMARY KEY,
4
+ "name" TEXT NOT NULL,
5
+ "subject" TEXT NOT NULL,
6
+ "parentId" TEXT,
7
+ "order" INTEGER NOT NULL DEFAULT 0,
8
+ "code" TEXT,
9
+ "isSystem" BOOLEAN NOT NULL DEFAULT false,
10
+ "userId" TEXT,
11
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
12
+ "updatedAt" DATETIME NOT NULL,
13
+ CONSTRAINT "KnowledgeTag_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "KnowledgeTag" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
14
+ CONSTRAINT "KnowledgeTag_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
15
+ );
16
+
17
+ -- CreateTable
18
+ CREATE TABLE "_ErrorItemToKnowledgeTag" (
19
+ "A" TEXT NOT NULL,
20
+ "B" TEXT NOT NULL,
21
+ CONSTRAINT "_ErrorItemToKnowledgeTag_A_fkey" FOREIGN KEY ("A") REFERENCES "ErrorItem" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
22
+ CONSTRAINT "_ErrorItemToKnowledgeTag_B_fkey" FOREIGN KEY ("B") REFERENCES "KnowledgeTag" ("id") ON DELETE CASCADE ON UPDATE CASCADE
23
+ );
24
+
25
+ -- CreateIndex
26
+ CREATE INDEX "KnowledgeTag_parentId_idx" ON "KnowledgeTag"("parentId");
27
+
28
+ -- CreateIndex
29
+ CREATE INDEX "KnowledgeTag_subject_idx" ON "KnowledgeTag"("subject");
30
+
31
+ -- CreateIndex
32
+ CREATE UNIQUE INDEX "KnowledgeTag_subject_name_userId_key" ON "KnowledgeTag"("subject", "name", "userId");
33
+
34
+ -- CreateIndex
35
+ CREATE UNIQUE INDEX "_ErrorItemToKnowledgeTag_AB_unique" ON "_ErrorItemToKnowledgeTag"("A", "B");
36
+
37
+ -- CreateIndex
38
+ CREATE INDEX "_ErrorItemToKnowledgeTag_B_index" ON "_ErrorItemToKnowledgeTag"("B");
@@ -0,0 +1,11 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - A unique constraint covering the columns `[subject,name,userId,parentId]` on the table `KnowledgeTag` will be added. If there are existing duplicate values, this will fail.
5
+
6
+ */
7
+ -- DropIndex
8
+ DROP INDEX "KnowledgeTag_subject_name_userId_key";
9
+
10
+ -- CreateIndex
11
+ CREATE UNIQUE INDEX "KnowledgeTag_subject_name_userId_parentId_key" ON "KnowledgeTag"("subject", "name", "userId", "parentId");
@@ -0,0 +1,4 @@
1
+ -- Add mistake-analysis fields to existing wrong-answer records.
2
+ ALTER TABLE "ErrorItem" ADD COLUMN "wrongAnswerText" TEXT;
3
+ ALTER TABLE "ErrorItem" ADD COLUMN "mistakeAnalysis" TEXT;
4
+ ALTER TABLE "ErrorItem" ADD COLUMN "mistakeStatus" TEXT;
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "ErrorItem" ADD COLUMN "geogebraCommands" TEXT;
@@ -0,0 +1,103 @@
1
+ -- AlterTable
2
+ ALTER TABLE "ErrorItem" ADD COLUMN "masteryEvaluatedAt" DATETIME;
3
+ ALTER TABLE "ErrorItem" ADD COLUMN "masteryProbability" REAL;
4
+ ALTER TABLE "ErrorItem" ADD COLUMN "masteryReason" TEXT;
5
+ ALTER TABLE "ErrorItem" ADD COLUMN "masterySource" TEXT;
6
+ ALTER TABLE "ErrorItem" ADD COLUMN "shortId" TEXT;
7
+
8
+ -- CreateTable
9
+ CREATE TABLE "ExamPaper" (
10
+ "id" TEXT NOT NULL PRIMARY KEY,
11
+ "userId" TEXT NOT NULL,
12
+ "title" TEXT NOT NULL,
13
+ "status" TEXT NOT NULL DEFAULT 'generating',
14
+ "scope" TEXT NOT NULL,
15
+ "difficulty" TEXT NOT NULL,
16
+ "requestedCount" INTEGER NOT NULL,
17
+ "subjectIds" TEXT NOT NULL,
18
+ "tagNames" TEXT,
19
+ "resultsRecordedAt" DATETIME,
20
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
21
+ "updatedAt" DATETIME NOT NULL,
22
+ CONSTRAINT "ExamPaper_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
23
+ );
24
+
25
+ -- CreateTable
26
+ CREATE TABLE "ExamQuestion" (
27
+ "id" TEXT NOT NULL PRIMARY KEY,
28
+ "paperId" TEXT NOT NULL,
29
+ "order" INTEGER NOT NULL,
30
+ "errorItemId" TEXT,
31
+ "sourceShortId" TEXT NOT NULL,
32
+ "status" TEXT NOT NULL DEFAULT 'pending',
33
+ "questionText" TEXT,
34
+ "answerText" TEXT,
35
+ "analysis" TEXT,
36
+ "error" TEXT,
37
+ "practiceRecordId" TEXT,
38
+ CONSTRAINT "ExamQuestion_paperId_fkey" FOREIGN KEY ("paperId") REFERENCES "ExamPaper" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
39
+ CONSTRAINT "ExamQuestion_errorItemId_fkey" FOREIGN KEY ("errorItemId") REFERENCES "ErrorItem" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
40
+ CONSTRAINT "ExamQuestion_practiceRecordId_fkey" FOREIGN KEY ("practiceRecordId") REFERENCES "PracticeRecord" ("id") ON DELETE SET NULL ON UPDATE CASCADE
41
+ );
42
+
43
+ -- RedefineTables
44
+ PRAGMA defer_foreign_keys=ON;
45
+ PRAGMA foreign_keys=OFF;
46
+ CREATE TABLE "new_PracticeRecord" (
47
+ "id" TEXT NOT NULL PRIMARY KEY,
48
+ "userId" TEXT NOT NULL,
49
+ "subject" TEXT,
50
+ "difficulty" TEXT,
51
+ "isCorrect" BOOLEAN,
52
+ "errorItemId" TEXT,
53
+ "result" TEXT,
54
+ "questionText" TEXT,
55
+ "answerText" TEXT,
56
+ "analysis" TEXT,
57
+ "source" TEXT NOT NULL DEFAULT 'practice',
58
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
59
+ CONSTRAINT "PracticeRecord_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
60
+ CONSTRAINT "PracticeRecord_errorItemId_fkey" FOREIGN KEY ("errorItemId") REFERENCES "ErrorItem" ("id") ON DELETE CASCADE ON UPDATE CASCADE
61
+ );
62
+ INSERT INTO "new_PracticeRecord" ("createdAt", "difficulty", "id", "isCorrect", "subject", "userId") SELECT "createdAt", "difficulty", "id", "isCorrect", "subject", "userId" FROM "PracticeRecord";
63
+ DROP TABLE "PracticeRecord";
64
+ ALTER TABLE "new_PracticeRecord" RENAME TO "PracticeRecord";
65
+ CREATE INDEX "PracticeRecord_errorItemId_createdAt_idx" ON "PracticeRecord"("errorItemId", "createdAt");
66
+ CREATE TABLE "new_User" (
67
+ "id" TEXT NOT NULL PRIMARY KEY,
68
+ "email" TEXT NOT NULL,
69
+ "password" TEXT NOT NULL,
70
+ "name" TEXT,
71
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
72
+ "updatedAt" DATETIME NOT NULL,
73
+ "educationStage" TEXT,
74
+ "enrollmentYear" INTEGER,
75
+ "role" TEXT NOT NULL DEFAULT 'user',
76
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
77
+ "confirmBeforeImport" BOOLEAN NOT NULL DEFAULT false
78
+ );
79
+ INSERT INTO "new_User" ("createdAt", "educationStage", "email", "enrollmentYear", "id", "isActive", "name", "password", "role", "updatedAt") SELECT "createdAt", "educationStage", "email", "enrollmentYear", "id", "isActive", "name", "password", "role", "updatedAt" FROM "User";
80
+ DROP TABLE "User";
81
+ ALTER TABLE "new_User" RENAME TO "User";
82
+ CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
83
+ PRAGMA foreign_keys=ON;
84
+ PRAGMA defer_foreign_keys=OFF;
85
+
86
+ -- CreateIndex
87
+ CREATE INDEX "ExamPaper_userId_createdAt_idx" ON "ExamPaper"("userId", "createdAt");
88
+
89
+ -- CreateIndex
90
+ CREATE UNIQUE INDEX "ExamQuestion_practiceRecordId_key" ON "ExamQuestion"("practiceRecordId");
91
+
92
+ -- CreateIndex
93
+ CREATE INDEX "ExamQuestion_paperId_order_idx" ON "ExamQuestion"("paperId", "order");
94
+
95
+ -- 为已有题目补发 6 位 base58 短 ID,并重抽极小概率出现的重复值
96
+ UPDATE "ErrorItem" SET "shortId" = substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) WHERE "shortId" IS NULL;
97
+ UPDATE "ErrorItem" SET "shortId" = substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) WHERE rowid NOT IN (SELECT MIN(rowid) FROM "ErrorItem" GROUP BY "shortId");
98
+ UPDATE "ErrorItem" SET "shortId" = substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) WHERE rowid NOT IN (SELECT MIN(rowid) FROM "ErrorItem" GROUP BY "shortId");
99
+ UPDATE "ErrorItem" SET "shortId" = substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) || substr('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz', (abs(random()) % 58) + 1, 1) WHERE rowid NOT IN (SELECT MIN(rowid) FROM "ErrorItem" GROUP BY "shortId");
100
+
101
+ -- CreateIndex
102
+ CREATE UNIQUE INDEX "ErrorItem_shortId_key" ON "ErrorItem"("shortId");
103
+
@@ -0,0 +1,4 @@
1
+ -- AlterTable
2
+ ALTER TABLE "PracticeRecord" ADD COLUMN "mistakeAnalysis" TEXT;
3
+ ALTER TABLE "PracticeRecord" ADD COLUMN "originalImageUrl" TEXT;
4
+ ALTER TABLE "PracticeRecord" ADD COLUMN "wrongAnswerText" TEXT;
@@ -0,0 +1,2 @@
1
+ -- 直接新增带默认值的列,保留所有账户和关联数据,避免重建用户表。
2
+ ALTER TABLE "User" ADD COLUMN "questionDuplicateThreshold" REAL NOT NULL DEFAULT 99;
@@ -0,0 +1,2 @@
1
+ -- 直接新增带默认值的列(默认关闭 GeoGebra 动态演示),保留所有账户和关联数据,避免重建用户表。
2
+ ALTER TABLE "User" ADD COLUMN "enableGeogebra" BOOLEAN NOT NULL DEFAULT false;