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.
- package/.next/BUILD_ID +1 -0
- package/.next/app-path-routes-manifest.json +81 -0
- package/.next/build-manifest.json +24 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +104 -0
- package/.next/required-server-files.json +358 -0
- package/.next/routes-manifest.json +579 -0
- package/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/.next/server/app/_global-error/page/build-manifest.json +20 -0
- package/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/.next/server/app/_global-error/page.js +9 -0
- package/.next/server/app/_global-error/page.js.map +5 -0
- package/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
- package/.next/server/app/_global-error.html +1 -0
- package/.next/server/app/_global-error.meta +30 -0
- package/.next/server/app/_global-error.rsc +15 -0
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +20 -0
- package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/.next/server/app/_not-found/page/build-manifest.json +20 -0
- package/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
- package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
- package/.next/server/app/_not-found/page.js +13 -0
- package/.next/server/app/_not-found/page.js.map +5 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
- package/.next/server/app/admin/page/app-paths-manifest.json +3 -0
- package/.next/server/app/admin/page/build-manifest.json +20 -0
- package/.next/server/app/admin/page/next-font-manifest.json +11 -0
- package/.next/server/app/admin/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/admin/page/server-reference-manifest.json +4 -0
- package/.next/server/app/admin/page.js +14 -0
- package/.next/server/app/admin/page.js.map +5 -0
- package/.next/server/app/admin/page.js.nft.json +1 -0
- package/.next/server/app/admin/page_client-reference-manifest.js +3 -0
- package/.next/server/app/admin/user/[id]/page/app-paths-manifest.json +3 -0
- package/.next/server/app/admin/user/[id]/page/build-manifest.json +20 -0
- package/.next/server/app/admin/user/[id]/page/next-font-manifest.json +11 -0
- package/.next/server/app/admin/user/[id]/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/admin/user/[id]/page/server-reference-manifest.json +4 -0
- package/.next/server/app/admin/user/[id]/page.js +14 -0
- package/.next/server/app/admin/user/[id]/page.js.map +5 -0
- package/.next/server/app/admin/user/[id]/page.js.nft.json +1 -0
- package/.next/server/app/admin/user/[id]/page_client-reference-manifest.js +3 -0
- package/.next/server/app/api/admin/dashboard/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/admin/dashboard/route/build-manifest.json +12 -0
- package/.next/server/app/api/admin/dashboard/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/admin/dashboard/route.js +10 -0
- package/.next/server/app/api/admin/dashboard/route.js.map +5 -0
- package/.next/server/app/api/admin/dashboard/route.js.nft.json +1 -0
- package/.next/server/app/api/admin/dashboard/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/admin/migrate-tags/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/admin/migrate-tags/route/build-manifest.json +12 -0
- package/.next/server/app/api/admin/migrate-tags/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/admin/migrate-tags/route.js +9 -0
- package/.next/server/app/api/admin/migrate-tags/route.js.map +5 -0
- package/.next/server/app/api/admin/migrate-tags/route.js.nft.json +1 -0
- package/.next/server/app/api/admin/migrate-tags/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/admin/system-reset/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/admin/system-reset/route/build-manifest.json +12 -0
- package/.next/server/app/api/admin/system-reset/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/admin/system-reset/route.js +8 -0
- package/.next/server/app/api/admin/system-reset/route.js.map +5 -0
- package/.next/server/app/api/admin/system-reset/route.js.nft.json +1 -0
- package/.next/server/app/api/admin/system-reset/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/admin/users/[id]/detail/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/admin/users/[id]/detail/route/build-manifest.json +12 -0
- package/.next/server/app/api/admin/users/[id]/detail/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/admin/users/[id]/detail/route.js +9 -0
- package/.next/server/app/api/admin/users/[id]/detail/route.js.map +5 -0
- package/.next/server/app/api/admin/users/[id]/detail/route.js.nft.json +1 -0
- package/.next/server/app/api/admin/users/[id]/detail/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/admin/users/[id]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/admin/users/[id]/route/build-manifest.json +12 -0
- package/.next/server/app/api/admin/users/[id]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/admin/users/[id]/route.js +8 -0
- package/.next/server/app/api/admin/users/[id]/route.js.map +5 -0
- package/.next/server/app/api/admin/users/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/admin/users/[id]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/admin/users/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/admin/users/route/build-manifest.json +12 -0
- package/.next/server/app/api/admin/users/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/admin/users/route.js +8 -0
- package/.next/server/app/api/admin/users/route.js.map +5 -0
- package/.next/server/app/api/admin/users/route.js.nft.json +1 -0
- package/.next/server/app/api/admin/users/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/ai/models/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/ai/models/route/build-manifest.json +12 -0
- package/.next/server/app/api/ai/models/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/ai/models/route.js +14 -0
- package/.next/server/app/api/ai/models/route.js.map +5 -0
- package/.next/server/app/api/ai/models/route.js.nft.json +1 -0
- package/.next/server/app/api/ai/models/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/ai/test/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/ai/test/route/build-manifest.json +12 -0
- package/.next/server/app/api/ai/test/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/ai/test/route.js +15 -0
- package/.next/server/app/api/ai/test/route.js.map +5 -0
- package/.next/server/app/api/ai/test/route.js.nft.json +1 -0
- package/.next/server/app/api/ai/test/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/analytics/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/analytics/route/build-manifest.json +12 -0
- package/.next/server/app/api/analytics/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/analytics/route.js +9 -0
- package/.next/server/app/api/analytics/route.js.map +5 -0
- package/.next/server/app/api/analytics/route.js.nft.json +1 -0
- package/.next/server/app/api/analytics/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/analyze/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/analyze/route/build-manifest.json +12 -0
- package/.next/server/app/api/analyze/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/analyze/route.js +16 -0
- package/.next/server/app/api/analyze/route.js.map +5 -0
- package/.next/server/app/api/analyze/route.js.nft.json +1 -0
- package/.next/server/app/api/analyze/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/auth/[...nextauth]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/auth/[...nextauth]/route/build-manifest.json +12 -0
- package/.next/server/app/api/auth/[...nextauth]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/auth/[...nextauth]/route.js +7 -0
- package/.next/server/app/api/auth/[...nextauth]/route.js.map +5 -0
- package/.next/server/app/api/auth/[...nextauth]/route.js.nft.json +1 -0
- package/.next/server/app/api/auth/[...nextauth]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/delete/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/delete/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/delete/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/delete/route.js +8 -0
- package/.next/server/app/api/error-items/[id]/delete/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/delete/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/delete/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/figure/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/figure/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/figure/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/figure/route.js +15 -0
- package/.next/server/app/api/error-items/[id]/figure/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/figure/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/figure/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/fix-latex/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/fix-latex/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/fix-latex/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/fix-latex/route.js +16 -0
- package/.next/server/app/api/error-items/[id]/fix-latex/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/fix-latex/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/fix-latex/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/geogebra/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/geogebra/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/geogebra/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/geogebra/route.js +15 -0
- package/.next/server/app/api/error-items/[id]/geogebra/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/geogebra/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/geogebra/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/image/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/image/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/image/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/image/route.js +9 -0
- package/.next/server/app/api/error-items/[id]/image/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/image/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/image/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/mastery/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/mastery/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/mastery/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/mastery/route.js +8 -0
- package/.next/server/app/api/error-items/[id]/mastery/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/mastery/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/mastery/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/notes/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/notes/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/notes/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/notes/route.js +8 -0
- package/.next/server/app/api/error-items/[id]/notes/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/notes/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/notes/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/practice-records/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/practice-records/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/practice-records/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/practice-records/route.js +8 -0
- package/.next/server/app/api/error-items/[id]/practice-records/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/practice-records/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/practice-records/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/reanswer/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/reanswer/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/reanswer/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/reanswer/route.js +15 -0
- package/.next/server/app/api/error-items/[id]/reanswer/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/reanswer/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/reanswer/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/retag/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/retag/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/retag/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/retag/route.js +16 -0
- package/.next/server/app/api/error-items/[id]/retag/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/retag/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/retag/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/route.js +9 -0
- package/.next/server/app/api/error-items/[id]/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/[id]/svg-animation/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/[id]/svg-animation/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/[id]/svg-animation/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/[id]/svg-animation/route.js +16 -0
- package/.next/server/app/api/error-items/[id]/svg-animation/route.js.map +5 -0
- package/.next/server/app/api/error-items/[id]/svg-animation/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/[id]/svg-animation/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/batch-delete/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/batch-delete/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/batch-delete/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/batch-delete/route.js +8 -0
- package/.next/server/app/api/error-items/batch-delete/route.js.map +5 -0
- package/.next/server/app/api/error-items/batch-delete/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/batch-delete/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/clear/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/clear/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/clear/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/clear/route.js +8 -0
- package/.next/server/app/api/error-items/clear/route.js.map +5 -0
- package/.next/server/app/api/error-items/clear/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/clear/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/list/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/list/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/list/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/list/route.js +10 -0
- package/.next/server/app/api/error-items/list/route.js.map +5 -0
- package/.next/server/app/api/error-items/list/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/list/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/route.js +17 -0
- package/.next/server/app/api/error-items/route.js.map +5 -0
- package/.next/server/app/api/error-items/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/short/[shortId]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/short/[shortId]/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/short/[shortId]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/short/[shortId]/route.js +8 -0
- package/.next/server/app/api/error-items/short/[shortId]/route.js.map +5 -0
- package/.next/server/app/api/error-items/short/[shortId]/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/short/[shortId]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/error-items/similarity/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/error-items/similarity/route/build-manifest.json +12 -0
- package/.next/server/app/api/error-items/similarity/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/error-items/similarity/route.js +9 -0
- package/.next/server/app/api/error-items/similarity/route.js.map +5 -0
- package/.next/server/app/api/error-items/similarity/route.js.nft.json +1 -0
- package/.next/server/app/api/error-items/similarity/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route/build-manifest.json +12 -0
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js +16 -0
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js.map +5 -0
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js.nft.json +1 -0
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/exams/[id]/results/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/exams/[id]/results/route/build-manifest.json +12 -0
- package/.next/server/app/api/exams/[id]/results/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/exams/[id]/results/route.js +16 -0
- package/.next/server/app/api/exams/[id]/results/route.js.map +5 -0
- package/.next/server/app/api/exams/[id]/results/route.js.nft.json +1 -0
- package/.next/server/app/api/exams/[id]/results/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/exams/[id]/retry/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/exams/[id]/retry/route/build-manifest.json +12 -0
- package/.next/server/app/api/exams/[id]/retry/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/exams/[id]/retry/route.js +16 -0
- package/.next/server/app/api/exams/[id]/retry/route.js.map +5 -0
- package/.next/server/app/api/exams/[id]/retry/route.js.nft.json +1 -0
- package/.next/server/app/api/exams/[id]/retry/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/exams/[id]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/exams/[id]/route/build-manifest.json +12 -0
- package/.next/server/app/api/exams/[id]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/exams/[id]/route.js +16 -0
- package/.next/server/app/api/exams/[id]/route.js.map +5 -0
- package/.next/server/app/api/exams/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/exams/[id]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/exams/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/exams/route/build-manifest.json +12 -0
- package/.next/server/app/api/exams/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/exams/route.js +16 -0
- package/.next/server/app/api/exams/route.js.map +5 -0
- package/.next/server/app/api/exams/route.js.nft.json +1 -0
- package/.next/server/app/api/exams/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/export/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/export/route/build-manifest.json +12 -0
- package/.next/server/app/api/export/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/export/route.js +10 -0
- package/.next/server/app/api/export/route.js.map +5 -0
- package/.next/server/app/api/export/route.js.nft.json +1 -0
- package/.next/server/app/api/export/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/geogebra-analyze/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/geogebra-analyze/route/build-manifest.json +12 -0
- package/.next/server/app/api/geogebra-analyze/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/geogebra-analyze/route.js +15 -0
- package/.next/server/app/api/geogebra-analyze/route.js.map +5 -0
- package/.next/server/app/api/geogebra-analyze/route.js.nft.json +1 -0
- package/.next/server/app/api/geogebra-analyze/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/health/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/health/route/build-manifest.json +12 -0
- package/.next/server/app/api/health/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/health/route.js +7 -0
- package/.next/server/app/api/health/route.js.map +5 -0
- package/.next/server/app/api/health/route.js.nft.json +1 -0
- package/.next/server/app/api/health/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/import/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/import/route/build-manifest.json +12 -0
- package/.next/server/app/api/import/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/import/route.js +17 -0
- package/.next/server/app/api/import/route.js.map +5 -0
- package/.next/server/app/api/import/route.js.nft.json +1 -0
- package/.next/server/app/api/import/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/logs/frontend/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/logs/frontend/route/build-manifest.json +12 -0
- package/.next/server/app/api/logs/frontend/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/logs/frontend/route.js +8 -0
- package/.next/server/app/api/logs/frontend/route.js.map +5 -0
- package/.next/server/app/api/logs/frontend/route.js.nft.json +1 -0
- package/.next/server/app/api/logs/frontend/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/notebooks/[id]/retag/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/notebooks/[id]/retag/route/build-manifest.json +12 -0
- package/.next/server/app/api/notebooks/[id]/retag/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/notebooks/[id]/retag/route.js +16 -0
- package/.next/server/app/api/notebooks/[id]/retag/route.js.map +5 -0
- package/.next/server/app/api/notebooks/[id]/retag/route.js.nft.json +1 -0
- package/.next/server/app/api/notebooks/[id]/retag/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/notebooks/[id]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/notebooks/[id]/route/build-manifest.json +12 -0
- package/.next/server/app/api/notebooks/[id]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/notebooks/[id]/route.js +9 -0
- package/.next/server/app/api/notebooks/[id]/route.js.map +5 -0
- package/.next/server/app/api/notebooks/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/notebooks/[id]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/notebooks/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/notebooks/route/build-manifest.json +12 -0
- package/.next/server/app/api/notebooks/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/notebooks/route.js +10 -0
- package/.next/server/app/api/notebooks/route.js.map +5 -0
- package/.next/server/app/api/notebooks/route.js.nft.json +1 -0
- package/.next/server/app/api/notebooks/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/openclaw/batch-upload/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/openclaw/batch-upload/route/build-manifest.json +12 -0
- package/.next/server/app/api/openclaw/batch-upload/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/openclaw/batch-upload/route.js +15 -0
- package/.next/server/app/api/openclaw/batch-upload/route.js.map +5 -0
- package/.next/server/app/api/openclaw/batch-upload/route.js.nft.json +1 -0
- package/.next/server/app/api/openclaw/batch-upload/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/practice/generate/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/practice/generate/route/build-manifest.json +12 -0
- package/.next/server/app/api/practice/generate/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/practice/generate/route.js +15 -0
- package/.next/server/app/api/practice/generate/route.js.map +5 -0
- package/.next/server/app/api/practice/generate/route.js.nft.json +1 -0
- package/.next/server/app/api/practice/generate/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/practice/record/[id]/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/practice/record/[id]/route/build-manifest.json +12 -0
- package/.next/server/app/api/practice/record/[id]/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/practice/record/[id]/route.js +15 -0
- package/.next/server/app/api/practice/record/[id]/route.js.map +5 -0
- package/.next/server/app/api/practice/record/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/practice/record/[id]/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/practice/record/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/practice/record/route/build-manifest.json +12 -0
- package/.next/server/app/api/practice/record/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/practice/record/route.js +15 -0
- package/.next/server/app/api/practice/record/route.js.map +5 -0
- package/.next/server/app/api/practice/record/route.js.nft.json +1 -0
- package/.next/server/app/api/practice/record/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/reanswer/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/reanswer/route/build-manifest.json +12 -0
- package/.next/server/app/api/reanswer/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/reanswer/route.js +15 -0
- package/.next/server/app/api/reanswer/route.js.map +5 -0
- package/.next/server/app/api/reanswer/route.js.nft.json +1 -0
- package/.next/server/app/api/reanswer/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/register/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/register/route/build-manifest.json +12 -0
- package/.next/server/app/api/register/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/register/route.js +9 -0
- package/.next/server/app/api/register/route.js.map +5 -0
- package/.next/server/app/api/register/route.js.nft.json +1 -0
- package/.next/server/app/api/register/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/register/status/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/register/status/route/build-manifest.json +12 -0
- package/.next/server/app/api/register/status/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/register/status/route.js +8 -0
- package/.next/server/app/api/register/status/route.js.map +5 -0
- package/.next/server/app/api/register/status/route.js.nft.json +1 -0
- package/.next/server/app/api/register/status/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/settings/route/build-manifest.json +12 -0
- package/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/settings/route.js +9 -0
- package/.next/server/app/api/settings/route.js.map +5 -0
- package/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/.next/server/app/api/settings/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/stats/practice/clear/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/stats/practice/clear/route/build-manifest.json +12 -0
- package/.next/server/app/api/stats/practice/clear/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/stats/practice/clear/route.js +8 -0
- package/.next/server/app/api/stats/practice/clear/route.js.map +5 -0
- package/.next/server/app/api/stats/practice/clear/route.js.nft.json +1 -0
- package/.next/server/app/api/stats/practice/clear/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/stats/practice/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/stats/practice/route/build-manifest.json +12 -0
- package/.next/server/app/api/stats/practice/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/stats/practice/route.js +9 -0
- package/.next/server/app/api/stats/practice/route.js.map +5 -0
- package/.next/server/app/api/stats/practice/route.js.nft.json +1 -0
- package/.next/server/app/api/stats/practice/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tags/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tags/route/build-manifest.json +12 -0
- package/.next/server/app/api/tags/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tags/route.js +9 -0
- package/.next/server/app/api/tags/route.js.map +5 -0
- package/.next/server/app/api/tags/route.js.nft.json +1 -0
- package/.next/server/app/api/tags/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tags/stats/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tags/stats/route/build-manifest.json +12 -0
- package/.next/server/app/api/tags/stats/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tags/stats/route.js +8 -0
- package/.next/server/app/api/tags/stats/route.js.map +5 -0
- package/.next/server/app/api/tags/stats/route.js.nft.json +1 -0
- package/.next/server/app/api/tags/stats/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tags/suggestions/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tags/suggestions/route/build-manifest.json +12 -0
- package/.next/server/app/api/tags/suggestions/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tags/suggestions/route.js +8 -0
- package/.next/server/app/api/tags/suggestions/route.js.map +5 -0
- package/.next/server/app/api/tags/suggestions/route.js.nft.json +1 -0
- package/.next/server/app/api/tags/suggestions/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/tasks/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/tasks/route/build-manifest.json +12 -0
- package/.next/server/app/api/tasks/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/tasks/route.js +8 -0
- package/.next/server/app/api/tasks/route.js.map +5 -0
- package/.next/server/app/api/tasks/route.js.nft.json +1 -0
- package/.next/server/app/api/tasks/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/user/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/user/route/build-manifest.json +12 -0
- package/.next/server/app/api/user/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/user/route.js +10 -0
- package/.next/server/app/api/user/route.js.map +5 -0
- package/.next/server/app/api/user/route.js.nft.json +1 -0
- package/.next/server/app/api/user/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/version/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/version/route/build-manifest.json +12 -0
- package/.next/server/app/api/version/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/version/route.js +7 -0
- package/.next/server/app/api/version/route.js.map +5 -0
- package/.next/server/app/api/version/route.js.nft.json +1 -0
- package/.next/server/app/api/version/route_client-reference-manifest.js +3 -0
- package/.next/server/app/error-items/[id]/page/app-paths-manifest.json +3 -0
- package/.next/server/app/error-items/[id]/page/build-manifest.json +20 -0
- package/.next/server/app/error-items/[id]/page/next-font-manifest.json +11 -0
- package/.next/server/app/error-items/[id]/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/error-items/[id]/page/server-reference-manifest.json +4 -0
- package/.next/server/app/error-items/[id]/page.js +14 -0
- package/.next/server/app/error-items/[id]/page.js.map +5 -0
- package/.next/server/app/error-items/[id]/page.js.nft.json +1 -0
- package/.next/server/app/error-items/[id]/page_client-reference-manifest.js +3 -0
- package/.next/server/app/exams/[id]/page/app-paths-manifest.json +3 -0
- package/.next/server/app/exams/[id]/page/build-manifest.json +20 -0
- package/.next/server/app/exams/[id]/page/next-font-manifest.json +11 -0
- package/.next/server/app/exams/[id]/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/exams/[id]/page/server-reference-manifest.json +4 -0
- package/.next/server/app/exams/[id]/page.js +14 -0
- package/.next/server/app/exams/[id]/page.js.map +5 -0
- package/.next/server/app/exams/[id]/page.js.nft.json +1 -0
- package/.next/server/app/exams/[id]/page_client-reference-manifest.js +3 -0
- package/.next/server/app/exams/[id]/print/page/app-paths-manifest.json +3 -0
- package/.next/server/app/exams/[id]/print/page/build-manifest.json +20 -0
- package/.next/server/app/exams/[id]/print/page/next-font-manifest.json +11 -0
- package/.next/server/app/exams/[id]/print/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/exams/[id]/print/page/server-reference-manifest.json +4 -0
- package/.next/server/app/exams/[id]/print/page.js +14 -0
- package/.next/server/app/exams/[id]/print/page.js.map +5 -0
- package/.next/server/app/exams/[id]/print/page.js.nft.json +1 -0
- package/.next/server/app/exams/[id]/print/page_client-reference-manifest.js +3 -0
- package/.next/server/app/exams/page/app-paths-manifest.json +3 -0
- package/.next/server/app/exams/page/build-manifest.json +20 -0
- package/.next/server/app/exams/page/next-font-manifest.json +11 -0
- package/.next/server/app/exams/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/exams/page/server-reference-manifest.json +4 -0
- package/.next/server/app/exams/page.js +14 -0
- package/.next/server/app/exams/page.js.map +5 -0
- package/.next/server/app/exams/page.js.nft.json +1 -0
- package/.next/server/app/exams/page_client-reference-manifest.js +3 -0
- package/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
- package/.next/server/app/favicon.ico/route/build-manifest.json +12 -0
- package/.next/server/app/favicon.ico/route.js +8 -0
- package/.next/server/app/favicon.ico/route.js.map +5 -0
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
- package/.next/server/app/favicon.ico.body +0 -0
- package/.next/server/app/favicon.ico.meta +1 -0
- package/.next/server/app/latex-test/page/app-paths-manifest.json +3 -0
- package/.next/server/app/latex-test/page/build-manifest.json +20 -0
- package/.next/server/app/latex-test/page/next-font-manifest.json +11 -0
- package/.next/server/app/latex-test/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/latex-test/page/server-reference-manifest.json +4 -0
- package/.next/server/app/latex-test/page.js +14 -0
- package/.next/server/app/latex-test/page.js.map +5 -0
- package/.next/server/app/latex-test/page.js.nft.json +1 -0
- package/.next/server/app/latex-test/page_client-reference-manifest.js +3 -0
- package/.next/server/app/login/page/app-paths-manifest.json +3 -0
- package/.next/server/app/login/page/build-manifest.json +20 -0
- package/.next/server/app/login/page/next-font-manifest.json +11 -0
- package/.next/server/app/login/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/login/page/server-reference-manifest.json +4 -0
- package/.next/server/app/login/page.js +14 -0
- package/.next/server/app/login/page.js.map +5 -0
- package/.next/server/app/login/page.js.nft.json +1 -0
- package/.next/server/app/login/page_client-reference-manifest.js +3 -0
- package/.next/server/app/manifest.webmanifest/route/app-paths-manifest.json +3 -0
- package/.next/server/app/manifest.webmanifest/route/build-manifest.json +12 -0
- package/.next/server/app/manifest.webmanifest/route/server-reference-manifest.json +4 -0
- package/.next/server/app/manifest.webmanifest/route.js +8 -0
- package/.next/server/app/manifest.webmanifest/route.js.map +5 -0
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -0
- package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +3 -0
- package/.next/server/app/manifest.webmanifest.body +1 -0
- package/.next/server/app/manifest.webmanifest.meta +1 -0
- package/.next/server/app/notebooks/[id]/add/page/app-paths-manifest.json +3 -0
- package/.next/server/app/notebooks/[id]/add/page/build-manifest.json +20 -0
- package/.next/server/app/notebooks/[id]/add/page/next-font-manifest.json +11 -0
- package/.next/server/app/notebooks/[id]/add/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/notebooks/[id]/add/page/server-reference-manifest.json +4 -0
- package/.next/server/app/notebooks/[id]/add/page.js +14 -0
- package/.next/server/app/notebooks/[id]/add/page.js.map +5 -0
- package/.next/server/app/notebooks/[id]/add/page.js.nft.json +1 -0
- package/.next/server/app/notebooks/[id]/add/page_client-reference-manifest.js +3 -0
- package/.next/server/app/notebooks/[id]/page/app-paths-manifest.json +3 -0
- package/.next/server/app/notebooks/[id]/page/build-manifest.json +20 -0
- package/.next/server/app/notebooks/[id]/page/next-font-manifest.json +11 -0
- package/.next/server/app/notebooks/[id]/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/notebooks/[id]/page/server-reference-manifest.json +4 -0
- package/.next/server/app/notebooks/[id]/page.js +14 -0
- package/.next/server/app/notebooks/[id]/page.js.map +5 -0
- package/.next/server/app/notebooks/[id]/page.js.nft.json +1 -0
- package/.next/server/app/notebooks/[id]/page_client-reference-manifest.js +3 -0
- package/.next/server/app/notebooks/page/app-paths-manifest.json +3 -0
- package/.next/server/app/notebooks/page/build-manifest.json +20 -0
- package/.next/server/app/notebooks/page/next-font-manifest.json +11 -0
- package/.next/server/app/notebooks/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/notebooks/page/server-reference-manifest.json +4 -0
- package/.next/server/app/notebooks/page.js +14 -0
- package/.next/server/app/notebooks/page.js.map +5 -0
- package/.next/server/app/notebooks/page.js.nft.json +1 -0
- package/.next/server/app/notebooks/page_client-reference-manifest.js +3 -0
- package/.next/server/app/page/app-paths-manifest.json +3 -0
- package/.next/server/app/page/build-manifest.json +20 -0
- package/.next/server/app/page/next-font-manifest.json +11 -0
- package/.next/server/app/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/page/server-reference-manifest.json +4 -0
- package/.next/server/app/page.js +14 -0
- package/.next/server/app/page.js.map +5 -0
- package/.next/server/app/page.js.nft.json +1 -0
- package/.next/server/app/page_client-reference-manifest.js +3 -0
- package/.next/server/app/practice/page/app-paths-manifest.json +3 -0
- package/.next/server/app/practice/page/build-manifest.json +20 -0
- package/.next/server/app/practice/page/next-font-manifest.json +11 -0
- package/.next/server/app/practice/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/practice/page/server-reference-manifest.json +4 -0
- package/.next/server/app/practice/page.js +14 -0
- package/.next/server/app/practice/page.js.map +5 -0
- package/.next/server/app/practice/page.js.nft.json +1 -0
- package/.next/server/app/practice/page_client-reference-manifest.js +3 -0
- package/.next/server/app/print-preview/page/app-paths-manifest.json +3 -0
- package/.next/server/app/print-preview/page/build-manifest.json +20 -0
- package/.next/server/app/print-preview/page/next-font-manifest.json +11 -0
- package/.next/server/app/print-preview/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/print-preview/page/server-reference-manifest.json +4 -0
- package/.next/server/app/print-preview/page.js +14 -0
- package/.next/server/app/print-preview/page.js.map +5 -0
- package/.next/server/app/print-preview/page.js.nft.json +1 -0
- package/.next/server/app/print-preview/page_client-reference-manifest.js +3 -0
- package/.next/server/app/register/page/app-paths-manifest.json +3 -0
- package/.next/server/app/register/page/build-manifest.json +20 -0
- package/.next/server/app/register/page/next-font-manifest.json +11 -0
- package/.next/server/app/register/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/register/page/server-reference-manifest.json +4 -0
- package/.next/server/app/register/page.js +14 -0
- package/.next/server/app/register/page.js.map +5 -0
- package/.next/server/app/register/page.js.nft.json +1 -0
- package/.next/server/app/register/page_client-reference-manifest.js +3 -0
- package/.next/server/app/stats/page/app-paths-manifest.json +3 -0
- package/.next/server/app/stats/page/build-manifest.json +20 -0
- package/.next/server/app/stats/page/next-font-manifest.json +11 -0
- package/.next/server/app/stats/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/stats/page/server-reference-manifest.json +4 -0
- package/.next/server/app/stats/page.js +14 -0
- package/.next/server/app/stats/page.js.map +5 -0
- package/.next/server/app/stats/page.js.nft.json +1 -0
- package/.next/server/app/stats/page_client-reference-manifest.js +3 -0
- package/.next/server/app/tags/page/app-paths-manifest.json +3 -0
- package/.next/server/app/tags/page/build-manifest.json +20 -0
- package/.next/server/app/tags/page/next-font-manifest.json +11 -0
- package/.next/server/app/tags/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/tags/page/server-reference-manifest.json +4 -0
- package/.next/server/app/tags/page.js +14 -0
- package/.next/server/app/tags/page.js.map +5 -0
- package/.next/server/app/tags/page.js.nft.json +1 -0
- package/.next/server/app/tags/page_client-reference-manifest.js +3 -0
- package/.next/server/app-paths-manifest.json +81 -0
- package/.next/server/chunks/1jng_app_api_exams_[id]_questions_[questionId]_regenerate_route_actions_1ggead3.js +3 -0
- package/.next/server/chunks/1oeh_server_app_api_error-items_[id]_practice-records_route_actions_0z2zuf1.js +3 -0
- package/.next/server/chunks/1oeh_server_app_api_error-items_[id]_svg-animation_route_actions_17gckf3.js +3 -0
- package/.next/server/chunks/[externals]__04n7qbr._.js +3 -0
- package/.next/server/chunks/[externals]__0pot68n._.js +3 -0
- package/.next/server/chunks/[externals]__1735khz._.js +3 -0
- package/.next/server/chunks/[externals]_assert_1pwe1ri._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0-8hf14._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__00_hq9v._.js +153 -0
- package/.next/server/chunks/[root-of-the-server]__00m7v48._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__01bzczj._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__01m28mx._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__04mu6-m._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__04tyyvs._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__05no8nw._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__05s4wut._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__06h5afw._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__07jl92a._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__07nvz1d._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__08gak8r._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__08zi-xg._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0994h9l._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0_t7bbz._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0akadps._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0b3nww4._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0bs5unr._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0c59gc3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0dfbwm3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0e22a4y._.js +122 -0
- package/.next/server/chunks/[root-of-the-server]__0els3c1._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0gp88gz._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0gpohuv._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0grkic-._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0hj9oe2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0inxsnu._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0j-gv3-._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0jaawra._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0je3zje._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0m8p-6f._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0m_f8ct._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0na-z2m._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0nqbham._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ns_tws._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0p3hkz7._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0pli74s._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0qaih8c._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ra48rd._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0rk_yxy._.js +9 -0
- package/.next/server/chunks/[root-of-the-server]__0sh6-yu._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ssagl1._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0u58zap._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ws6c0v._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0yc8r2x._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ydrrdj._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0yds0ae._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0ynfeq-._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0z-sjqh._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0zp1e41._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__108ydjw._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__10yghm_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__11-sf2-._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__11wobg2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__122xu-0._.js +32 -0
- package/.next/server/chunks/[root-of-the-server]__13_c7nc._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__13ebiit._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1413v0e._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__14pcopd._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__150ei9u._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__15g7yjy._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__15tkoe6._.js +10 -0
- package/.next/server/chunks/[root-of-the-server]__19nm3y_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__19vj8qy._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1_gkx5x._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1a4i9sz._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1cn6rlb._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1csfdxc._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1e3crdc._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1ezwxao._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1g-xe1f._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1g1wi9i._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1g3usdn._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1gmc_uw._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1hmv25w._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1hpwwxw._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1hq73__._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1jtd2ar._.js +6 -0
- package/.next/server/chunks/[root-of-the-server]__1kqv61m._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1m4-ab6._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1nmtv65._.js +10 -0
- package/.next/server/chunks/[root-of-the-server]__1oup682._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1ouzjax._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1pcgq22._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1pplzr1._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1q5nt5y._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1qt6_3b._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1sdtn83._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1utxo11._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1v1dgs2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1v9b8go._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1vw740y._.js +32 -0
- package/.next/server/chunks/[root-of-the-server]__1vzxn91._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1wgn76g._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1wkh9sj._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1xcmja4._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1y6fx9-._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1zos_p4._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1zp0oig._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__203q6el._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__20bun16._.js +3 -0
- package/.next/server/chunks/[turbopack]_runtime.js +939 -0
- package/.next/server/chunks/_008zx49._.js +3 -0
- package/.next/server/chunks/_011-ll5._.js +3 -0
- package/.next/server/chunks/_0431fxn._.js +3 -0
- package/.next/server/chunks/_0ae3z2e._.js +3 -0
- package/.next/server/chunks/_0c5hvv3._.js +11 -0
- package/.next/server/chunks/_0ekrwj-._.js +36 -0
- package/.next/server/chunks/_0frix22._.js +11 -0
- package/.next/server/chunks/_0gxi3zr._.js +3 -0
- package/.next/server/chunks/_0lz3t4l._.js +19 -0
- package/.next/server/chunks/_0o1p57f._.js +3 -0
- package/.next/server/chunks/_0t6g4yt._.js +3 -0
- package/.next/server/chunks/_0uxp3uh._.js +3 -0
- package/.next/server/chunks/_0x3ltk0._.js +36 -0
- package/.next/server/chunks/_12w5k19._.js +3 -0
- package/.next/server/chunks/_13ffmxv._.js +3 -0
- package/.next/server/chunks/_14tz_k9._.js +3 -0
- package/.next/server/chunks/_16jdov0._.js +3 -0
- package/.next/server/chunks/_18amra5._.js +3 -0
- package/.next/server/chunks/_19fidvw._.js +3 -0
- package/.next/server/chunks/_1_ns7o3._.js +3 -0
- package/.next/server/chunks/_1a1aqmi._.js +3 -0
- package/.next/server/chunks/_1a1udq0._.js +3 -0
- package/.next/server/chunks/_1b0269x._.js +3 -0
- package/.next/server/chunks/_1b7qjlv._.js +3 -0
- package/.next/server/chunks/_1be-y66._.js +3 -0
- package/.next/server/chunks/_1ex6ovo._.js +3 -0
- package/.next/server/chunks/_1fgb9ve._.js +3 -0
- package/.next/server/chunks/_1m-yyz-._.js +3 -0
- package/.next/server/chunks/_1oj6gy_._.js +3 -0
- package/.next/server/chunks/_1oqpwh8._.js +3 -0
- package/.next/server/chunks/_1q5w9fc._.js +3 -0
- package/.next/server/chunks/_1ve0z0w._.js +3 -0
- package/.next/server/chunks/_1z_ujac._.js +3 -0
- package/.next/server/chunks/_211va-d._.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_admin_dashboard_route_actions_1ispso-.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_admin_migrate-tags_route_actions_1ztwxhx.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_admin_system-reset_route_actions_15aselt.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_admin_users_[id]_detail_route_actions_0oe_wkt.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_admin_users_[id]_route_actions_1hhpuc4.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_admin_users_route_actions_0q-rtz1.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_ai_models_route_actions_0w7iwv-.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_ai_test_route_actions_1p0n1q8.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_analytics_route_actions_1e0ou17.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_analyze_route_actions_0lx-23h.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_auth_[___nextauth]_route_actions_08nexdk.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_delete_route_actions_1w26boq.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_figure_route_actions_0adlts0.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_fix-latex_route_actions_0hc7dhx.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_geogebra_route_actions_1-ks4uv.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_image_route_actions_1k9n5yl.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_mastery_route_actions_1l5uan6.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_notes_route_actions_1cjux7z.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_reanswer_route_actions_1-sw0j2.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_retag_route_actions_0ckki4n.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_route_actions_1kbs4ux.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_batch-delete_route_actions_0hiq_1k.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_clear_route_actions_14t_6i-.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_list_route_actions_032x4ue.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_route_actions_1zdvz0p.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_short_[shortId]_route_actions_02976v-.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_error-items_similarity_route_actions_1i26if9.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_results_route_actions_1v3vhi4.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_retry_route_actions_1fdi39f.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_exams_[id]_route_actions_1wuidrq.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_exams_route_actions_1c_zhtj.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_export_route_actions_0lpcnjc.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_geogebra-analyze_route_actions_1xng0_c.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_health_route_actions_1ryftkb.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_import_route_actions_20ko04x.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_logs_frontend_route_actions_0nxepty.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_notebooks_[id]_retag_route_actions_00su_t8.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_notebooks_[id]_route_actions_11j3vxg.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_notebooks_route_actions_02cy45r.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_openclaw_batch-upload_route_actions_1zz3oen.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_practice_generate_route_actions_1krr9n_.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_practice_record_[id]_route_actions_0zreiom.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_practice_record_route_actions_0py9z__.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_reanswer_route_actions_04xweh_.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_register_route_actions_0vlzh_c.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_register_status_route_actions_0b52_sj.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_stats_practice_clear_route_actions_1iz6iz0.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_stats_practice_route_actions_1tfoxx-.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tags_route_actions_1nb9ma2.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tags_stats_route_actions_0fmeadc.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tags_suggestions_route_actions_1xpolyv.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_tasks_route_actions_123tq1_.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_user_route_actions_1k-4clg.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_version_route_actions_0kbx30h.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_manifest_webmanifest_route_actions_08hcpz0.js +3 -0
- package/.next/server/chunks/node_modules_next_1zdbrne._.js +10 -0
- package/.next/server/chunks/node_modules_zod_v4_classic_external_1-pw2v2.js +22 -0
- package/.next/server/chunks/src_0tzpy5j._.js +3 -0
- package/.next/server/chunks/src_lib_ai_prompts_ts_0z36zms._.js +554 -0
- package/.next/server/chunks/src_lib_date-time_ts_14chb27._.js +3 -0
- package/.next/server/chunks/src_lib_question-deduplication_ts_1p1bik-._.js +3 -0
- package/.next/server/chunks/ssr/[externals]_fs_0pplqgc._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__00gewu3._.js +35 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__05f8wbh._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0a0nty7._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ax9dog._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0b8kewv._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0bvtza7._.js +33 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0g_-bym._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0gwwr7e._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0hzktoi._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0icjezr._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0koj8h0._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0s87xha._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0snpjfe._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0y_e9do._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ybs_4c._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__14l7peq._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1507q8a._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__15ppb9j._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__191jn5n._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1f2jx51._.js +33 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1gth76-._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1ko_dw5._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1l84pks._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1m7qw-2._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1ma2oml._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1o8jotz._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1o__w27._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1p7f0va._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1sg9eoj._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1u74hyi._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1xsovpr._.js +3 -0
- package/.next/server/chunks/ssr/[turbopack]_runtime.js +939 -0
- package/.next/server/chunks/ssr/_054yhx9._.js +3 -0
- package/.next/server/chunks/ssr/_07ls0n_._.js +3 -0
- package/.next/server/chunks/ssr/_0i9hwpv._.js +3 -0
- package/.next/server/chunks/ssr/_0iqp5hs._.js +3 -0
- package/.next/server/chunks/ssr/_0m1-rq-._.js +3 -0
- package/.next/server/chunks/ssr/_0mgbe2b._.js +3 -0
- package/.next/server/chunks/ssr/_0nv22wt._.js +3 -0
- package/.next/server/chunks/ssr/_0rz2_qb._.js +151 -0
- package/.next/server/chunks/ssr/_0sbbx9z._.js +7 -0
- package/.next/server/chunks/ssr/_0sf1gd9._.js +3 -0
- package/.next/server/chunks/ssr/_0uemk57._.js +3 -0
- package/.next/server/chunks/ssr/_0zj7dlu._.js +3 -0
- package/.next/server/chunks/ssr/_12c20v5._.js +3 -0
- package/.next/server/chunks/ssr/_17igtpd._.js +3 -0
- package/.next/server/chunks/ssr/_1filpif._.js +3 -0
- package/.next/server/chunks/ssr/_1gu1rou._.js +3 -0
- package/.next/server/chunks/ssr/_1jniqsj._.js +3 -0
- package/.next/server/chunks/ssr/_1kgnhmo._.js +8 -0
- package/.next/server/chunks/ssr/_1lt1lhz._.js +8 -0
- package/.next/server/chunks/ssr/_1yeu09q._.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_admin_page_actions_1mcickz.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_admin_user_[id]_page_actions_0baj8gs.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_error-items_[id]_page_actions_0qla9ak.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_exams_[id]_page_actions_1kushg5.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_exams_[id]_print_page_actions_0pxdgxq.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_exams_page_actions_0av69f-.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_latex-test_page_actions_19v7ka0.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_[id]_add_page_actions_0275ft2.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_[id]_page_actions_1qj0i-7.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_notebooks_page_actions_06x1kdz.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_practice_page_actions_0cy-h5n.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_print-preview_page_actions_1jhaaln.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_register_page_actions_1op-s-x.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_stats_page_actions_1olf1_a.js +3 -0
- package/.next/server/chunks/ssr/_next-internal_server_app_tags_page_actions_20v_n--.js +3 -0
- package/.next/server/chunks/ssr/node_modules_0o2aki7._.js +3 -0
- package/.next/server/chunks/ssr/node_modules_1y5ym6h._.js +3 -0
- package/.next/server/chunks/ssr/node_modules_next_1lnqo1a._.js +5 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_077yo5w._.js +3 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_0nkkbfv._.js +6 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_1_c-t1n._.js +14 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_1v8aef8._.js +3 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js +33 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +3 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js +3 -0
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +3 -0
- package/.next/server/chunks/ssr/src_1biegcg._.js +3 -0
- package/.next/server/chunks/ssr/src_1gayunq._.js +3 -0
- package/.next/server/chunks/ssr/src_1o363ao._.js +3 -0
- package/.next/server/chunks/ssr/src_app_admin_page_tsx_0ublbd0._.js +3 -0
- package/.next/server/chunks/ssr/src_app_error-items_[id]_page_tsx_04xwwdm._.js +3 -0
- package/.next/server/chunks/ssr/src_app_notebooks_[id]_page_tsx_08njm-5._.js +3 -0
- package/.next/server/chunks/ssr/src_app_notebooks_page_tsx_1p9src5._.js +3 -0
- package/.next/server/chunks/ssr/src_app_page_tsx_1chiuah._.js +3 -0
- package/.next/server/chunks/ssr/src_app_practice_page_tsx_10gnx53._.js +3 -0
- package/.next/server/chunks/ssr/src_app_tags_page_tsx_1h2vkk4._.js +3 -0
- package/.next/server/chunks/ssr/src_components_providers_tsx_09kw-mv._.js +193 -0
- package/.next/server/chunks/ssr/src_lib_date-time_ts_0oyqctn._.js +3 -0
- package/.next/server/edge/chunks/[root-of-the-server]__1osrt2u._.js +3 -0
- package/.next/server/edge/chunks/_1s0wgnu._.js +3 -0
- package/.next/server/edge/chunks/node_modules_0g4gi6f._.js +13 -0
- package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1iafar9.js +3 -0
- package/.next/server/edge/chunks/turbopack-node_modules_next_dist_esm_build_templates_edge-wrapper_1x1n1fx.js +3 -0
- package/.next/server/functions-config-manifest.json +6 -0
- package/.next/server/instrumentation.js +4 -0
- package/.next/server/middleware-build-manifest.js +24 -0
- package/.next/server/middleware-manifest.json +36 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +79 -0
- package/.next/server/pages/500.html +1 -0
- package/.next/server/pages-manifest.json +3 -0
- package/.next/server/prefetch-hints.json +11 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +5 -0
- package/.next/static/OpwRvHtdhPgxve2rKkWkK/_buildManifest.js +11 -0
- package/.next/static/OpwRvHtdhPgxve2rKkWkK/_clientMiddlewareManifest.js +6 -0
- package/.next/static/OpwRvHtdhPgxve2rKkWkK/_ssgManifest.js +1 -0
- package/.next/static/chunks/00pn0o7lymln6.js +1 -0
- package/.next/static/chunks/02521degnqmf0.js +1 -0
- package/.next/static/chunks/05q4yafxnvtzs.js +1 -0
- package/.next/static/chunks/0_w084ms_lq25.js +22 -0
- package/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
- package/.next/static/chunks/0dzfsm6h13fyr.js +1 -0
- package/.next/static/chunks/0ehjiuuxbbhq9.js +1 -0
- package/.next/static/chunks/0iq53qkw5hvrs.js +1 -0
- package/.next/static/chunks/0lxsaj3bivcgo.css +1 -0
- package/.next/static/chunks/0m81l71kojx8j.js +1 -0
- package/.next/static/chunks/0nckb2-62ooyq.js +1 -0
- package/.next/static/chunks/0snej-v5yglxr.js +1 -0
- package/.next/static/chunks/1-7k9gbbjkcml.js +1 -0
- package/.next/static/chunks/1ad3ir88_e_v6.css +3 -0
- package/.next/static/chunks/1cd32rtomdngh.js +1 -0
- package/.next/static/chunks/1io3-cth_2-cd.js +1 -0
- package/.next/static/chunks/1oiuiyv1cv06v.js +31 -0
- package/.next/static/chunks/1t4-pobw0y5cf.js +1 -0
- package/.next/static/chunks/1xg811762s1p1.js +1 -0
- package/.next/static/chunks/1z_5sj1wqi06v.js +1 -0
- package/.next/static/chunks/29erttsjondpe.js +1 -0
- package/.next/static/chunks/2dlme2fdlkms6.js +1 -0
- package/.next/static/chunks/2h-exsnhkfnb8.js +1 -0
- package/.next/static/chunks/2pmzqbg-qabof.js +1 -0
- package/.next/static/chunks/2rmhba08h4qqo.js +33 -0
- package/.next/static/chunks/2s07soqug65hc.js +1 -0
- package/.next/static/chunks/2w2uo9jjxt-re.js +1 -0
- package/.next/static/chunks/2yl8a-gxngbuq.js +1 -0
- package/.next/static/chunks/31rxdwy0u_t29.js +1 -0
- package/.next/static/chunks/32bl-oqw9oso0.js +1 -0
- package/.next/static/chunks/35cov9g4cgt-v.js +1 -0
- package/.next/static/chunks/37g3bsrs22xg7.js +191 -0
- package/.next/static/chunks/3b-g5_r9nto3s.js +6 -0
- package/.next/static/chunks/3c4-ozf1dxam2.css +1 -0
- package/.next/static/chunks/3g1rm2suowncy.js +3 -0
- package/.next/static/chunks/3helovsg02qr4.js +1 -0
- package/.next/static/chunks/3jta6jrk-jubq.js +1 -0
- package/.next/static/chunks/3yhf6xyypekz6.js +1 -0
- package/.next/static/chunks/3z9gc_02gl8n9.js +1 -0
- package/.next/static/chunks/427wg73nuzpiz.js +5 -0
- package/.next/static/chunks/turbopack-1-0r7_puvz3eq.js +1 -0
- package/.next/static/media/GeistMono_Variable-s.p.0iy569vnmknd-.woff2 +0 -0
- package/.next/static/media/Geist_Variable-s.p.03oqkqkevsckn.woff2 +0 -0
- package/.next/static/media/KaTeX_AMS-Regular.10y3kupq4t663.woff +0 -0
- package/.next/static/media/KaTeX_AMS-Regular.25ieegmnh38ts.woff2 +0 -0
- package/.next/static/media/KaTeX_AMS-Regular.418dr7cz3fo2x.ttf +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Bold.06b-ya9t43ioz.woff2 +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Bold.2vmk2hva4ctha.woff +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Bold.40ltxhe834pns.ttf +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Regular.07-7u27-nhn_r.ttf +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Regular.2eph4dlhid_m9.woff2 +0 -0
- package/.next/static/media/KaTeX_Caligraphic-Regular.3gxeetazf831f.woff +0 -0
- package/.next/static/media/KaTeX_Fraktur-Bold.19yqa_tc9d_gx.ttf +0 -0
- package/.next/static/media/KaTeX_Fraktur-Bold.1alcy76__wdj2.woff +0 -0
- package/.next/static/media/KaTeX_Fraktur-Bold.2sasz-d-jtw8y.woff2 +0 -0
- package/.next/static/media/KaTeX_Fraktur-Regular.110oo81prr9n5.woff +0 -0
- package/.next/static/media/KaTeX_Fraktur-Regular.2d10y4xmjvzlf.woff2 +0 -0
- package/.next/static/media/KaTeX_Fraktur-Regular.2qhy34r6a05dn.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Bold.0us_n0tnxlxu7.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Bold.0v1esh257kqpe.woff +0 -0
- package/.next/static/media/KaTeX_Main-Bold.3-rowy8o6_4ky.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-BoldItalic.13355ck5zr48q.woff +0 -0
- package/.next/static/media/KaTeX_Main-BoldItalic.14r2naom8mrec.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-BoldItalic.3x_u9cepaced0.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Italic.0afv392dj4w59.woff +0 -0
- package/.next/static/media/KaTeX_Main-Italic.0lig0v9j0700p.woff2 +0 -0
- package/.next/static/media/KaTeX_Main-Italic.2hkw3230mfwcv.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Regular.0symfa7dqj6jd.ttf +0 -0
- package/.next/static/media/KaTeX_Main-Regular.15u8r3b2y7fv4.woff +0 -0
- package/.next/static/media/KaTeX_Main-Regular.1ryvsdzh2w1_e.woff2 +0 -0
- package/.next/static/media/KaTeX_Math-BoldItalic.0y5w36a5aq__2.ttf +0 -0
- package/.next/static/media/KaTeX_Math-BoldItalic.12pl58orkw9rg.woff +0 -0
- package/.next/static/media/KaTeX_Math-BoldItalic.1oopuu636h4il.woff2 +0 -0
- package/.next/static/media/KaTeX_Math-Italic.0w0b1ugh62cfr.woff +0 -0
- package/.next/static/media/KaTeX_Math-Italic.2vkekfblmz5nb.ttf +0 -0
- package/.next/static/media/KaTeX_Math-Italic.32405s1aq8vas.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Bold.0h3wi2z_eouyg.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Bold.1ovw5p-yjp56g.woff +0 -0
- package/.next/static/media/KaTeX_SansSerif-Bold.2d03q85pwxpti.ttf +0 -0
- package/.next/static/media/KaTeX_SansSerif-Italic.0wkjc4dm2kcit.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Italic.1qavw__2zz8gk.woff +0 -0
- package/.next/static/media/KaTeX_SansSerif-Italic.3i-q087b23-m8.ttf +0 -0
- package/.next/static/media/KaTeX_SansSerif-Regular.1i4afx8nk8n4r.woff +0 -0
- package/.next/static/media/KaTeX_SansSerif-Regular.2peiewu59z3d-.woff2 +0 -0
- package/.next/static/media/KaTeX_SansSerif-Regular.31pbu25feko_c.ttf +0 -0
- package/.next/static/media/KaTeX_Script-Regular.11h14300o9pd0.woff2 +0 -0
- package/.next/static/media/KaTeX_Script-Regular.28p_x7iz71ofe.ttf +0 -0
- package/.next/static/media/KaTeX_Script-Regular.3110jb9c-bxna.woff +0 -0
- package/.next/static/media/KaTeX_Size1-Regular.03lhvx36ekcou.woff2 +0 -0
- package/.next/static/media/KaTeX_Size1-Regular.1slf4bh0hc6vm.woff +0 -0
- package/.next/static/media/KaTeX_Size1-Regular.1y57-ck23ey8c.ttf +0 -0
- package/.next/static/media/KaTeX_Size2-Regular.0-kwyvx03omo8.woff +0 -0
- package/.next/static/media/KaTeX_Size2-Regular.14s5gg-puz6h-.woff2 +0 -0
- package/.next/static/media/KaTeX_Size2-Regular.2u0s-b07k2o9m.ttf +0 -0
- package/.next/static/media/KaTeX_Size3-Regular.04o9a_02gu_e8.woff +0 -0
- package/.next/static/media/KaTeX_Size3-Regular.1n1rgzz84z8r9.woff2 +0 -0
- package/.next/static/media/KaTeX_Size3-Regular.1pkn-dge4q0fv.ttf +0 -0
- package/.next/static/media/KaTeX_Size4-Regular.2sgotkdv3dcyv.woff2 +0 -0
- package/.next/static/media/KaTeX_Size4-Regular.2uelkfk2yna5e.ttf +0 -0
- package/.next/static/media/KaTeX_Size4-Regular.3p2r1l7xmebxv.woff +0 -0
- package/.next/static/media/KaTeX_Typewriter-Regular.11gr2d2wuwz77.woff2 +0 -0
- package/.next/static/media/KaTeX_Typewriter-Regular.12f8myjij3617.woff +0 -0
- package/.next/static/media/KaTeX_Typewriter-Regular.3nee9kjfy6nm8.ttf +0 -0
- package/.next/static/media/favicon.2vob68tjqpejf.ico +0 -0
- package/README.md +35 -2
- package/bin/wrong-notebook.js +60 -0
- package/launcher.js +177 -0
- package/package.json +44 -4
- package/prisma/migrations/20251127143435_init/migration.sql +62 -0
- package/prisma/migrations/20251129152530_init/migration.sql +40 -0
- package/prisma/migrations/20251130150624_add_education_info/migration.sql +6 -0
- package/prisma/migrations/20251130161659_init/migration.sql +2 -0
- package/prisma/migrations/20251201050917_add_admin_role/migration.sql +21 -0
- package/prisma/migrations/20251203155126_cascade_delete_subject_error_items/migration.sql +29 -0
- package/prisma/migrations/20251213132347_add_knowledge_tag_model/migration.sql +38 -0
- package/prisma/migrations/20251219014445_fix_tag_constraints/migration.sql +11 -0
- package/prisma/migrations/20260427090000_add_mistake_analysis_fields/migration.sql +4 -0
- package/prisma/migrations/20260608000000_add_geogebra_commands/migration.sql +2 -0
- package/prisma/migrations/20261018120000_add_practice_mastery_exam/migration.sql +103 -0
- package/prisma/migrations/20261018133653_add_duplicate_import_details/migration.sql +4 -0
- package/prisma/migrations/20261018134606_add_question_duplicate_threshold/migration.sql +2 -0
- package/prisma/migrations/20261019090000_add_user_enable_geogebra/migration.sql +2 -0
- package/prisma/migrations/20261019120000_lower_question_duplicate_threshold_default/migration.sql +27 -0
- package/prisma/migrations/20261019150000_add_error_item_difficulty_stars/migration.sql +2 -0
- package/prisma/migrations/20261019170000_add_notebook_stage_subject/migration.sql +17 -0
- package/prisma/migrations/20261019190000_add_question_figure_svg/migration.sql +6 -0
- package/prisma/migrations/20261019210000_add_svg_animation/migration.sql +3 -0
- package/prisma/migrations/20261019230000_exam_question_multiple_results/migration.sql +40 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +222 -0
- package/prisma/seed.db +0 -0
- package/public/file.svg +1 -0
- package/public/globe.svg +1 -0
- package/public/icons/icon.png +0 -0
- package/public/next.svg +1 -0
- package/public/vercel.svg +1 -0
- package/public/window.svg +1 -0
- package/server.js +38 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[61312,e=>e.a(async(t,a)=>{try{var r=e.i(58821),n=e.i(43911),s=e.i(79832),i=e.i(13618),o=e.i(83508),l=e.i(39811),u=e.i(98043),d=e.i(76759),c=e.i(59398),p=e.i(68426),g=e.i(50377),R=e.i(26828),h=e.i(98003),m=t([s]);[s]=m.then?(await m)():m;let A=(0,g.createLogger)("api:analyze");async function E(e){A.info("Analyze API called");let t=await (0,i.getServerSession)(s.authOptions);if(!t)return A.warn("Unauthorized access attempt"),r.NextResponse.json({message:"Unauthorized"},{status:401});try{let a,{imageBase64:s,mimeType:i,language:g,subjectId:m}=await e.json();if(A.debug({imageLength:s?.length,mimeType:i,language:g,subjectId:m},"Request received"),!s)return A.warn("Missing image data"),(0,d.badRequest)("Missing image data");if(s.startsWith("data:")){let e=s.match(/^data:([^;]+);base64,(.+)$/);e&&(i=e[1],s=e[2],A.debug({mimeType:i,base64Length:s.length},"Parsed Data URL"))}let E=null,v=null,w=null,f=null;if(t?.user?.email)try{let e=await u.prisma.user.findUnique({where:{email:t.user.email},select:{id:!0,educationStage:!0,enrollmentYear:!0}});if(e&&(E=(0,o.calculateGradeNumber)(e.educationStage,e.enrollmentYear,(0,h.getAppTimeZone)()),e.educationStage&&e.enrollmentYear&&(v=(0,l.calculateGrade)(e.educationStage,e.enrollmentYear,new Date,"zh",(0,h.getAppTimeZone)())),A.debug({userGrade:E,userGradeSemester:v},"Calculated user grade")),m&&e){let t=await u.prisma.subject.findUnique({where:{id:m},select:{name:!0,userId:!0,stage:!0,subjectKey:!0}});if(t&&t.userId===e.id){f=t.name;let e=(0,p.resolveNotebookScope)(t);w=e.subject?p.SUBJECT_DISPLAY_NAMES[e.subject]:null,a=await (0,c.getNotebookCandidateTags)(e),A.debug({scope:e,candidateTagCount:a?.tags.length},"Notebook scope resolved")}}}catch(e){A.error({error:e},"Error fetching user/subject info")}A.info({userGrade:E,userGradeSemester:v,subject:w},"Calling AI service for image analysis");let C=(0,n.getAIService)(),y=await (0,R.trackBackgroundTask)({userId:t.user.id,kind:"analyze",subject:f},()=>C.analyzeImage(s,i,g,E,w,v,a));return A.debug({knowledgePointsCount:y.knowledgePoints?.length,knowledgePointsType:typeof y.knowledgePoints,isArray:Array.isArray(y.knowledgePoints)},"AI returned knowledge points"),y.knowledgePoints&&0!==y.knowledgePoints.length||A.warn("Knowledge points is empty or null"),A.info("AI analysis successful"),r.NextResponse.json(y)}catch(t){A.error({error:t.message,stack:t.stack},"Analysis error occurred");let e=t.message||"Failed to analyze image";return t.message&&("AI_CONNECTION_FAILED"===t.message||"AI_RESPONSE_ERROR"===t.message||t.message.includes("AI_AUTH_ERROR")||"AI_TIMEOUT_ERROR"===t.message||"AI_QUOTA_EXCEEDED"===t.message||"AI_PERMISSION_DENIED"===t.message||"AI_NOT_FOUND"===t.message||"AI_SERVICE_UNAVAILABLE"===t.message||"AI_UNKNOWN_ERROR"===t.message||"AI_OUTPUT_TRUNCATED"===t.message)?e=t.message.includes("AI_AUTH_ERROR")?"AI_AUTH_ERROR":t.message:(t.message?.includes("Zod")||t.message?.includes("validate"))&&(e="AI_RESPONSE_ERROR"),(0,d.createErrorResponse)(e,500,d.ErrorCode.AI_ERROR,t.message)}}e.s(["POST",0,E]),a()}catch(e){a(e)}},!1),26794,e=>{"use strict";var t=e.i(47909),a=e.i(74017),r=e.i(96250),n=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),g=e.i(70101),R=e.i(74838),h=e.i(10372),m=e.i(93695),E=e.i(9580);e.i(52474);var A=e.i(220);let v=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/analyze/route",pathname:"/api/analyze",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/analyze/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(61312),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:f,serverHooks:C}=v;async function y(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let w="/api/analyze/route";w=w.replace(/\/index$/,"")||"/";let f=await v.prepare(e,t,{srcPage:w,multiZoneDraftMode:!1});if(!f)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:C,deploymentId:y,params:_,nextConfig:T,parsedUrl:I,isDraftMode:N,prerenderManifest:S,routerServerContext:O,isOnDemandRevalidate:b,revalidateOnlyGenerated:P,resolvedPathname:x,clientReferenceManifest:U,serverActionsManifest:k}=f,D=(0,o.normalizeAppPath)(w),q=!!S.routes[x]&&(v.isDev||(0,E.isRouteCacheOwner)(x,v.cacheOwner,S.routes[x])),H=!!(S.dynamicRoutes[D]||q),M=async()=>((null==O?void 0:O.render404)?await O.render404(e,t,I,!1):t.end("This page could not be found"),null);if(H&&!N){let e=S.dynamicRoutes[D];if(e&&!1===e.fallback&&!q){if(T.adapterPath)return await M();throw new m.NoFallbackError}}let j=null;!H||v.isDev||N||(j="/index"===(j=x)?"/":j);let L=!0===v.isDev||!H,z=H&&!L;k&&U&&(0,i.setManifestsSingleton)({page:w,clientReferenceManifest:U,serverActionsManifest:k});let F=e.method||"GET",K=(0,s.getTracer)(),B=K.getActiveScopeSpan(),$=!!(null==O?void 0:O.isWrappedByNextServer),G=!!(0,n.getRequestMeta)(e,"minimalMode"),V=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,T,S,G);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let Y={params:_,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts,useCacheTimeout:T.experimental.useCacheTimeout},cacheComponents:!!T.cacheComponents,validationLevel:T.experimental.instantInsights.validationLevel,isDraftMode:N,supportsDynamicResponse:L,incrementalCache:V,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:T.cacheLife,staticPageGenerationTimeout:T.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>v.onRequestError(e,t,r,n,O)},sharedContext:{buildId:C,deploymentId:y}},W=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),J=async({previousCacheEntry:a})=>{try{if(!G&&b&&P&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await v.handle(Z,Y);e.fetchMetrics=Y.renderOpts.fetchMetrics;let s=Y.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let i=Y.renderOpts.collectedTags;if(!H)return await (0,p.sendResponse)(W,X,n,s),null;{let e=await n.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(n.headers);i&&(t[h.NEXT_CACHE_TAGS_HEADER]=i),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=h.INFINITE_CACHE?!1!==a&&a>0?T.expireTime:void 0:Y.renderOpts.collectedExpire;return{value:{kind:A.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:w,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:z,isOnDemandRevalidate:b})},!1,O),t}},Q=async(n,i)=>{try{var o,l;let n=await v.handleResponse({req:e,nextConfig:T,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:P,responseGenerator:J,waitUntil:r.waitUntil,isMinimalMode:G});if(!H)return;if((null==n||null==(o=n.value)?void 0:o.kind)!==A.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(l=n.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",b?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),N&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let s=(0,g.fromNodeOutgoingHttpHeaders)(n.value.headers);G&&H||s.delete(h.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||s.get("Cache-Control")||s.set("Cache-Control",(0,R.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(W,X,new Response(n.value.body,{headers:s,status:n.value.status||200}));return}catch(t){if(t instanceof m.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:z,isOnDemandRevalidate:b})},!1,O),H)throw t;await (0,p.sendResponse)(W,X,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:s.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||D,o=`${F} ${r}`;n.setAttributes({"next.route":r,"http.route":r,"next.span_name":o}),n.updateName(o),i&&i!==n&&(i.setAttribute("http.route",r),i.updateName(o))})()}};if($&&B)await Q(B,void 0);else{let t=K.getActiveScopeSpan();await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${w}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Q(e,t)),void 0,!$)}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:f})},"routeModule",0,v,"serverHooks",0,C,"workAsyncStorage",0,w,"workUnitAsyncStorage",0,f])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1a1udq0._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[81510,e=>e.a(async(t,r)=>{try{var a=e.i(58821),n=e.i(98043),i=e.i(79832),o=e.i(13618),s=e.i(76759),u=e.i(50377),l=e.i(26828),d=e.i(43911),c=t([i]);[i]=c.then?(await c)():c;let m=(0,u.createLogger)("api:error-items:geogebra");async function p(e,{params:t}){let{id:r}=await t,u=await (0,o.getServerSession)(i.authOptions);try{let t;if(u?.user?.email&&(t=await n.prisma.user.findUnique({where:{email:u.user.email}})),!t)return(0,s.unauthorized)("Authentication required");let i=await n.prisma.errorItem.findUnique({where:{id:r},include:{subject:!0}});if(!i)return(0,s.notFound)("Item not found");if(i.userId!==t.id)return(0,s.forbidden)("Not authorized to access this item");let o=i.subject?.name||"";if(!(o.includes("数学")||o.toLowerCase().includes("math")||o.includes("物理")||o.toLowerCase().includes("physics")))return a.NextResponse.json({suitable:!1,commands:[],description:"仅数学和物理题目支持 GeoGebra 动态演示"});if(!i.questionText)return a.NextResponse.json({suitable:!1,commands:[],description:"题目文本为空,无法分析"});let c=(0,d.getAIService)(),p=await e.json().catch(()=>({})),h=p.questionText||i.questionText,g=p.answerText||i.answerText||"",R=p.previousErrors||"",f=await (0,l.trackBackgroundTask)({userId:t.id,kind:"geogebra",subject:(0,l.describeQuestion)(i),link:`/error-items/${r}`},()=>c.analyzeForGeogebra(h,g,i.analysis||"",R));return f.suitable&&f.commands.length>0&&await n.prisma.errorItem.update({where:{id:r},data:{geogebraCommands:JSON.stringify(f.commands)}}),m.info({id:r,suitable:f.suitable,commandCount:f.commands.length},"GeoGebra analysis complete"),a.NextResponse.json(f)}catch(t){m.error({error:t},"Error during GeoGebra analysis");let e=t instanceof Error?t.message:String(t);if(e.startsWith("AI_"))return a.NextResponse.json({message:e},{status:502});return(0,s.internalError)("Failed to analyze for GeoGebra")}}async function h(e,{params:t}){let{id:r}=await t,u=await (0,o.getServerSession)(i.authOptions);try{let e=u?.user?.email?await n.prisma.user.findUnique({where:{email:u.user.email}}):null;if(!e)return(0,s.unauthorized)("Authentication required");let t=await n.prisma.errorItem.findUnique({where:{id:r},select:{userId:!0}});if(!t)return(0,s.notFound)("Item not found");if(t.userId!==e.id)return(0,s.forbidden)("Not authorized to access this item");return await n.prisma.errorItem.update({where:{id:r},data:{geogebraCommands:null}}),m.info({id:r},"GeoGebra commands deleted"),a.NextResponse.json({success:!0})}catch(e){return m.error({error:e},"Error deleting GeoGebra commands"),(0,s.internalError)("Failed to delete GeoGebra commands")}}e.s(["DELETE",0,h,"POST",0,p]),r()}catch(e){r(e)}},!1),66639,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),i=e.i(61916),o=e.i(74677),s=e.i(69741),u=e.i(16795),l=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),m=e.i(74838),g=e.i(10372),R=e.i(93695),f=e.i(9580);e.i(52474);var w=e.i(220);let v=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/error-items/[id]/geogebra/route",pathname:"/api/error-items/[id]/geogebra",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/error-items/[id]/geogebra/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(81510),...{}}),{workAsyncStorage:b,workUnitAsyncStorage:E,serverHooks:C}=v;async function x(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let b="/api/error-items/[id]/geogebra/route";b=b.replace(/\/index$/,"")||"/";let E=await v.prepare(e,t,{srcPage:b,multiZoneDraftMode:!1});if(!E)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:C,deploymentId:x,params:y,nextConfig:T,parsedUrl:A,isDraftMode:S,prerenderManifest:N,routerServerContext:I,isOnDemandRevalidate:q,revalidateOnlyGenerated:O,resolvedPathname:P,clientReferenceManifest:_,serverActionsManifest:G}=E,H=(0,s.normalizeAppPath)(b),U=!!N.routes[P]&&(v.isDev||(0,f.isRouteCacheOwner)(P,v.cacheOwner,N.routes[P])),k=!!(N.dynamicRoutes[H]||U),j=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,A,!1):t.end("This page could not be found"),null);if(k&&!S){let e=N.dynamicRoutes[H];if(e&&!1===e.fallback&&!U){if(T.adapterPath)return await j();throw new R.NoFallbackError}}let M=null;!k||v.isDev||S||(M="/index"===(M=P)?"/":M);let D=!0===v.isDev||!k,F=k&&!D;G&&_&&(0,o.setManifestsSingleton)({page:b,clientReferenceManifest:_,serverActionsManifest:G});let L=e.method||"GET",K=(0,i.getTracer)(),$=K.getActiveScopeSpan(),z=!!(null==I?void 0:I.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),V=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,T,N,B);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let W={params:y,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts,useCacheTimeout:T.experimental.useCacheTimeout},cacheComponents:!!T.cacheComponents,validationLevel:T.experimental.instantInsights.validationLevel,isDraftMode:S,supportsDynamicResponse:D,incrementalCache:V,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:T.cacheLife,staticPageGenerationTimeout:T.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>v.onRequestError(e,t,a,n,I)},sharedContext:{buildId:C,deploymentId:x}},X=new u.NodeNextRequest(e),J=new u.NodeNextResponse(t),Q=l.NextRequestAdapter.fromNodeNextRequest(X,(0,l.signalFromNodeResponse)(t)),Z=async({previousCacheEntry:r})=>{try{if(!B&&q&&O&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await v.handle(Q,W);e.fetchMetrics=W.renderOpts.fetchMetrics;let i=W.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let o=W.renderOpts.collectedTags;if(!k)return await (0,p.sendResponse)(X,J,n,i),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);o&&(t[g.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,a=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=g.INFINITE_CACHE?!1!==r&&r>0?T.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:q})},!1,I),t}},Y=async(n,o)=>{try{var s,u;let n=await v.handleResponse({req:e,nextConfig:T,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:O,responseGenerator:Z,waitUntil:a.waitUntil,isMinimalMode:B});if(!k)return;if((null==n||null==(s=n.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(u=n.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",q?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);B&&k||i.delete(g.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,m.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(X,J,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof R.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:q})},!1,I),k)throw t;await (0,p.sendResponse)(X,J,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:i.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||H,s=`${L} ${a}`;n.setAttributes({"next.route":a,"http.route":a,"next.span_name":s}),n.updateName(s),o&&o!==n&&(o.setAttribute("http.route",a),o.updateName(s))})()}};if(z&&$)await Y($,void 0);else{let t=K.getActiveScopeSpan();await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${L} ${b}`,kind:i.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},e=>Y(e,t)),void 0,!z)}}e.s(["handler",0,x,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:E})},"routeModule",0,v,"serverHooks",0,C,"workAsyncStorage",0,b,"workUnitAsyncStorage",0,E])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1b0269x._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[14112,e=>e.a(async(t,a)=>{try{var r=e.i(58821),n=e.i(13618),i=e.i(79832),o=e.i(98043),s=e.i(58078),d=e.i(76759),l=e.i(50377),u=e.i(98003),c=e.i(76025),p=t([i]);[i]=p.then?(await p)():p;let m=(0,l.createLogger)("api:admin:dashboard");async function h(){let e=await (0,n.getServerSession)(i.authOptions);if(!(0,s.requireAdmin)(e))return(0,d.forbidden)("Admin access required");try{let e=await o.prisma.user.count(),t=await o.prisma.errorItem.count(),a=await o.prisma.practiceRecord.count(),n=await o.prisma.subject.count(),i=await o.prisma.user.findMany({orderBy:{createdAt:"desc"},select:{id:!0,name:!0,email:!0,role:!0,isActive:!0,createdAt:!0,educationStage:!0,enrollmentYear:!0,_count:{select:{errorItems:!0,practiceRecords:!0,subjects:!0}}}}),s=await o.prisma.subject.findMany({select:{name:!0,_count:{select:{errorItems:!0}}},orderBy:{errorItems:{_count:"desc"}}}),d=new Date,l=(0,u.getAppTimeZone)(),p=(0,c.getDayRange)(d,l,-6).start,h=await o.prisma.errorItem.groupBy({by:["createdAt"],where:{createdAt:{gte:p}},_count:{id:!0}}),m=[];for(let e=6;e>=0;e--){let t=(0,c.formatDateTime)((0,c.getDayRange)(d,l,-e).start,"yyyy-MM-dd",l);m.push({date:t,count:0})}for(let e of h){let t=(0,c.formatDateTime)(e.createdAt,"yyyy-MM-dd",l),a=m.find(e=>e.date===t);a&&(a.count+=e._count.id)}let R=await o.prisma.errorItem.groupBy({by:["masteryLevel"],_count:{id:!0}}),v={new:R.find(e=>0===e.masteryLevel)?._count.id||0,reviewing:R.find(e=>1===e.masteryLevel)?._count.id||0,mastered:R.find(e=>2===e.masteryLevel)?._count.id||0};return r.NextResponse.json({overview:{totalUsers:e,totalErrorItems:t,totalPracticeRecords:a,totalSubjects:n},userStats:i.map(e=>({id:e.id,name:e.name,email:e.email,role:e.role,isActive:e.isActive,createdAt:e.createdAt,educationStage:e.educationStage,enrollmentYear:e.enrollmentYear,errorCount:e._count.errorItems,practiceCount:e._count.practiceRecords,notebookCount:e._count.subjects})),subjectDistribution:s.map(e=>({name:e.name,count:e._count.errorItems})),dailyTrend:m,masteryDistribution:v})}catch(e){return m.error({error:e},"Error fetching dashboard data"),(0,d.internalError)("Failed to fetch dashboard data")}}e.s(["GET",0,h]),a()}catch(e){a(e)}},!1),80393,e=>{"use strict";var t=e.i(47909),a=e.i(74017),r=e.i(96250),n=e.i(59756),i=e.i(61916),o=e.i(74677),s=e.i(69741),d=e.i(16795),l=e.i(87718),u=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),m=e.i(74838),R=e.i(10372),v=e.i(93695),g=e.i(9580);e.i(52474);var f=e.i(220);let w=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/admin/dashboard/route",pathname:"/api/admin/dashboard",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/admin/dashboard/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(14112),...{}}),{workAsyncStorage:y,workUnitAsyncStorage:A,serverHooks:E}=w;async function C(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),w.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/admin/dashboard/route";y=y.replace(/\/index$/,"")||"/";let A=await w.prepare(e,t,{srcPage:y,multiZoneDraftMode:!1});if(!A)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:E,deploymentId:C,params:b,nextConfig:x,parsedUrl:_,isDraftMode:T,prerenderManifest:S,routerServerContext:P,isOnDemandRevalidate:I,revalidateOnlyGenerated:N,resolvedPathname:O,clientReferenceManifest:M,serverActionsManifest:q}=A,D=(0,s.normalizeAppPath)(y),H=!!S.routes[O]&&(w.isDev||(0,g.isRouteCacheOwner)(O,w.cacheOwner,S.routes[O])),U=!!(S.dynamicRoutes[D]||H),k=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,_,!1):t.end("This page could not be found"),null);if(U&&!T){let e=S.dynamicRoutes[D];if(e&&!1===e.fallback&&!H){if(x.adapterPath)return await k();throw new v.NoFallbackError}}let j=null;!U||w.isDev||T||(j="/index"===(j=O)?"/":j);let L=!0===w.isDev||!U,B=U&&!L;q&&M&&(0,o.setManifestsSingleton)({page:y,clientReferenceManifest:M,serverActionsManifest:q});let F=e.method||"GET",K=(0,i.getTracer)(),$=K.getActiveScopeSpan(),G=!!(null==P?void 0:P.isWrappedByNextServer),V=!!(0,n.getRequestMeta)(e,"minimalMode"),X=(0,n.getRequestMeta)(e,"incrementalCache")||await w.getIncrementalCache(e,x,S,V);null==X||X.resetRequestCache(),globalThis.__incrementalCache=X;let Y={params:b,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts,useCacheTimeout:x.experimental.useCacheTimeout},cacheComponents:!!x.cacheComponents,validationLevel:x.experimental.instantInsights.validationLevel,isDraftMode:T,supportsDynamicResponse:L,incrementalCache:X,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:x.cacheLife,staticPageGenerationTimeout:x.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>w.onRequestError(e,t,r,n,P)},sharedContext:{buildId:E,deploymentId:C}},W=new d.NodeNextRequest(e),Z=new d.NodeNextResponse(t),z=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(t)),J=async({previousCacheEntry:a})=>{try{if(!V&&I&&N&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await w.handle(z,Y);e.fetchMetrics=Y.renderOpts.fetchMetrics;let i=Y.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let o=Y.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(W,Z,n,i),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);o&&(t[R.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,r=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=R.INFINITE_CACHE?!1!==a&&a>0?x.expireTime:void 0:Y.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await w.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:I})},!1,P),t}},Q=async(n,o)=>{try{var s,d;let n=await w.handleResponse({req:e,nextConfig:x,cacheKey:j,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:N,responseGenerator:J,waitUntil:r.waitUntil,isMinimalMode:V});if(!U)return;if((null==n||null==(s=n.value)?void 0:s.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(d=n.value)?void 0:d.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",I?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);V&&U||i.delete(R.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,m.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(W,Z,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof v.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:B,isOnDemandRevalidate:I})},!1,P),U)throw t;await (0,p.sendResponse)(W,Z,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:i.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let a=K.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==u.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||D,s=`${F} ${r}`;n.setAttributes({"next.route":r,"http.route":r,"next.span_name":s}),n.updateName(s),o&&o!==n&&(o.setAttribute("http.route",r),o.updateName(s))})()}};if(G&&$)await Q($,void 0);else{let t=K.getActiveScopeSpan();await K.withPropagatedContext(e.headers,()=>K.trace(u.BaseServerSpan.handleRequest,{spanName:`${F} ${y}`,kind:i.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Q(e,t)),void 0,!G)}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:y,workUnitAsyncStorage:A})},"routeModule",0,w,"serverHooks",0,E,"workAsyncStorage",0,y,"workUnitAsyncStorage",0,A])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1b7qjlv._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[6162,e=>e.a(async(t,r)=>{try{var a=e.i(58821),n=e.i(98043),i=e.i(79832),o=e.i(13618),s=e.i(76759),u=e.i(50377),l=e.i(68426),d=t([i]);[i]=d.then?(await d)():d;let h=(0,u.createLogger)("api:notebooks");async function c(){let e=await (0,o.getServerSession)(i.authOptions);try{let t;if(e?.user?.email&&(t=await n.prisma.user.findUnique({where:{email:e.user.email}})),!t)return(0,s.unauthorized)("Authentication required");let r=await n.prisma.subject.findMany({where:{userId:t.id},include:{_count:{select:{errorItems:!0}}},orderBy:{createdAt:"desc"}});if(0===r.length){let e=(0,l.stageFromEducationStage)(t.educationStage),a=[{name:"数学",subjectKey:"math"},{name:"英语",subjectKey:"english"}].filter(t=>l.STAGE_SUBJECTS[e].includes(t.subjectKey));await Promise.all(a.map(({name:r,subjectKey:a})=>n.prisma.subject.create({data:{name:r,stage:e,subjectKey:a,userId:t.id}}))),r=await n.prisma.subject.findMany({where:{userId:t.id},include:{_count:{select:{errorItems:!0}}},orderBy:{createdAt:"desc"}})}return a.NextResponse.json(r)}catch(e){return h.error({error:e},"Error fetching notebooks"),(0,s.internalError)("Failed to fetch notebooks")}}async function p(e){let t=await (0,o.getServerSession)(i.authOptions);try{let r;if(t?.user?.email&&(r=await n.prisma.user.findUnique({where:{email:t.user.email}})),!r)return(0,s.unauthorized)("Authentication required");let{name:i,stage:o,subjectKey:u}=await e.json();if("string"!=typeof i||!i.trim())return(0,s.badRequest)("Notebook name is required");if(!(0,l.isValidNotebookScope)(o,u))return(0,s.badRequest)("A valid stage and subject are required");if(await n.prisma.subject.findUnique({where:{name_userId:{name:i.trim(),userId:r.id}}}))return(0,s.conflict)("Notebook with this name already exists");let d=await n.prisma.subject.create({data:{name:i.trim(),stage:o,subjectKey:u,userId:r.id},include:{_count:{select:{errorItems:!0}}}});return a.NextResponse.json(d,{status:201})}catch(e){return h.error({error:e},"Error creating notebook"),(0,s.internalError)("Failed to create notebook")}}e.s(["GET",0,c,"POST",0,p]),r()}catch(e){r(e)}},!1),8355,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),i=e.i(61916),o=e.i(74677),s=e.i(69741),u=e.i(16795),l=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),m=e.i(74838),R=e.i(10372),f=e.i(93695),v=e.i(9580);e.i(52474);var w=e.i(220);let g=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/notebooks/route",pathname:"/api/notebooks",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/notebooks/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(6162),...{}}),{workAsyncStorage:E,workUnitAsyncStorage:b,serverHooks:y}=g;async function C(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),g.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let E="/api/notebooks/route";E=E.replace(/\/index$/,"")||"/";let b=await g.prepare(e,t,{srcPage:E,multiZoneDraftMode:!1});if(!b)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,deploymentId:C,params:A,nextConfig:x,parsedUrl:S,isDraftMode:T,prerenderManifest:N,routerServerContext:q,isOnDemandRevalidate:P,revalidateOnlyGenerated:_,resolvedPathname:I,clientReferenceManifest:O,serverActionsManifest:k}=b,j=(0,s.normalizeAppPath)(E),H=!!N.routes[I]&&(g.isDev||(0,v.isRouteCacheOwner)(I,g.cacheOwner,N.routes[I])),U=!!(N.dynamicRoutes[j]||H),M=async()=>((null==q?void 0:q.render404)?await q.render404(e,t,S,!1):t.end("This page could not be found"),null);if(U&&!T){let e=N.dynamicRoutes[j];if(e&&!1===e.fallback&&!H){if(x.adapterPath)return await M();throw new f.NoFallbackError}}let D=null;!U||g.isDev||T||(D="/index"===(D=I)?"/":D);let F=!0===g.isDev||!U,K=U&&!F;k&&O&&(0,o.setManifestsSingleton)({page:E,clientReferenceManifest:O,serverActionsManifest:k});let B=e.method||"GET",L=(0,i.getTracer)(),G=L.getActiveScopeSpan(),$=!!(null==q?void 0:q.isWrappedByNextServer),V=!!(0,n.getRequestMeta)(e,"minimalMode"),z=(0,n.getRequestMeta)(e,"incrementalCache")||await g.getIncrementalCache(e,x,N,V);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let X={params:A,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts,useCacheTimeout:x.experimental.useCacheTimeout},cacheComponents:!!x.cacheComponents,validationLevel:x.experimental.instantInsights.validationLevel,isDraftMode:T,supportsDynamicResponse:F,incrementalCache:z,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:x.cacheLife,staticPageGenerationTimeout:x.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>g.onRequestError(e,t,a,n,q)},sharedContext:{buildId:y,deploymentId:C}},W=new u.NodeNextRequest(e),J=new u.NodeNextResponse(t),Z=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:r})=>{try{if(!V&&P&&_&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await g.handle(Z,X);e.fetchMetrics=X.renderOpts.fetchMetrics;let i=X.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let o=X.renderOpts.collectedTags;if(!U)return await (0,p.sendResponse)(W,J,n,i),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);o&&(t[R.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,a=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=R.INFINITE_CACHE?!1!==r&&r>0?x.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await g.onRequestError(e,t,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:P})},!1,q),t}},Y=async(n,o)=>{try{var s,u;let n=await g.handleResponse({req:e,nextConfig:x,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:_,responseGenerator:Q,waitUntil:a.waitUntil,isMinimalMode:V});if(!U)return;if((null==n||null==(s=n.value)?void 0:s.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(u=n.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});V||t.setHeader("x-nextjs-cache",P?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);V&&U||i.delete(R.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,m.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(W,J,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await g.onRequestError(e,t,{routerKind:"App Router",routePath:j,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:P})},!1,q),U)throw t;await (0,p.sendResponse)(W,J,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:i.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let r=L.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||j,s=`${B} ${a}`;n.setAttributes({"next.route":a,"http.route":a,"next.span_name":s}),n.updateName(s),o&&o!==n&&(o.setAttribute("http.route",a),o.updateName(s))})()}};if($&&G)await Y(G,void 0);else{let t=L.getActiveScopeSpan();await L.withPropagatedContext(e.headers,()=>L.trace(d.BaseServerSpan.handleRequest,{spanName:`${B} ${E}`,kind:i.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},e=>Y(e,t)),void 0,!$)}}e.s(["handler",0,C,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:b})},"routeModule",0,g,"serverHooks",0,y,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,b])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1be-y66._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[2875,e=>e.a(async(t,r)=>{try{var a=e.i(58821),n=e.i(69719),i=e.i(98043),s=e.i(63856),o=e.i(76759),u=e.i(50377),l=e.i(74866),d=e.i(98003),c=e.i(76025),p=t([s]);[s]=p.then?(await p)():p;let R=(0,u.createLogger)("api:exams"),g=n.z.object({subjectIds:n.z.array(n.z.string().min(1)).min(1).max(50),tagNames:n.z.array(n.z.string().trim().min(1)).max(50).optional(),scope:n.z.enum(l.EXAM_SCOPES),count:n.z.number().int().min(1).max(l.MAX_EXAM_QUESTIONS),pickRule:n.z.enum(l.EXAM_PICK_RULES).default(l.DEFAULT_EXAM_PICK_RULE),difficulty:n.z.enum(l.EXAM_DIFFICULTIES),title:n.z.string().trim().max(100).optional(),language:n.z.enum(["zh","en"]).optional()});async function h(){try{let e=await (0,s.getCurrentUser)();if(!e)return(0,o.unauthorized)("Authentication required");let t=await i.prisma.examPaper.findMany({where:{userId:e.id},orderBy:{createdAt:"desc"},select:{id:!0,title:!0,status:!0,scope:!0,difficulty:!0,requestedCount:!0,resultsRecordedAt:!0,createdAt:!0,questions:{select:{status:!0,_count:{select:{practiceRecords:!0}}}}}});return a.NextResponse.json(t.map(({questions:e,...t})=>({...t,questionCount:e.length,readyCount:e.filter(e=>"ready"===e.status).length,recordedCount:e.filter(e=>e._count.practiceRecords>0).length})))}catch(e){return R.error({error:e},"Error listing exam papers"),(0,o.internalError)("Failed to list exam papers")}}async function m(e){try{let t=await (0,s.getCurrentUser)();if(!t)return(0,o.unauthorized)("Authentication required");let r=g.safeParse(await e.json());if(!r.success)return(0,o.validationError)("Invalid exam options",r.error.issues);let{subjectIds:n,tagNames:u,scope:p,count:h,pickRule:m,difficulty:E,language:f}=r.data,v=await i.prisma.subject.findMany({where:{id:{in:n},userId:t.id},select:{id:!0,name:!0}});if(0===v.length)return(0,o.badRequest)("NO_SOURCE_ITEMS");let C=await (0,l.selectSourceItems)(t.id,{subjectIds:v.map(e=>e.id),tagNames:u,scope:p,count:h,pickRule:m});if(0===C.length)return(0,o.badRequest)("NO_SOURCE_ITEMS");let x=r.data.title||`${v.map(e=>e.name).join("、")} ${(0,c.formatDateTime)(new Date,"yyyy-MM-dd HH:mm",(0,d.getAppTimeZone)())}`,w=await i.prisma.examPaper.create({data:{userId:t.id,title:x,scope:p,difficulty:E,requestedCount:h,subjectIds:JSON.stringify(v.map(e=>e.id)),tagNames:u&&u.length>0?JSON.stringify(u):null,questions:{create:C.map((e,t)=>({order:t+1,errorItemId:e.id,sourceShortId:e.shortId}))}},select:{id:!0,title:!0,requestedCount:!0,_count:{select:{questions:!0}}}});return(0,l.generateExamPaper)(w.id,f||"zh"),R.info({paperId:w.id,count:C.length,requested:h},"Exam paper created"),a.NextResponse.json({id:w.id,title:w.title,requestedCount:w.requestedCount,questionCount:w._count.questions},{status:201})}catch(e){return R.error({error:e},"Error creating exam paper"),(0,o.internalError)("Failed to create exam paper")}}e.s(["GET",0,h,"POST",0,m]),r()}catch(e){r(e)}},!1),9726,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),i=e.i(61916),s=e.i(74677),o=e.i(69741),u=e.i(16795),l=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),m=e.i(74838),R=e.i(10372),g=e.i(93695),E=e.i(9580);e.i(52474);var f=e.i(220);let v=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/exams/route",pathname:"/api/exams",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/exams/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(2875),...{}}),{workAsyncStorage:C,workUnitAsyncStorage:x,serverHooks:w}=v;async function y(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let C="/api/exams/route";C=C.replace(/\/index$/,"")||"/";let x=await v.prepare(e,t,{srcPage:C,multiZoneDraftMode:!1});if(!x)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,deploymentId:y,params:A,nextConfig:S,parsedUrl:T,isDraftMode:_,prerenderManifest:I,routerServerContext:q,isOnDemandRevalidate:P,revalidateOnlyGenerated:N,resolvedPathname:b,clientReferenceManifest:O,serverActionsManifest:M}=x,U=(0,o.normalizeAppPath)(C),H=!!I.routes[b]&&(v.isDev||(0,E.isRouteCacheOwner)(b,v.cacheOwner,I.routes[b])),D=!!(I.dynamicRoutes[U]||H),j=async()=>((null==q?void 0:q.render404)?await q.render404(e,t,T,!1):t.end("This page could not be found"),null);if(D&&!_){let e=I.dynamicRoutes[U];if(e&&!1===e.fallback&&!H){if(S.adapterPath)return await j();throw new g.NoFallbackError}}let z=null;!D||v.isDev||_||(z="/index"===(z=b)?"/":z);let k=!0===v.isDev||!D,F=D&&!k;M&&O&&(0,s.setManifestsSingleton)({page:C,clientReferenceManifest:O,serverActionsManifest:M});let L=e.method||"GET",K=(0,i.getTracer)(),X=K.getActiveScopeSpan(),$=!!(null==q?void 0:q.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),G=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,S,I,B);null==G||G.resetRequestCache(),globalThis.__incrementalCache=G;let V={params:A,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!S.experimental.authInterrupts,useCacheTimeout:S.experimental.useCacheTimeout},cacheComponents:!!S.cacheComponents,validationLevel:S.experimental.instantInsights.validationLevel,isDraftMode:_,supportsDynamicResponse:k,incrementalCache:G,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:S.cacheLife,staticPageGenerationTimeout:S.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>v.onRequestError(e,t,a,n,q)},sharedContext:{buildId:w,deploymentId:y}},J=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),Z=l.NextRequestAdapter.fromNodeNextRequest(J,(0,l.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:r})=>{try{if(!B&&P&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await v.handle(Z,V);e.fetchMetrics=V.renderOpts.fetchMetrics;let i=V.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let s=V.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(J,W,n,i),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);s&&(t[R.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,a=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=R.INFINITE_CACHE?!1!==r&&r>0?S.expireTime:void 0:V.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:C,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:P})},!1,q),t}},Y=async(n,s)=>{try{var o,u;let n=await v.handleResponse({req:e,nextConfig:S,cacheKey:z,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:N,responseGenerator:Q,waitUntil:a.waitUntil,isMinimalMode:B});if(!D)return;if((null==n||null==(o=n.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(u=n.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",P?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);B&&D||i.delete(R.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,m.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(J,W,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof g.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:P})},!1,q),D)throw t;await (0,p.sendResponse)(J,W,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:i.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let r=K.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||U,o=`${L} ${a}`;n.setAttributes({"next.route":a,"http.route":a,"next.span_name":o}),n.updateName(o),s&&s!==n&&(s.setAttribute("http.route",a),s.updateName(o))})()}};if($&&X)await Y(X,void 0);else{let t=K.getActiveScopeSpan();await K.withPropagatedContext(e.headers,()=>K.trace(d.BaseServerSpan.handleRequest,{spanName:`${L} ${C}`,kind:i.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},e=>Y(e,t)),void 0,!$)}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:x})},"routeModule",0,v,"serverHooks",0,w,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,x])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1ex6ovo._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[70322,e=>e.a(async(t,r)=>{try{var a=e.i(58821),n=e.i(13618),s=e.i(98043),i=e.i(79832),o=e.i(50377),l=t([i]);[i]=l.then?(await l)():l;let c=(0,o.createLogger)("api:tags");async function u(e){try{let t=await (0,n.getServerSession)(i.authOptions);if(!t?.user?.id)return a.NextResponse.json({error:"Unauthorized"},{status:401});let{searchParams:r}=new URL(e.url),o=r.get("subject"),l="true"===r.get("flat");if(!o)return a.NextResponse.json({error:"Subject is required"},{status:400});let u=await s.prisma.knowledgeTag.findMany({where:{subject:o,OR:[{isSystem:!0},{userId:t.user.id}]},orderBy:[{order:"asc"},{name:"asc"}]});if(l){let e=u.filter(e=>!u.some(t=>t.parentId===e.id));return a.NextResponse.json({tags:e.map(e=>{let t=e.parentId?u.find(t=>t.id===e.parentId):null;return{id:e.id,name:e.name,isSystem:e.isSystem,parentId:e.parentId,parentName:t?t.name:null}})})}let d=function(e){let t=new Map,r=[];for(let r of e)t.set(r.id,{id:r.id,name:r.name,code:r.code,isSystem:r.isSystem,children:[]});for(let a of e){let e=t.get(a.id);a.parentId&&t.has(a.parentId)?t.get(a.parentId).children.push(e):r.push(e)}return r}(u);return u.length>0&&c.debug({subject:o,totalTags:u.length,systemTags:u.filter(e=>e.isSystem).length,userTags:u.filter(e=>!e.isSystem).length,treeRoots:d.length,sampleRoot:d.length>0?d[0].name:"none"},"Returning tag tree"),a.NextResponse.json({tags:d})}catch(e){return c.error({error:e},"Error fetching tags"),a.NextResponse.json({error:"Failed to fetch tags"},{status:500})}}async function d(e){try{let t=await (0,n.getServerSession)(i.authOptions);if(!t?.user?.id)return a.NextResponse.json({error:"Unauthorized"},{status:401});let{name:r,subject:o,parentId:l}=await e.json();if(!r||!o)return a.NextResponse.json({error:"Name and subject are required"},{status:400});if(await s.prisma.knowledgeTag.findFirst({where:{name:r.trim(),subject:o,userId:t.user.id,parentId:l||null}}))return a.NextResponse.json({error:"Tag already exists in this group"},{status:409});let u=await s.prisma.knowledgeTag.create({data:{name:r.trim(),subject:o,parentId:l||null,isSystem:!1,userId:t.user.id}});return a.NextResponse.json({tag:u},{status:201})}catch(e){return c.error({error:e},"Error creating tag"),a.NextResponse.json({error:"Failed to create tag"},{status:500})}}async function p(e){try{let t=await (0,n.getServerSession)(i.authOptions);if(!t?.user?.id)return a.NextResponse.json({error:"Unauthorized"},{status:401});let{searchParams:r}=new URL(e.url),o=r.get("id");if(!o)return a.NextResponse.json({error:"Tag ID is required"},{status:400});if(!await s.prisma.knowledgeTag.findFirst({where:{id:o,userId:t.user.id,isSystem:!1}}))return a.NextResponse.json({error:"Tag not found or not deletable"},{status:404});return await s.prisma.knowledgeTag.delete({where:{id:o}}),a.NextResponse.json({success:!0})}catch(e){return c.error({error:e},"Error deleting tag"),a.NextResponse.json({error:"Failed to delete tag"},{status:500})}}e.s(["DELETE",0,p,"GET",0,u,"POST",0,d]),r()}catch(e){r(e)}},!1),15984,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),s=e.i(61916),i=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),h=e.i(70101),g=e.i(74838),R=e.i(10372),m=e.i(93695),f=e.i(9580);e.i(52474);var w=e.i(220);let v=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/tags/route",pathname:"/api/tags",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/tags/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(70322),...{}}),{workAsyncStorage:x,workUnitAsyncStorage:E,serverHooks:y}=v;async function T(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/tags/route";x=x.replace(/\/index$/,"")||"/";let E=await v.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!E)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,deploymentId:T,params:S,nextConfig:C,parsedUrl:N,isDraftMode:A,prerenderManifest:I,routerServerContext:b,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,resolvedPathname:j,clientReferenceManifest:q,serverActionsManifest:_}=E,U=(0,o.normalizeAppPath)(x),H=!!I.routes[j]&&(v.isDev||(0,f.isRouteCacheOwner)(j,v.cacheOwner,I.routes[j])),k=!!(I.dynamicRoutes[U]||H),M=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,N,!1):t.end("This page could not be found"),null);if(k&&!A){let e=I.dynamicRoutes[U];if(e&&!1===e.fallback&&!H){if(C.adapterPath)return await M();throw new m.NoFallbackError}}let D=null;!k||v.isDev||A||(D="/index"===(D=j)?"/":D);let F=!0===v.isDev||!k,L=k&&!F;_&&q&&(0,i.setManifestsSingleton)({page:x,clientReferenceManifest:q,serverActionsManifest:_});let K=e.method||"GET",B=(0,s.getTracer)(),$=B.getActiveScopeSpan(),G=!!(null==b?void 0:b.isWrappedByNextServer),z=!!(0,n.getRequestMeta)(e,"minimalMode"),V=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,C,I,z);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let X={params:S,previewProps:I.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:A,supportsDynamicResponse:F,incrementalCache:V,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>v.onRequestError(e,t,a,n,b)},sharedContext:{buildId:y,deploymentId:T}},W=new l.NodeNextRequest(e),Z=new l.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:r})=>{try{if(!z&&O&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await v.handle(J,X);e.fetchMetrics=X.renderOpts.fetchMetrics;let s=X.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let i=X.renderOpts.collectedTags;if(!k)return await (0,c.sendResponse)(W,Z,n,s),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);i&&(t[R.NEXT_CACHE_TAGS_HEADER]=i),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,a=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=R.INFINITE_CACHE?!1!==r&&r>0?C.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:O})},!1,b),t}},Y=async(n,i)=>{try{var o,l;let n=await v.handleResponse({req:e,nextConfig:C,cacheKey:D,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,responseGenerator:Q,waitUntil:a.waitUntil,isMinimalMode:z});if(!k)return;if((null==n||null==(o=n.value)?void 0:o.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(l=n.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});z||t.setHeader("x-nextjs-cache",O?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let s=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);z&&k||s.delete(R.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||s.get("Cache-Control")||s.set("Cache-Control",(0,g.getCacheControlHeader)(n.cacheControl)),await (0,c.sendResponse)(W,Z,new Response(n.value.body,{headers:s,status:n.value.status||200}));return}catch(t){if(t instanceof m.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:O})},!1,b),k)throw t;await (0,c.sendResponse)(W,Z,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:s.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let r=B.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||U,o=`${K} ${a}`;n.setAttributes({"next.route":a,"http.route":a,"next.span_name":o}),n.updateName(o),i&&i!==n&&(i.setAttribute("http.route",a),i.updateName(o))})()}};if(G&&$)await Y($,void 0);else{let t=B.getActiveScopeSpan();await B.withPropagatedContext(e.headers,()=>B.trace(d.BaseServerSpan.handleRequest,{spanName:`${K} ${x}`,kind:s.SpanKind.SERVER,attributes:{"http.method":K,"http.target":e.url}},e=>Y(e,t)),void 0,!G)}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:E})},"routeModule",0,v,"serverHooks",0,y,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,E])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1fgb9ve._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[10821,e=>e.a(async(t,r)=>{try{var a=e.i(58821),n=e.i(44950),i=e.i(98043),s=e.i(50377),o=e.i(26828),l=e.i(76759),u=e.i(39811),d=e.i(83508),c=e.i(4083),p=e.i(92366),h=e.i(4752),g=e.i(60979),m=e.i(99617),f=e.i(55920),w=e.i(98003),R=t([n]);[n]=R.then?(await R)():R;let y=(0,s.createLogger)("api:openclaw:batch-upload"),T=[".jpg",".jpeg",".png"];async function E(e,t,r){let a=process.env.OPENCLAW_API_URL||"http://localhost:8080",n=process.env.OPENCLAW_API_KEY||"",i=new AbortController,s=setTimeout(()=>i.abort(),r);try{let r=await fetch(`${a}/api/recognize`,{method:"POST",headers:{"Content-Type":"application/json",...n?{Authorization:`Bearer ${n}`}:{}},body:JSON.stringify({image:e,mimeType:t}),signal:i.signal});if(clearTimeout(s),!r.ok){let e=await r.text();return y.error({status:r.status,error:e},"Openclaw agent error"),{success:!1,error:`识别服务异常: HTTP ${r.status}`}}return await r.json()}catch(e){if(clearTimeout(s),"AbortError"===e.name)return y.error("Openclaw agent timeout"),{success:!1,error:"识别服务超时"};return y.error({error:e?.message||String(e)},"Openclaw agent request failed"),{success:!1,error:`识别服务请求失败: ${e?.message||String(e)}`}}}async function v(e,t,r,a,n){let{questionText:i,answerText:s,analysis:o,knowledgePoints:l,errorType:R,source:E}=a||{},v=(0,m.parseDifficultyStars)(a?.difficultyStars),A={questionText:i,answerText:s,analysis:o,wrongAnswerText:a?.wrongAnswerText,mistakeAnalysis:a?.mistakeAnalysis,originalImageUrl:`data:${r};base64,${t}`},T=await (0,g.runQuestionImportTransaction)(async a=>{let h=await (0,g.findDuplicateQuestion)(a,e,A);if(h)return(0,g.recordDuplicateQuestion)(a,e,h,A);let m=Array.isArray(l)?l:[],T=[],I=n?await a.subject.findUnique({where:{id:n}}):null,C=I?(0,d.inferSubjectFromName)(I.name):null,O=await a.user.findUnique({where:{id:e},select:{educationStage:!0,enrollmentYear:!0}}),x=null;for(let t of(O?.educationStage&&O?.enrollmentYear&&(x=(0,u.calculateGrade)(O.educationStage,O.enrollmentYear,new Date,"en",(0,w.getAppTimeZone)())),m))try{let r=await a.knowledgeTag.findFirst({where:{name:t,OR:[{isSystem:!0},{userId:e}]}});if(!r){let n=x&&C?await (0,c.findParentTagIdForGrade)(x,C,a):null;r=await a.knowledgeTag.create({data:{name:t,subject:C||"other",isSystem:!1,userId:e,parentId:n||void 0}})}T.push({id:r.id})}catch(e){y.error({tagName:t,error:e},"Error processing tag")}return await a.errorItem.create({data:{shortId:await (0,p.generateUniqueShortId)(a),userId:e,subjectId:n||void 0,originalImageUrl:`data:${r};base64,${t}`,ocrText:i||null,questionText:i||null,answerText:s||null,analysis:o||null,knowledgePoints:JSON.stringify(m),gradeSemester:x,paperLevel:(0,f.getDefaultPaperLevel)(v),difficultyStars:v,errorType:R||null,source:E||"Openclaw",masteryLevel:0,tags:{connect:T}},include:{tags:!0,subject:!0}})});return"duplicate"in T&&T.duplicate&&(0,h.scheduleMasteryEvaluation)([T.id]),T}async function A(e){y.info("POST /api/openclaw/batch-upload called");let t=e.headers.get("x-api-key"),r=process.env.OPENCLAW_INTEGRATION_API_KEY,s=process.env.OPENCLAW_AUTH_MODE||"credentials",u=null,d=null,c=null,p=null;try{let h=await e.json();if("apikey"===s&&r){if(!t)return y.warn("Missing API key in request"),(0,l.createErrorResponse)("未提供API密钥",401,l.ErrorCode.UNAUTHORIZED,"Missing API key");if(t!==r)return y.warn("Invalid API key provided"),(0,l.createErrorResponse)("API密钥无效",401,l.ErrorCode.UNAUTHORIZED,"Invalid API key");d=h.userEmail,c=h.subjectId}else{let{username:e,password:t}=h;if(!e||!t)return(0,l.createErrorResponse)("请提供用户名和密码",401,l.ErrorCode.UNAUTHORIZED,"Missing username or password");if(!(u=await i.prisma.user.findFirst({where:{OR:[{email:e},{name:e}]}})))return y.warn({username:e},"User not found"),(0,l.createErrorResponse)("用户不存在",404,l.ErrorCode.USER_NOT_FOUND,"User not found");if(!await (0,n.compare)(t,u.password))return y.warn({username:e},"Invalid password"),(0,l.createErrorResponse)("密码错误",401,l.ErrorCode.UNAUTHORIZED,"Invalid password");d=u.email,c=h.subjectId,y.info({userId:u.id,email:u.email},"User authenticated via credentials")}let{images:g}=h;if(!g||!Array.isArray(g)||0===g.length)return(0,l.createErrorResponse)("未提供图片数据",400,l.ErrorCode.BAD_REQUEST,"Missing images array");if(g.length>20)return(0,l.createErrorResponse)("图片数量超过限制: 最多20张",400,l.ErrorCode.BAD_REQUEST,"Maximum 20 images allowed");let m=u;if(m||(m=await i.prisma.user.findUnique({where:{email:d}})),!m)return y.warn({userEmail:d},"User not found"),(0,l.createErrorResponse)("用户不存在",404,l.ErrorCode.USER_NOT_FOUND,"User not found");let f=parseInt(process.env.OPENCLAW_TIMEOUT||"30000",10),w=Math.min(3e3,f/g.length),R=[],A=(0,o.startBackgroundTask)({userId:m.id,kind:"batch_upload",total:g.length});p=A;let I=()=>A.setProgress(R.length,g.length,R.filter(e=>!e.success).length);for(let e=0;e<g.length;e++){I();let{base64:t,mimeType:r,filename:a}=g[e],n=function(e,t){if(!e||0===e.length)return{valid:!1,error:"图片数据为空"};let r=t.toLowerCase().substring(t.lastIndexOf("."));if(!T.includes(r))return{valid:!1,error:`不支持的图片格式: ${r},仅支持 JPG、PNG`};let a=3*e.length/4;return a>5242880?{valid:!1,error:`图片大小超过限制: ${Math.round(a/1024/1024)}MB > 5MB`}:{valid:!0}}(t,a);if(!n.valid){y.warn({index:e,filename:a,error:n.error},"Image validation failed"),R.push({success:!1,index:e,error:n.error});continue}let i=await E(t,r,w);if(!i.success||!i.data){y.error({index:e,error:i.error},"Openclaw recognition failed"),R.push({success:!1,index:e,error:i.error||"识别失败"});continue}try{let a=await v(m.id,t,r,i.data,c);R.push({success:!0,index:e,errorItemId:a.id,..."duplicate"in a?{duplicate:a.duplicate,mistakeRecorded:a.mistakeRecorded,similarity:a.similarity,practiceRecordId:a.practiceRecordId,message:a.message}:{}}),y.info({index:e,errorItemId:a.id},"Error item created successfully")}catch(t){y.error({index:e,error:t?.message||String(t)},"Failed to create error item"),R.push({success:!1,index:e,error:`数据库写入失败: ${t?.message||String(t)}`})}}let C=R.filter(e=>e.success).length,O=R.length-C;I(),0===C?A.fail("ALL_FAILED"):A.succeed(),y.info({total:R.length,success:C,failed:O},"Batch upload completed");let x=0===O?201:207;return a.NextResponse.json({success:0===O,total:R.length,successCount:C,failCount:O,results:R},{status:x})}catch(e){return p?.fail(e),y.error({error:e?.message||String(e),stack:e?.stack},"Batch upload error"),(0,l.createErrorResponse)(e?.message||"批量上传失败",500,l.ErrorCode.INTERNAL_ERROR,e?.message||String(e))}}e.s(["POST",0,A]),r()}catch(e){r(e)}},!1),5140,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),n=e.i(59756),i=e.i(61916),s=e.i(74677),o=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),h=e.i(70101),g=e.i(74838),m=e.i(10372),f=e.i(93695),w=e.i(9580);e.i(52474);var R=e.i(220);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/openclaw/batch-upload/route",pathname:"/api/openclaw/batch-upload",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/openclaw/batch-upload/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(10821),...{}}),{workAsyncStorage:v,workUnitAsyncStorage:A,serverHooks:y}=E;async function T(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/openclaw/batch-upload/route";v=v.replace(/\/index$/,"")||"/";let A=await E.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!A)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,deploymentId:T,params:I,nextConfig:C,parsedUrl:O,isDraftMode:x,prerenderManifest:S,routerServerContext:P,isOnDemandRevalidate:b,revalidateOnlyGenerated:N,resolvedPathname:U,clientReferenceManifest:_,serverActionsManifest:k}=A,D=(0,o.normalizeAppPath)(v),M=!!S.routes[U]&&(E.isDev||(0,w.isRouteCacheOwner)(U,E.cacheOwner,S.routes[U])),q=!!(S.dynamicRoutes[D]||M),H=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,O,!1):t.end("This page could not be found"),null);if(q&&!x){let e=S.dynamicRoutes[D];if(e&&!1===e.fallback&&!M){if(C.adapterPath)return await H();throw new f.NoFallbackError}}let L=null;!q||E.isDev||x||(L="/index"===(L=U)?"/":L);let j=!0===E.isDev||!q,$=q&&!j;k&&_&&(0,s.setManifestsSingleton)({page:v,clientReferenceManifest:_,serverActionsManifest:k});let F=e.method||"GET",B=(0,i.getTracer)(),G=B.getActiveScopeSpan(),K=!!(null==P?void 0:P.isWrappedByNextServer),W=!!(0,n.getRequestMeta)(e,"minimalMode"),Z=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,C,S,W);null==Z||Z.resetRequestCache(),globalThis.__incrementalCache=Z;let Q={params:I,previewProps:S.preview,renderOpts:{experimental:{authInterrupts:!!C.experimental.authInterrupts,useCacheTimeout:C.experimental.useCacheTimeout},cacheComponents:!!C.cacheComponents,validationLevel:C.experimental.instantInsights.validationLevel,isDraftMode:x,supportsDynamicResponse:j,incrementalCache:Z,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:C.cacheLife,staticPageGenerationTimeout:C.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>E.onRequestError(e,t,a,n,P)},sharedContext:{buildId:y,deploymentId:T}},Y=new l.NodeNextRequest(e),z=new l.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(Y,(0,u.signalFromNodeResponse)(t)),V=async({previousCacheEntry:r})=>{try{if(!W&&b&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await E.handle(J,Q);e.fetchMetrics=Q.renderOpts.fetchMetrics;let i=Q.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let s=Q.renderOpts.collectedTags;if(!q)return await (0,p.sendResponse)(Y,z,n,i),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);s&&(t[m.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==Q.renderOpts.collectedRevalidate&&!(Q.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&Q.renderOpts.collectedRevalidate,a=void 0===Q.renderOpts.collectedExpire||Q.renderOpts.collectedExpire>=m.INFINITE_CACHE?!1!==r&&r>0?C.expireTime:void 0:Q.renderOpts.collectedExpire;return{value:{kind:R.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:b})},!1,P),t}},X=async(n,s)=>{try{var o,l;let n=await E.handleResponse({req:e,nextConfig:C,cacheKey:L,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:S,isRoutePPREnabled:!1,isOnDemandRevalidate:b,revalidateOnlyGenerated:N,responseGenerator:V,waitUntil:a.waitUntil,isMinimalMode:W});if(!q)return;if((null==n||null==(o=n.value)?void 0:o.kind)!==R.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(l=n.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",b?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),x&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);W&&q||i.delete(m.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,g.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(Y,z,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:b})},!1,P),q)throw t;await (0,p.sendResponse)(Y,z,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:i.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let r=B.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||D,o=`${F} ${a}`;n.setAttributes({"next.route":a,"http.route":a,"next.span_name":o}),n.updateName(o),s&&s!==n&&(s.setAttribute("http.route",a),s.updateName(o))})()}};if(K&&G)await X(G,void 0);else{let t=B.getActiveScopeSpan();await B.withPropagatedContext(e.headers,()=>B.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${v}`,kind:i.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>X(e,t)),void 0,!K)}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:v,workUnitAsyncStorage:A})},"routeModule",0,E,"serverHooks",0,y,"workAsyncStorage",0,v,"workUnitAsyncStorage",0,A])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1m-yyz-._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[51513,e=>e.a(async(t,a)=>{try{var r=e.i(58821),n=e.i(13618),i=e.i(79832),o=e.i(98043),s=e.i(69719),l=e.i(44950),u=e.i(76759),d=e.i(50377),p=t([i,l]);[i,l]=p.then?(await p)():p;let m=(0,d.createLogger)("api:user"),f=s.z.object({name:s.z.string().optional(),email:s.z.string().optional(),password:s.z.string().optional(),educationStage:s.z.string().optional(),enrollmentYear:s.z.number().optional().nullable(),confirmBeforeImport:s.z.boolean().optional(),enableGeogebra:s.z.boolean().optional(),enableSvgAnimation:s.z.boolean().optional(),questionDuplicateThreshold:s.z.number().min(1).max(100).multipleOf(.01).optional()});async function c(){let e=await (0,n.getServerSession)(i.authOptions);if(!e?.user?.email)return(0,u.unauthorized)();try{let t=await o.prisma.user.findUnique({where:{email:e.user.email},select:{name:!0,email:!0,educationStage:!0,enrollmentYear:!0,confirmBeforeImport:!0,enableGeogebra:!0,enableSvgAnimation:!0,questionDuplicateThreshold:!0}});if(!t)return(0,u.notFound)("User not found");return m.debug({user:t},"Returning user profile"),r.NextResponse.json(t)}catch(e){return m.error({error:e},"Failed to fetch user profile"),(0,u.internalError)("Failed to fetch user profile")}}async function h(e){let t=await (0,n.getServerSession)(i.authOptions);if(!t?.user?.email)return(0,u.unauthorized)();try{let a=await e.json(),{name:n,email:i,password:s,educationStage:d,enrollmentYear:p,confirmBeforeImport:c,enableGeogebra:h,enableSvgAnimation:m,questionDuplicateThreshold:R}=f.parse(a),g={};if(n&&n.trim()&&(g.name=n.trim()),d&&d.trim()&&(g.educationStage=d.trim()),"number"!=typeof p||isNaN(p)||(g.enrollmentYear=p),"boolean"==typeof c&&(g.confirmBeforeImport=c),"boolean"==typeof h&&(g.enableGeogebra=h),"boolean"==typeof m&&(g.enableSvgAnimation=m),"number"==typeof R&&(g.questionDuplicateThreshold=R),i&&i.trim()){if(!/^[^\s@]+@[^\s@]+$/.test(i.trim()))return(0,u.badRequest)("Invalid email format");g.email=i.trim()}if(s&&s.length>0){if(s.length<6)return(0,u.badRequest)("Password must be at least 6 characters");g.password=await (0,l.hash)(s,10)}let v=await o.prisma.user.update({where:{email:t.user.email},data:g,select:{name:!0,email:!0,educationStage:!0,enrollmentYear:!0,confirmBeforeImport:!0,enableGeogebra:!0,enableSvgAnimation:!0,questionDuplicateThreshold:!0}});return r.NextResponse.json(v)}catch(e){if(m.error({error:e},"Failed to update user profile"),e instanceof s.z.ZodError)return(0,u.validationError)("Invalid input",e.issues);return(0,u.internalError)("Failed to update user profile")}}e.s(["GET",0,c,"PATCH",0,h]),a()}catch(e){a(e)}},!1),4123,e=>{"use strict";var t=e.i(47909),a=e.i(74017),r=e.i(96250),n=e.i(59756),i=e.i(61916),o=e.i(74677),s=e.i(69741),l=e.i(16795),u=e.i(87718),d=e.i(95169),p=e.i(47587),c=e.i(66012),h=e.i(70101),m=e.i(74838),f=e.i(10372),R=e.i(93695),g=e.i(9580);e.i(52474);var v=e.i(220);let w=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/user/route",pathname:"/api/user",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/user/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(51513),...{}}),{workAsyncStorage:b,workUnitAsyncStorage:E,serverHooks:C}=w;async function y(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),w.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let b="/api/user/route";b=b.replace(/\/index$/,"")||"/";let E=await w.prepare(e,t,{srcPage:b,multiZoneDraftMode:!1});if(!E)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:C,deploymentId:y,params:S,nextConfig:x,parsedUrl:A,isDraftMode:T,prerenderManifest:N,routerServerContext:P,isOnDemandRevalidate:q,revalidateOnlyGenerated:O,resolvedPathname:I,clientReferenceManifest:_,serverActionsManifest:H}=E,D=(0,s.normalizeAppPath)(b),U=!!N.routes[I]&&(w.isDev||(0,g.isRouteCacheOwner)(I,w.cacheOwner,N.routes[I])),M=!!(N.dynamicRoutes[D]||U),z=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,A,!1):t.end("This page could not be found"),null);if(M&&!T){let e=N.dynamicRoutes[D];if(e&&!1===e.fallback&&!U){if(x.adapterPath)return await z();throw new R.NoFallbackError}}let k=null;!M||w.isDev||T||(k="/index"===(k=I)?"/":k);let F=!0===w.isDev||!M,j=M&&!F;H&&_&&(0,o.setManifestsSingleton)({page:b,clientReferenceManifest:_,serverActionsManifest:H});let B=e.method||"GET",G=(0,i.getTracer)(),K=G.getActiveScopeSpan(),L=!!(null==P?void 0:P.isWrappedByNextServer),$=!!(0,n.getRequestMeta)(e,"minimalMode"),Y=(0,n.getRequestMeta)(e,"incrementalCache")||await w.getIncrementalCache(e,x,N,$);null==Y||Y.resetRequestCache(),globalThis.__incrementalCache=Y;let V={params:S,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!x.experimental.authInterrupts,useCacheTimeout:x.experimental.useCacheTimeout},cacheComponents:!!x.cacheComponents,validationLevel:x.experimental.instantInsights.validationLevel,isDraftMode:T,supportsDynamicResponse:F,incrementalCache:Y,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:x.cacheLife,staticPageGenerationTimeout:x.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>w.onRequestError(e,t,r,n,P)},sharedContext:{buildId:C,deploymentId:y}},X=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest(X,(0,u.signalFromNodeResponse)(t)),J=async({previousCacheEntry:a})=>{try{if(!$&&q&&O&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await w.handle(Z,V);e.fetchMetrics=V.renderOpts.fetchMetrics;let i=V.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let o=V.renderOpts.collectedTags;if(!M)return await (0,c.sendResponse)(X,W,n,i),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);o&&(t[f.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,r=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=f.INFINITE_CACHE?!1!==a&&a>0?x.expireTime:void 0:V.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await w.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:q})},!1,P),t}},Q=async(n,o)=>{try{var s,l;let n=await w.handleResponse({req:e,nextConfig:x,cacheKey:k,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:O,responseGenerator:J,waitUntil:r.waitUntil,isMinimalMode:$});if(!M)return;if((null==n||null==(s=n.value)?void 0:s.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(l=n.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",q?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),T&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);$&&M||i.delete(f.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,m.getCacheControlHeader)(n.cacheControl)),await (0,c.sendResponse)(X,W,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof R.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:j,isOnDemandRevalidate:q})},!1,P),M)throw t;await (0,c.sendResponse)(X,W,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:i.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let a=G.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||D,s=`${B} ${r}`;n.setAttributes({"next.route":r,"http.route":r,"next.span_name":s}),n.updateName(s),o&&o!==n&&(o.setAttribute("http.route",r),o.updateName(s))})()}};if(L&&K)await Q(K,void 0);else{let t=G.getActiveScopeSpan();await G.withPropagatedContext(e.headers,()=>G.trace(d.BaseServerSpan.handleRequest,{spanName:`${B} ${b}`,kind:i.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},e=>Q(e,t)),void 0,!L)}}e.s(["handler",0,y,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:E})},"routeModule",0,w,"serverHooks",0,C,"workAsyncStorage",0,b,"workUnitAsyncStorage",0,E])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1oj6gy_._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[15965,e=>e.a(async(t,r)=>{try{var a=e.i(58821),i=e.i(69719),s=e.i(63856),n=e.i(76759),o=e.i(50377),u=e.i(74866),l=e.i(4752),d=t([s]);[s]=d.then?(await d)():d;let m=(0,o.createLogger)("api:exams:results"),p=i.z.object({takenAt:i.z.string().datetime({offset:!0}).optional(),results:i.z.array(i.z.object({questionId:i.z.string().min(1),result:i.z.enum(l.PRACTICE_RESULTS).nullable()})).min(1).max(100)});async function c(e,{params:t}){let{id:r}=await t;try{let t=await (0,s.getCurrentUser)();if(!t)return(0,n.unauthorized)("Authentication required");let i=p.safeParse(await e.json());if(!i.success)return(0,n.validationError)("Invalid exam results",i.error.issues);let o=i.data.takenAt?new Date(i.data.takenAt):new Date,d=await (0,u.recordExamResults)(r,t.id,o,i.data.results);return(0,l.scheduleMasteryEvaluation)(d),a.NextResponse.json({success:!0,affectedCount:d.length})}catch(e){if(e instanceof Error&&"EXAM_NOT_FOUND"===e.message)return(0,n.notFound)("Exam paper not found");return m.error({error:e},"Error recording exam results"),(0,n.internalError)("Failed to record exam results")}}e.s(["POST",0,c]),r()}catch(e){r(e)}},!1),59744,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),i=e.i(59756),s=e.i(61916),n=e.i(74677),o=e.i(69741),u=e.i(16795),l=e.i(87718),d=e.i(95169),c=e.i(47587),m=e.i(66012),p=e.i(70101),f=e.i(74838),h=e.i(10372),g=e.i(93695),w=e.i(9580);e.i(52474);var E=e.i(220);let y=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/exams/[id]/results/route",pathname:"/api/exams/[id]/results",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/exams/[id]/results/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(15965),...{}}),{workAsyncStorage:x,workUnitAsyncStorage:R,serverHooks:v}=y;async function S(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),y.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/exams/[id]/results/route";x=x.replace(/\/index$/,"")||"/";let R=await y.prepare(e,t,{srcPage:x,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:v,deploymentId:S,params:I,nextConfig:T,parsedUrl:A,isDraftMode:_,prerenderManifest:C,routerServerContext:P,isOnDemandRevalidate:q,revalidateOnlyGenerated:b,resolvedPathname:M,clientReferenceManifest:N,serverActionsManifest:O}=R,U=(0,o.normalizeAppPath)(x),k=!!C.routes[M]&&(y.isDev||(0,w.isRouteCacheOwner)(M,y.cacheOwner,C.routes[M])),D=!!(C.dynamicRoutes[U]||k),L=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,A,!1):t.end("This page could not be found"),null);if(D&&!_){let e=C.dynamicRoutes[U];if(e&&!1===e.fallback&&!k){if(T.adapterPath)return await L();throw new g.NoFallbackError}}let j=null;!D||y.isDev||_||(j="/index"===(j=M)?"/":j);let H=!0===y.isDev||!D,Q=D&&!H;O&&N&&(0,n.setManifestsSingleton)({page:x,clientReferenceManifest:N,serverActionsManifest:O});let F=e.method||"GET",X=(0,s.getTracer)(),$=X.getActiveScopeSpan(),z=!!(null==P?void 0:P.isWrappedByNextServer),B=!!(0,i.getRequestMeta)(e,"minimalMode"),K=(0,i.getRequestMeta)(e,"incrementalCache")||await y.getIncrementalCache(e,T,C,B);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let G={params:I,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts,useCacheTimeout:T.experimental.useCacheTimeout},cacheComponents:!!T.cacheComponents,validationLevel:T.experimental.instantInsights.validationLevel,isDraftMode:_,supportsDynamicResponse:H,incrementalCache:K,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:T.cacheLife,staticPageGenerationTimeout:T.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,i)=>y.onRequestError(e,t,a,i,P)},sharedContext:{buildId:v,deploymentId:S}},V=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),J=l.NextRequestAdapter.fromNodeNextRequest(V,(0,l.signalFromNodeResponse)(t)),Y=async({previousCacheEntry:r})=>{try{if(!B&&q&&b&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await y.handle(J,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let s=G.renderOpts.pendingWaitUntil;s&&a.waitUntil&&(a.waitUntil(s),s=void 0);let n=G.renderOpts.collectedTags;if(!D)return await (0,m.sendResponse)(V,W,i,s),null;{let e=await i.blob(),t=(0,p.toNodeOutgoingHttpHeaders)(i.headers);n&&(t[h.NEXT_CACHE_TAGS_HEADER]=n),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,a=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=h.INFINITE_CACHE?!1!==r&&r>0?T.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await y.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:q})},!1,P),t}},Z=async(i,n)=>{try{var o,u;let i=await y.handleResponse({req:e,nextConfig:T,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:b,responseGenerator:Y,waitUntil:a.waitUntil,isMinimalMode:B});if(!D)return;if((null==i||null==(o=i.value)?void 0:o.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(u=i.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",q?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let s=(0,p.fromNodeOutgoingHttpHeaders)(i.value.headers);B&&D||s.delete(h.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||s.get("Cache-Control")||s.set("Cache-Control",(0,f.getCacheControlHeader)(i.cacheControl)),await (0,m.sendResponse)(V,W,new Response(i.value.body,{headers:s,status:i.value.status||200}));return}catch(t){if(t instanceof g.NoFallbackError||await y.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:q})},!1,P),D)throw t;await (0,m.sendResponse)(V,W,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:s.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let r=X.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||U,o=`${F} ${a}`;i.setAttributes({"next.route":a,"http.route":a,"next.span_name":o}),i.updateName(o),n&&n!==i&&(n.setAttribute("http.route",a),n.updateName(o))})()}};if(z&&$)await Z($,void 0);else{let t=X.getActiveScopeSpan();await X.withPropagatedContext(e.headers,()=>X.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${x}`,kind:s.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!z)}}e.s(["handler",0,S,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:x,workUnitAsyncStorage:R})},"routeModule",0,y,"serverHooks",0,v,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,R])},74866,e=>{"use strict";var t=e.i(98043),r=e.i(43911),a=e.i(50377),i=e.i(26828),s=e.i(68426);let n=(0,a.createLogger)("exam"),o="least_practiced";function u(e,t,r=Math.random){let a=[...e];for(let e=a.length-1;e>0;e--){let t=Math.floor(r()*(e+1));[a[e],a[t]]=[a[t],a[e]]}return a.slice(0,t)}async function l(e,r){let a,i=(await t.prisma.errorItem.findMany({where:(a={userId:e,subjectId:{in:r.subjectIds},shortId:{not:null}},"unmastered"===r.scope?a.masteryLevel=0:"mastered"===r.scope&&(a.masteryLevel={gt:0}),r.tagNames&&r.tagNames.length>0&&(a.tags={some:{name:{in:r.tagNames}}}),a),select:{id:!0,shortId:!0,_count:{select:{practiceRecords:!0}}}})).map(({_count:e,...t})=>({...t,practiceCount:e.practiceRecords}));return(r.pickRule??o)==="random"?u(i,r.count):function(e,t,r=Math.random){return u(e,e.length,r).sort((e,t)=>e.practiceCount-t.practiceCount).slice(0,t)}(i,r.count)}function d(e){if(e.some(e=>"pending"===e))return"generating";let t=e.filter(e=>"ready"===e).length;return t===e.length?"ready":0===t?"failed":"partial"}function c(e){if(e.tags.length>0)return e.tags.map(e=>e.name);try{let t=JSON.parse(e.knowledgePoints||"[]");return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}async function m(e,a,i){let s=await t.prisma.examQuestion.findUnique({where:{id:e},select:{errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}}}}}});if(!s?.errorItem)return void await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:"SOURCE_DELETED"}});try{let n=await (0,r.getAIService)().generateSimilarQuestion(s.errorItem.questionText||"",c(s.errorItem),i,a,s.errorItem.gradeSemester,s.errorItem.figureSvg);await t.prisma.examQuestion.update({where:{id:e},data:{status:"ready",questionText:n.questionText,answerText:n.answerText,analysis:n.analysis,figureSvg:n.figureSvg??null,error:null}})}catch(a){let r=a instanceof Error?a.message:String(a);n.warn({questionId:e,error:r},"Exam question generation failed"),await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:r.slice(0,200)}})}}let p=new Set;async function f(e,r="zh"){if(p.has(e))return;p.add(e);let a=null;try{let s=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,title:!0,difficulty:!0,questions:{where:{status:{not:"ready"}},select:{id:!0}}}});if(!s)return;let n=s.questions.map(e=>e.id),o=n.length,u=0;o>0&&(a=(0,i.startBackgroundTask)({userId:s.userId,kind:"exam",subject:s.title,link:`/exams/${e}`,total:o})),n.length>0&&(await t.prisma.examQuestion.updateMany({where:{id:{in:n}},data:{status:"pending",error:null}}),await t.prisma.examPaper.update({where:{id:e},data:{status:"generating"}}));let l=async()=>{for(;n.length>0;)await m(n.shift(),s.difficulty,r),a?.setProgress(++u,o)};await Promise.all(Array.from({length:Math.min(3,n.length)},l));let c=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}}),p=d(c.map(e=>e.status));await t.prisma.examPaper.update({where:{id:e},data:{status:p}}),a?.setProgress(u,o,c.filter(e=>"failed"===e.status).length),"failed"===p?a?.fail("ALL_FAILED"):a?.succeed()}catch(t){n.error({paperId:e,error:t},"Exam paper generation failed"),a?.fail(t)}finally{p.delete(e)}}let h={status:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,error:!0};async function g(e,a,o,u,l="zh"){let d=await t.prisma.examQuestion.findUnique({where:{id:a},select:{paperId:!0,status:!0,questionText:!0,paper:{select:{userId:!0,title:!0,difficulty:!0}},errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}},subject:{select:{name:!0,stage:!0,subjectKey:!0}}}},_count:{select:{practiceRecords:!0}}}});if(!d||d.paperId!==e||d.paper.userId!==o)throw Error("EXAM_QUESTION_NOT_FOUND");if("pending"===d.status)throw Error("QUESTION_GENERATING");let m={userId:o,subject:d.paper.title,link:`/exams/${e}`};if("question"===u){if(d._count.practiceRecords>0)throw Error("HAS_RESULTS");let s=d.errorItem;if(!s)throw Error("SOURCE_DELETED");let n=await (0,i.trackBackgroundTask)({...m,kind:"exam"},()=>(0,r.getAIService)().generateSimilarQuestion(s.questionText||"",c(s),l,d.paper.difficulty,s.gradeSemester,s.figureSvg)),{count:o}=await t.prisma.examQuestion.updateMany({where:{id:a,practiceRecords:{none:{}}},data:{status:"ready",questionText:n.questionText,answerText:n.answerText,analysis:n.analysis,figureSvg:n.figureSvg??null,error:null}});if(0===o)throw Error("HAS_RESULTS");await w(e)}else{let e=d.questionText;if("ready"!==d.status||!e?.trim())throw Error("NO_QUESTION_TEXT");let n=d.errorItem?.subject?(0,s.resolveNotebookScope)(d.errorItem.subject):null,o=n?.subject?s.SUBJECT_DISPLAY_NAMES[n.subject]:null,u=await (0,i.trackBackgroundTask)({...m,kind:"reanswer"},()=>(0,r.getAIService)().reanswerQuestion(e,l,o,void 0,d.errorItem?.gradeSemester));if(!u.answerText.trim()&&!u.analysis.trim())throw Error("EMPTY_ANSWER");let c={answerText:u.answerText,analysis:u.analysis};await t.prisma.$transaction([t.prisma.examQuestion.update({where:{id:a},data:c}),t.prisma.practiceRecord.updateMany({where:{examQuestionId:a},data:c})])}let p=await t.prisma.examQuestion.findUnique({where:{id:a},select:h});return n.info({paperId:e,questionId:a,mode:u},"Exam question regenerated"),p}async function w(e){let r=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}});await t.prisma.examPaper.update({where:{id:e},data:{status:d(r.map(e=>e.status))}})}async function E(e,r,a,i){let s=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,difficulty:!0,questions:{select:{id:!0,errorItemId:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,errorItem:{select:{subject:{select:{name:!0}}}}}}}});if(!s||s.userId!==r)throw Error("EXAM_NOT_FOUND");let n=new Map(s.questions.map(e=>[e.id,e])),o=new Set;return await t.prisma.$transaction(async t=>{for(let{questionId:e,result:u}of i){let i=n.get(e);i?.errorItemId&&null!==u&&(await t.practiceRecord.create({data:{userId:r,errorItemId:i.errorItemId,examQuestionId:i.id,source:"exam",result:u,isCorrect:"correct"===u,createdAt:a,difficulty:s.difficulty,subject:i.errorItem?.subject?.name??null,questionText:i.questionText,answerText:i.answerText,analysis:i.analysis,figureSvg:i.figureSvg}}),o.add(i.errorItemId))}o.size>0&&await t.examPaper.update({where:{id:e},data:{resultsRecordedAt:new Date}})}),[...o]}e.s(["DEFAULT_EXAM_PICK_RULE",0,o,"EXAM_DIFFICULTIES",0,["easy","medium","hard","harder"],"EXAM_PICK_RULES",0,["least_practiced","random"],"EXAM_REGENERATE_MODES",0,["question","answer"],"EXAM_SCOPES",0,["unmastered","mastered","all"],"MAX_EXAM_QUESTIONS",0,50,"generateExamPaper",0,f,"isPaperGenerating",0,function(e){return p.has(e)},"recordExamResults",0,E,"regenerateExamQuestion",0,g,"selectSourceItems",0,l])},4752,e=>{"use strict";var t=e.i(98043),r=e.i(43911);let a=(0,e.i(50377).createLogger)("mastery"),i=["correct","wrong","not_attempted"];function s(e){return"string"==typeof e&&i.includes(e)}let n={easy:.85,medium:.95,hard:1,harder:1},o={wrong:.1,not_attempted:0};async function u(e){let i=await t.prisma.errorItem.findUnique({where:{id:e},select:{id:!0,questionText:!0,mistakeStatus:!0,tags:{select:{name:!0}},practiceRecords:{where:{result:{not:null}},orderBy:[{createdAt:"asc"},{id:"asc"}],select:{result:!0,difficulty:!0,source:!0,createdAt:!0}}}});if(!i)return;let u=i.practiceRecords.filter(e=>s(e.result)).map(e=>({date:e.createdAt.toISOString(),difficulty:e.difficulty,result:e.result,source:e.source})),l=function(e){if(0===e.length)return null;let t=.15,r=.5;return e.forEach((a,i)=>{let s=Math.pow(.7,e.length-1-i),u="correct"===a.result?n[a.difficulty||"medium"]??n.medium:o[a.result];t+=s*u,r+=s}),Math.round(t/r*100)/100}(u);if(null===l)return void await t.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:null,masteryReason:null,masterySource:null,masteryEvaluatedAt:null}});let d=l,c="",m="rule";try{let e=await (0,r.getAIService)().evaluateMastery({questionText:i.questionText||"",knowledgePoints:i.tags.map(e=>e.name),mistakeStatus:i.mistakeStatus,history:u,ruleProbability:l});d=e.probability,c=e.reason,m="ai"}catch(r){a.warn({errorItemId:e,error:r instanceof Error?r.message:String(r)},"AI mastery evaluation failed, using rule estimate");let t=u.filter(e=>"correct"===e.result).length;c=`共练习 ${u.length} 次,做对 ${t} 次(规则估算)`}await t.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:d,masteryReason:c,masterySource:m,masteryEvaluatedAt:new Date,masteryLevel:+(d>=.8)}}),a.info({errorItemId:e,probability:d,source:m},"Mastery evaluated")}let l=new Set,d=!1;async function c(){if(!d){d=!0;try{for(;l.size>0;){let[e]=l;l.delete(e);try{await u(e)}catch(t){a.error({errorItemId:e,error:t},"Mastery evaluation failed")}}}finally{d=!1}}}e.s(["PRACTICE_RESULTS",0,i,"isPracticeResult",0,s,"scheduleMasteryEvaluation",0,function(e){e.forEach(e=>l.add(e)),c()}])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1oqpwh8._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[19833,e=>e.a(async(t,r)=>{try{var a=e.i(58821),i=e.i(69719),n=e.i(63856),s=e.i(76759),o=e.i(50377),u=e.i(74866),l=t([n]);[n]=l.then?(await l)():l;let c=(0,o.createLogger)("api:exams:regenerate"),p=i.z.object({mode:i.z.enum(u.EXAM_REGENERATE_MODES),language:i.z.enum(["zh","en"]).optional()});async function d(e,{params:t}){let{id:r,questionId:i}=await t;try{let t=await (0,n.getCurrentUser)();if(!t)return(0,s.unauthorized)("Authentication required");let o=p.safeParse(await e.json().catch(()=>({})));if(!o.success)return(0,s.validationError)("Invalid regenerate request",o.error.issues);let l=await (0,u.regenerateExamQuestion)(r,i,t.id,o.data.mode,o.data.language||"zh");return a.NextResponse.json(l)}catch(t){let e=t instanceof Error?t.message:String(t);if("EXAM_QUESTION_NOT_FOUND"===e)return(0,s.notFound)("Exam question not found");if("HAS_RESULTS"===e||"QUESTION_GENERATING"===e)return(0,s.conflict)(e);if("SOURCE_DELETED"===e||"NO_QUESTION_TEXT"===e||"EMPTY_ANSWER"===e)return(0,s.badRequest)(e);return c.error({error:e},"Error regenerating exam question"),(0,s.internalError)(e.startsWith("AI_")?e.split(":")[0]:"Failed to regenerate exam question")}}e.s(["POST",0,d]),r()}catch(e){r(e)}},!1),81735,e=>{"use strict";var t=e.i(47909),r=e.i(74017),a=e.i(96250),i=e.i(59756),n=e.i(61916),s=e.i(74677),o=e.i(69741),u=e.i(16795),l=e.i(87718),d=e.i(95169),c=e.i(47587),p=e.i(66012),m=e.i(70101),g=e.i(74838),h=e.i(10372),f=e.i(93695),E=e.i(9580);e.i(52474);var w=e.i(220);let x=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/exams/[id]/questions/[questionId]/regenerate/route",pathname:"/api/exams/[id]/questions/[questionId]/regenerate",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/exams/[id]/questions/[questionId]/regenerate/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(19833),...{}}),{workAsyncStorage:R,workUnitAsyncStorage:T,serverHooks:S}=x;async function I(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),x.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let R="/api/exams/[id]/questions/[questionId]/regenerate/route";R=R.replace(/\/index$/,"")||"/";let T=await x.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!T)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:S,deploymentId:I,params:y,nextConfig:v,parsedUrl:A,isDraftMode:_,prerenderManifest:q,routerServerContext:C,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:O,clientReferenceManifest:M,serverActionsManifest:U}=T,b=(0,o.normalizeAppPath)(R),k=!!q.routes[O]&&(x.isDev||(0,E.isRouteCacheOwner)(O,x.cacheOwner,q.routes[O])),D=!!(q.dynamicRoutes[b]||k),L=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,A,!1):t.end("This page could not be found"),null);if(D&&!_){let e=q.dynamicRoutes[b];if(e&&!1===e.fallback&&!k){if(v.adapterPath)return await L();throw new f.NoFallbackError}}let Q=null;!D||x.isDev||_||(Q="/index"===(Q=O)?"/":Q);let j=!0===x.isDev||!D,H=D&&!j;U&&M&&(0,s.setManifestsSingleton)({page:R,clientReferenceManifest:M,serverActionsManifest:U});let F=e.method||"GET",X=(0,n.getTracer)(),G=X.getActiveScopeSpan(),K=!!(null==C?void 0:C.isWrappedByNextServer),$=!!(0,i.getRequestMeta)(e,"minimalMode"),z=(0,i.getRequestMeta)(e,"incrementalCache")||await x.getIncrementalCache(e,v,q,$);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let B={params:y,previewProps:q.preview,renderOpts:{experimental:{authInterrupts:!!v.experimental.authInterrupts,useCacheTimeout:v.experimental.useCacheTimeout},cacheComponents:!!v.cacheComponents,validationLevel:v.experimental.instantInsights.validationLevel,isDraftMode:_,supportsDynamicResponse:j,incrementalCache:z,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:v.cacheLife,staticPageGenerationTimeout:v.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,i)=>x.onRequestError(e,t,a,i,C)},sharedContext:{buildId:S,deploymentId:I}},W=new u.NodeNextRequest(e),V=new u.NodeNextResponse(t),Y=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(t)),J=async({previousCacheEntry:r})=>{try{if(!$&&N&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await x.handle(Y,B);e.fetchMetrics=B.renderOpts.fetchMetrics;let n=B.renderOpts.pendingWaitUntil;n&&a.waitUntil&&(a.waitUntil(n),n=void 0);let s=B.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(W,V,i,n),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);s&&(t[h.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==B.renderOpts.collectedRevalidate&&!(B.renderOpts.collectedRevalidate>=h.INFINITE_CACHE)&&B.renderOpts.collectedRevalidate,a=void 0===B.renderOpts.collectedExpire||B.renderOpts.collectedExpire>=h.INFINITE_CACHE?!1!==r&&r>0?v.expireTime:void 0:B.renderOpts.collectedExpire;return{value:{kind:w.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await x.onRequestError(e,t,{routerKind:"App Router",routePath:R,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:N})},!1,C),t}},Z=async(i,s)=>{try{var o,u;let i=await x.handleResponse({req:e,nextConfig:v,cacheKey:Q,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:q,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,responseGenerator:J,waitUntil:a.waitUntil,isMinimalMode:$});if(!D)return;if((null==i||null==(o=i.value)?void 0:o.kind)!==w.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==i||null==(u=i.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||t.setHeader("x-nextjs-cache",N?"REVALIDATED":i.isMiss?"MISS":i.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,m.fromNodeOutgoingHttpHeaders)(i.value.headers);$&&D||n.delete(h.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,g.getCacheControlHeader)(i.cacheControl)),await (0,p.sendResponse)(W,V,new Response(i.value.body,{headers:n,status:i.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await x.onRequestError(e,t,{routerKind:"App Router",routePath:b,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:N})},!1,C),D)throw t;await (0,p.sendResponse)(W,V,new Response(null,{status:500}));return}finally{(()=>{if(!i)return;let e=t.statusCode;i.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(i.setStatus({code:n.SpanStatusCode.ERROR}),i.setAttribute("error.type",e.toString()));let r=X.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==d.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route")||b,o=`${F} ${a}`;i.setAttributes({"next.route":a,"http.route":a,"next.span_name":o}),i.updateName(o),s&&s!==i&&(s.setAttribute("http.route",a),s.updateName(o))})()}};if(K&&G)await Z(G,void 0);else{let t=X.getActiveScopeSpan();await X.withPropagatedContext(e.headers,()=>X.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${R}`,kind:n.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!K)}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:T})},"routeModule",0,x,"serverHooks",0,S,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,T])},74866,e=>{"use strict";var t=e.i(98043),r=e.i(43911),a=e.i(50377),i=e.i(26828),n=e.i(68426);let s=(0,a.createLogger)("exam"),o="least_practiced";function u(e,t,r=Math.random){let a=[...e];for(let e=a.length-1;e>0;e--){let t=Math.floor(r()*(e+1));[a[e],a[t]]=[a[t],a[e]]}return a.slice(0,t)}async function l(e,r){let a,i=(await t.prisma.errorItem.findMany({where:(a={userId:e,subjectId:{in:r.subjectIds},shortId:{not:null}},"unmastered"===r.scope?a.masteryLevel=0:"mastered"===r.scope&&(a.masteryLevel={gt:0}),r.tagNames&&r.tagNames.length>0&&(a.tags={some:{name:{in:r.tagNames}}}),a),select:{id:!0,shortId:!0,_count:{select:{practiceRecords:!0}}}})).map(({_count:e,...t})=>({...t,practiceCount:e.practiceRecords}));return(r.pickRule??o)==="random"?u(i,r.count):function(e,t,r=Math.random){return u(e,e.length,r).sort((e,t)=>e.practiceCount-t.practiceCount).slice(0,t)}(i,r.count)}function d(e){if(e.some(e=>"pending"===e))return"generating";let t=e.filter(e=>"ready"===e).length;return t===e.length?"ready":0===t?"failed":"partial"}function c(e){if(e.tags.length>0)return e.tags.map(e=>e.name);try{let t=JSON.parse(e.knowledgePoints||"[]");return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch{return[]}}async function p(e,a,i){let n=await t.prisma.examQuestion.findUnique({where:{id:e},select:{errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}}}}}});if(!n?.errorItem)return void await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:"SOURCE_DELETED"}});try{let s=await (0,r.getAIService)().generateSimilarQuestion(n.errorItem.questionText||"",c(n.errorItem),i,a,n.errorItem.gradeSemester,n.errorItem.figureSvg);await t.prisma.examQuestion.update({where:{id:e},data:{status:"ready",questionText:s.questionText,answerText:s.answerText,analysis:s.analysis,figureSvg:s.figureSvg??null,error:null}})}catch(a){let r=a instanceof Error?a.message:String(a);s.warn({questionId:e,error:r},"Exam question generation failed"),await t.prisma.examQuestion.update({where:{id:e},data:{status:"failed",error:r.slice(0,200)}})}}let m=new Set;async function g(e,r="zh"){if(m.has(e))return;m.add(e);let a=null;try{let n=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,title:!0,difficulty:!0,questions:{where:{status:{not:"ready"}},select:{id:!0}}}});if(!n)return;let s=n.questions.map(e=>e.id),o=s.length,u=0;o>0&&(a=(0,i.startBackgroundTask)({userId:n.userId,kind:"exam",subject:n.title,link:`/exams/${e}`,total:o})),s.length>0&&(await t.prisma.examQuestion.updateMany({where:{id:{in:s}},data:{status:"pending",error:null}}),await t.prisma.examPaper.update({where:{id:e},data:{status:"generating"}}));let l=async()=>{for(;s.length>0;)await p(s.shift(),n.difficulty,r),a?.setProgress(++u,o)};await Promise.all(Array.from({length:Math.min(3,s.length)},l));let c=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}}),m=d(c.map(e=>e.status));await t.prisma.examPaper.update({where:{id:e},data:{status:m}}),a?.setProgress(u,o,c.filter(e=>"failed"===e.status).length),"failed"===m?a?.fail("ALL_FAILED"):a?.succeed()}catch(t){s.error({paperId:e,error:t},"Exam paper generation failed"),a?.fail(t)}finally{m.delete(e)}}let h={status:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,error:!0};async function f(e,a,o,u,l="zh"){let d=await t.prisma.examQuestion.findUnique({where:{id:a},select:{paperId:!0,status:!0,questionText:!0,paper:{select:{userId:!0,title:!0,difficulty:!0}},errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}},subject:{select:{name:!0,stage:!0,subjectKey:!0}}}},_count:{select:{practiceRecords:!0}}}});if(!d||d.paperId!==e||d.paper.userId!==o)throw Error("EXAM_QUESTION_NOT_FOUND");if("pending"===d.status)throw Error("QUESTION_GENERATING");let p={userId:o,subject:d.paper.title,link:`/exams/${e}`};if("question"===u){if(d._count.practiceRecords>0)throw Error("HAS_RESULTS");let n=d.errorItem;if(!n)throw Error("SOURCE_DELETED");let s=await (0,i.trackBackgroundTask)({...p,kind:"exam"},()=>(0,r.getAIService)().generateSimilarQuestion(n.questionText||"",c(n),l,d.paper.difficulty,n.gradeSemester,n.figureSvg)),{count:o}=await t.prisma.examQuestion.updateMany({where:{id:a,practiceRecords:{none:{}}},data:{status:"ready",questionText:s.questionText,answerText:s.answerText,analysis:s.analysis,figureSvg:s.figureSvg??null,error:null}});if(0===o)throw Error("HAS_RESULTS");await E(e)}else{let e=d.questionText;if("ready"!==d.status||!e?.trim())throw Error("NO_QUESTION_TEXT");let s=d.errorItem?.subject?(0,n.resolveNotebookScope)(d.errorItem.subject):null,o=s?.subject?n.SUBJECT_DISPLAY_NAMES[s.subject]:null,u=await (0,i.trackBackgroundTask)({...p,kind:"reanswer"},()=>(0,r.getAIService)().reanswerQuestion(e,l,o,void 0,d.errorItem?.gradeSemester));if(!u.answerText.trim()&&!u.analysis.trim())throw Error("EMPTY_ANSWER");let c={answerText:u.answerText,analysis:u.analysis};await t.prisma.$transaction([t.prisma.examQuestion.update({where:{id:a},data:c}),t.prisma.practiceRecord.updateMany({where:{examQuestionId:a},data:c})])}let m=await t.prisma.examQuestion.findUnique({where:{id:a},select:h});return s.info({paperId:e,questionId:a,mode:u},"Exam question regenerated"),m}async function E(e){let r=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}});await t.prisma.examPaper.update({where:{id:e},data:{status:d(r.map(e=>e.status))}})}async function w(e,r,a,i){let n=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,difficulty:!0,questions:{select:{id:!0,errorItemId:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,errorItem:{select:{subject:{select:{name:!0}}}}}}}});if(!n||n.userId!==r)throw Error("EXAM_NOT_FOUND");let s=new Map(n.questions.map(e=>[e.id,e])),o=new Set;return await t.prisma.$transaction(async t=>{for(let{questionId:e,result:u}of i){let i=s.get(e);i?.errorItemId&&null!==u&&(await t.practiceRecord.create({data:{userId:r,errorItemId:i.errorItemId,examQuestionId:i.id,source:"exam",result:u,isCorrect:"correct"===u,createdAt:a,difficulty:n.difficulty,subject:i.errorItem?.subject?.name??null,questionText:i.questionText,answerText:i.answerText,analysis:i.analysis,figureSvg:i.figureSvg}}),o.add(i.errorItemId))}o.size>0&&await t.examPaper.update({where:{id:e},data:{resultsRecordedAt:new Date}})}),[...o]}e.s(["DEFAULT_EXAM_PICK_RULE",0,o,"EXAM_DIFFICULTIES",0,["easy","medium","hard","harder"],"EXAM_PICK_RULES",0,["least_practiced","random"],"EXAM_REGENERATE_MODES",0,["question","answer"],"EXAM_SCOPES",0,["unmastered","mastered","all"],"MAX_EXAM_QUESTIONS",0,50,"generateExamPaper",0,g,"isPaperGenerating",0,function(e){return m.has(e)},"recordExamResults",0,w,"regenerateExamQuestion",0,f,"selectSourceItems",0,l])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1q5w9fc._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[79955,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1_gkx5x._.js"].map(r=>e.l(r))).then(()=>r(35611)))},46735,e=>{e.v(r=>Promise.all(["server/chunks/[externals]__04n7qbr._.js","server/chunks/[root-of-the-server]__0rk_yxy._.js"].map(r=>e.l(r))).then(()=>r(83085)))},58078,e=>{"use strict";e.s(["requireAdmin",0,function(e){var r;return!!e&&(r=e.user,r?.role==="admin")}])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1ve0z0w._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[91588,e=>e.a(async(t,a)=>{try{var r=e.i(58821),n=e.i(69719),i=e.i(98043),o=e.i(79832),s=e.i(13618),l=e.i(76759),u=e.i(50377),c=e.i(4752),d=e.i(19428),p=t([o]);[o]=p.then?(await p)():p;let R=(0,u.createLogger)("api:practice:record"),v=n.z.object({errorItemId:n.z.string().min(1).optional(),result:n.z.enum(c.PRACTICE_RESULTS).optional(),isCorrect:n.z.boolean().nullable().optional(),subject:n.z.string().max(50).nullable().optional(),difficulty:n.z.string().max(20).nullable().optional(),questionText:n.z.string().max(2e4).nullable().optional(),answerText:n.z.string().max(2e4).nullable().optional(),analysis:n.z.string().max(5e4).nullable().optional(),figureSvg:n.z.string().max(d.MAX_FIGURE_SVG_LENGTH).nullable().optional(),source:n.z.enum(["practice","manual"]).optional(),takenAt:n.z.string().datetime({offset:!0}).optional()});async function h(e){let t=await (0,s.getServerSession)(o.authOptions);if(!t||!t.user)return(0,l.unauthorized)();try{let a=v.safeParse(await e.json());if(!a.success)return(0,l.validationError)("Invalid practice record",a.error.issues);let{errorItemId:n,difficulty:o,questionText:s,answerText:u,analysis:p}=a.data,h=a.data.subject,R=a.data.source??"practice",g=(0,d.sanitizeFigureSvg)(a.data.figureSvg),m=a.data.result??(!0===a.data.isCorrect?"correct":!1===a.data.isCorrect?"wrong":void 0),f=t.user.id;if(n){let e=await i.prisma.errorItem.findUnique({where:{id:n},select:{userId:!0,subject:{select:{name:!0}}}});if(!e||e.userId!==f)return(0,l.notFound)("Item not found");h??=e.subject?.name??null}let w=m?"correct"===m:a.data.isCorrect,E=await i.prisma.practiceRecord.create({data:{userId:f,subject:h,difficulty:o,isCorrect:w,...n?{errorItemId:n,result:m,questionText:s,answerText:u,analysis:p,figureSvg:g,source:R}:{},...a.data.takenAt?{createdAt:new Date(a.data.takenAt)}:{}}});return n&&m&&(0,c.scheduleMasteryEvaluation)([n]),r.NextResponse.json(E)}catch(e){return R.error({error:e},"Error saving practice record"),(0,l.internalError)("Failed to save record")}}e.s(["POST",0,h]),a()}catch(e){a(e)}},!1),64225,e=>{"use strict";var t=e.i(47909),a=e.i(74017),r=e.i(96250),n=e.i(59756),i=e.i(61916),o=e.i(74677),s=e.i(69741),l=e.i(16795),u=e.i(87718),c=e.i(95169),d=e.i(47587),p=e.i(66012),h=e.i(70101),R=e.i(74838),v=e.i(10372),g=e.i(93695),m=e.i(9580);e.i(52474);var f=e.i(220);let w=new t.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/practice/record/route",pathname:"/api/practice/record",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/practice/record/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(91588),...{}}),{workAsyncStorage:E,workUnitAsyncStorage:C,serverHooks:x}=w;async function A(e,t,r){r.requestMeta&&(0,n.setRequestMeta)(e,r.requestMeta),w.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let E="/api/practice/record/route";E=E.replace(/\/index$/,"")||"/";let C=await w.prepare(e,t,{srcPage:E,multiZoneDraftMode:!1});if(!C)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:x,deploymentId:A,params:b,nextConfig:T,parsedUrl:S,isDraftMode:y,prerenderManifest:P,routerServerContext:I,isOnDemandRevalidate:N,revalidateOnlyGenerated:_,resolvedPathname:O,clientReferenceManifest:q,serverActionsManifest:H}=C,M=(0,s.normalizeAppPath)(E),U=!!P.routes[O]&&(w.isDev||(0,m.isRouteCacheOwner)(O,w.cacheOwner,P.routes[O])),k=!!(P.dynamicRoutes[M]||U),z=async()=>((null==I?void 0:I.render404)?await I.render404(e,t,S,!1):t.end("This page could not be found"),null);if(k&&!y){let e=P.dynamicRoutes[M];if(e&&!1===e.fallback&&!U){if(T.adapterPath)return await z();throw new g.NoFallbackError}}let D=null;!k||w.isDev||y||(D="/index"===(D=O)?"/":D);let j=!0===w.isDev||!k,F=k&&!j;H&&q&&(0,o.setManifestsSingleton)({page:E,clientReferenceManifest:q,serverActionsManifest:H});let L=e.method||"GET",G=(0,i.getTracer)(),K=G.getActiveScopeSpan(),$=!!(null==I?void 0:I.isWrappedByNextServer),B=!!(0,n.getRequestMeta)(e,"minimalMode"),V=(0,n.getRequestMeta)(e,"incrementalCache")||await w.getIncrementalCache(e,T,P,B);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let X={params:b,previewProps:P.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts,useCacheTimeout:T.experimental.useCacheTimeout},cacheComponents:!!T.cacheComponents,validationLevel:T.experimental.instantInsights.validationLevel,isDraftMode:y,supportsDynamicResponse:j,incrementalCache:V,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:T.cacheLife,staticPageGenerationTimeout:T.staticPageGenerationTimeout,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,a,r,n)=>w.onRequestError(e,t,r,n,I)},sharedContext:{buildId:x,deploymentId:A}},W=new l.NodeNextRequest(e),Z=new l.NodeNextResponse(t),J=u.NextRequestAdapter.fromNodeNextRequest(W,(0,u.signalFromNodeResponse)(t)),Q=async({previousCacheEntry:a})=>{try{if(!B&&N&&_&&!a)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await w.handle(J,X);e.fetchMetrics=X.renderOpts.fetchMetrics;let i=X.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let o=X.renderOpts.collectedTags;if(!k)return await (0,p.sendResponse)(W,Z,n,i),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);o&&(t[v.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let a=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=v.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,r=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=v.INFINITE_CACHE?!1!==a&&a>0?T.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:a,expire:r}}}}catch(t){throw(null==a?void 0:a.isStale)&&await w.onRequestError(e,t,{routerKind:"App Router",routePath:E,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,I),t}},Y=async(n,o)=>{try{var s,l;let n=await w.handleResponse({req:e,nextConfig:T,cacheKey:D,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:P,isRoutePPREnabled:!1,isOnDemandRevalidate:N,revalidateOnlyGenerated:_,responseGenerator:Q,waitUntil:r.waitUntil,isMinimalMode:B});if(!k)return;if((null==n||null==(s=n.value)?void 0:s.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==n||null==(l=n.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});B||t.setHeader("x-nextjs-cache",N?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),y&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,h.fromNodeOutgoingHttpHeaders)(n.value.headers);B&&k||i.delete(v.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,R.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)(W,Z,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof g.NoFallbackError||await w.onRequestError(e,t,{routerKind:"App Router",routePath:M,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:F,isOnDemandRevalidate:N})},!1,I),k)throw t;await (0,p.sendResponse)(W,Z,new Response(null,{status:500}));return}finally{(()=>{if(!n)return;let e=t.statusCode;n.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(n.setStatus({code:i.SpanStatusCode.ERROR}),n.setAttribute("error.type",e.toString()));let a=G.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==c.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=a.get("next.route")||M,s=`${L} ${r}`;n.setAttributes({"next.route":r,"http.route":r,"next.span_name":s}),n.updateName(s),o&&o!==n&&(o.setAttribute("http.route",r),o.updateName(s))})()}};if($&&K)await Y(K,void 0);else{let t=G.getActiveScopeSpan();await G.withPropagatedContext(e.headers,()=>G.trace(c.BaseServerSpan.handleRequest,{spanName:`${L} ${E}`,kind:i.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},e=>Y(e,t)),void 0,!$)}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:E,workUnitAsyncStorage:C})},"routeModule",0,w,"serverHooks",0,x,"workAsyncStorage",0,E,"workUnitAsyncStorage",0,C])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_1z_ujac._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[58139,t=>t.a(async(e,a)=>{try{var s=t.i(58821),c=t.i(98043),r=t.i(79832),i=t.i(13618),n=t.i(76759);t.i(3389);var o=t.i(88190),g=t.i(74679),p=t.i(72943),h=t.i(53163),l=t.i(33821),d=t.i(88044),u=t.i(23765),R=t.i(77723),m=t.i(71178),w=t.i(50377),E=t.i(4083),C=e([r]);[r]=C.then?(await C)():C;let y=(0,w.createLogger)("api:admin:migrate-tags");async function f(t){let e=await (0,i.getServerSession)(r.authOptions);if(!e||!e.user)return(0,n.unauthorized)();if("admin"!==e.user.role)return(0,n.forbidden)("Admin access required for tag migration");try{y.info({email:e.user.email},"Tag migration initiated");let t=0,a=0,r=0;return await c.prisma.$transaction(async s=>{y.info("Step 1: Backing up tag associations...");let c=[],i=await s.errorItem.findMany({select:{id:!0,tags:{where:{isSystem:!0},select:{name:!0,subject:!0}}}});for(let t of i)for(let e of t.tags)c.push({errorItemId:t.id,tagName:e.name,subject:e.subject});y.info({associationCount:c.length,itemCount:i.length},"Backup complete"),y.info("Step 2: Rebuilding system tags..."),await s.knowledgeTag.deleteMany({where:{isSystem:!0,subject:"math"}}),t+=await S(s,o.MATH_CURRICULUM,o.MATH_GRADE_ORDER),await s.knowledgeTag.deleteMany({where:{isSystem:!0,subject:"physics"}}),t+=await I(s,"physics",g.PHYSICS_CURRICULUM,g.PHYSICS_GRADE_ORDER),await s.knowledgeTag.deleteMany({where:{isSystem:!0,subject:"english"}}),t+=await I(s,"english",p.ENGLISH_CURRICULUM,p.ENGLISH_GRADE_ORDER),await s.knowledgeTag.deleteMany({where:{isSystem:!0,subject:"chemistry"}}),t+=await I(s,"chemistry",h.CHEMISTRY_CURRICULUM,h.CHEMISTRY_GRADE_ORDER),await s.knowledgeTag.deleteMany({where:{isSystem:!0,subject:"biology"}}),t+=await I(s,"biology",l.BIOLOGY_CURRICULUM,l.BIOLOGY_GRADE_ORDER),await s.knowledgeTag.deleteMany({where:{isSystem:!0,subject:"chinese"}}),t+=await I(s,"chinese",d.CHINESE_CURRICULUM,d.CHINESE_GRADE_ORDER),await s.knowledgeTag.deleteMany({where:{isSystem:!0,subject:"history"}}),t+=await I(s,"history",u.HISTORY_CURRICULUM,u.HISTORY_GRADE_ORDER),await s.knowledgeTag.deleteMany({where:{isSystem:!0,subject:"geography"}}),t+=await I(s,"geography",R.GEOGRAPHY_CURRICULUM,R.GEOGRAPHY_GRADE_ORDER),await s.knowledgeTag.deleteMany({where:{isSystem:!0,subject:"politics"}}),t+=await I(s,"politics",m.POLITICS_CURRICULUM,m.POLITICS_GRADE_ORDER),y.info({totalCreated:t},"Tags created"),y.info("Step 3: Restoring associations...");let n=new Map;for(let t of c){let e=n.get(t.errorItemId)||[];e.push(t),n.set(t.errorItemId,e)}for(let[t,c]of n){let i=[];for(let n of c){let c=await s.knowledgeTag.findFirst({where:{name:n.tagName,subject:n.subject,isSystem:!0},select:{id:!0}});if(c)i.push(c.id),a++;else{y.warn({tagName:n.tagName,subject:n.subject},"Tag not found, creating as custom tag");let c=await s.user.findUnique({where:{email:e.user.email},select:{id:!0}});if(c){let e=await s.knowledgeTag.findFirst({where:{name:n.tagName,subject:n.subject,userId:c.id},select:{id:!0}});if(!e){let a=await s.errorItem.findUnique({where:{id:t},select:{gradeSemester:!0}}),i=await (0,E.findParentTagIdForGrade)(a?.gradeSemester,n.subject);e=await s.knowledgeTag.create({data:{name:n.tagName,subject:n.subject,isSystem:!1,userId:c.id,parentId:i||null},select:{id:!0}}),r++}i.push(e.id),a++}}}i.length>0&&await s.errorItem.update({where:{id:t},data:{tags:{connect:i.map(t=>({id:t}))}}})}y.info({associationsRestored:a,customTagsCreated:r},"Associations restored")},{timeout:12e4}),y.info({totalCreated:t,associationsRestored:a,customTagsCreated:r},"Tag migration completed"),s.NextResponse.json({success:!0,count:t,associationsRestored:a,customTagsCreated:r,message:"Tag migration complete with associations preserved"})}catch(t){return y.error({error:t},"Tag migration error"),(0,n.internalError)("Failed to migrate tags")}}async function S(t,e,a){let s=0;for(let[c,r]of Object.entries(e)){let e=await t.knowledgeTag.create({data:{name:c,subject:"math",parentId:null,isSystem:!0,order:a[c]||99}});s++;for(let a=0;a<r.length;a++){let c=r[a],i=await t.knowledgeTag.create({data:{name:c.chapter,subject:"math",parentId:e.id,isSystem:!0,order:a+1}});s++;for(let e=0;e<c.sections.length;e++){let a=c.sections[e],r=await t.knowledgeTag.create({data:{name:a.section,subject:"math",parentId:i.id,isSystem:!0,order:e+1}});s++;for(let e=0;e<a.tags.length;e++){let c=a.tags[e];await t.knowledgeTag.create({data:{name:c,subject:"math",parentId:r.id,isSystem:!0,order:e+1}}),s++}}}}return s}async function I(t,e,a,s){let c=0;for(let[r,i]of Object.entries(a)){let a=await t.knowledgeTag.create({data:{name:r,subject:e,parentId:null,isSystem:!0,order:s[r]||99}});c++;for(let s=0;s<i.length;s++){let r=i[s],n=await t.knowledgeTag.create({data:{name:r.chapter,subject:e,parentId:a.id,isSystem:!0,order:s+1}});c++;for(let a=0;a<r.tags.length;a++){let s=r.tags[a];await t.knowledgeTag.create({data:{name:s,subject:e,parentId:n.id,isSystem:!0,order:a+1}}),c++}}}return c}t.s(["POST",0,f]),a()}catch(t){a(t)}},!1),52317,t=>{"use strict";var e=t.i(47909),a=t.i(74017),s=t.i(96250),c=t.i(59756),r=t.i(61916),i=t.i(74677),n=t.i(69741),o=t.i(16795),g=t.i(87718),p=t.i(95169),h=t.i(47587),l=t.i(66012),d=t.i(70101),u=t.i(74838),R=t.i(10372),m=t.i(93695),w=t.i(9580);t.i(52474);var E=t.i(220);let C=new e.AppRouteRouteModule({definition:{kind:a.RouteKind.APP_ROUTE,page:"/api/admin/migrate-tags/route",pathname:"/api/admin/migrate-tags",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/admin/migrate-tags/route.ts",nextConfigOutput:"standalone",userland:()=>t.r(58139),...{}}),{workAsyncStorage:f,workUnitAsyncStorage:S,serverHooks:I}=C;async function y(t,e,s){s.requestMeta&&(0,c.setRequestMeta)(t,s.requestMeta),C.isDev&&(0,c.addRequestMeta)(t,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/admin/migrate-tags/route";f=f.replace(/\/index$/,"")||"/";let S=await C.prepare(t,e,{srcPage:f,multiZoneDraftMode:!1});if(!S)return e.statusCode=400,e.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:I,deploymentId:y,params:_,nextConfig:T,parsedUrl:U,isDraftMode:A,prerenderManifest:O,routerServerContext:b,isOnDemandRevalidate:v,revalidateOnlyGenerated:M,resolvedPathname:D,clientReferenceManifest:H,serverActionsManifest:N}=S,P=(0,n.normalizeAppPath)(f),G=!!O.routes[D]&&(C.isDev||(0,w.isRouteCacheOwner)(D,C.cacheOwner,O.routes[D])),j=!!(O.dynamicRoutes[P]||G),L=async()=>((null==b?void 0:b.render404)?await b.render404(t,e,U,!1):e.end("This page could not be found"),null);if(j&&!A){let t=O.dynamicRoutes[P];if(t&&!1===t.fallback&&!G){if(T.adapterPath)return await L();throw new m.NoFallbackError}}let x=null;!j||C.isDev||A||(x="/index"===(x=D)?"/":x);let k=!0===C.isDev||!j,q=j&&!k;N&&H&&(0,i.setManifestsSingleton)({page:f,clientReferenceManifest:H,serverActionsManifest:N});let Y=t.method||"GET",B=(0,r.getTracer)(),F=B.getActiveScopeSpan(),K=!!(null==b?void 0:b.isWrappedByNextServer),$=!!(0,c.getRequestMeta)(t,"minimalMode"),V=(0,c.getRequestMeta)(t,"incrementalCache")||await C.getIncrementalCache(t,T,O,$);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let X={params:_,previewProps:O.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts,useCacheTimeout:T.experimental.useCacheTimeout},cacheComponents:!!T.cacheComponents,validationLevel:T.experimental.instantInsights.validationLevel,isDraftMode:A,supportsDynamicResponse:k,incrementalCache:V,hmrRefreshHash:(0,c.getRequestMeta)(t,"hmrRefreshHash"),cacheLifeProfiles:T.cacheLife,staticPageGenerationTimeout:T.staticPageGenerationTimeout,waitUntil:s.waitUntil,onClose:t=>{e.on("close",t)},onAfterTaskError:void 0,onInstrumentationRequestError:(e,a,s,c)=>C.onRequestError(t,e,s,c,b)},sharedContext:{buildId:I,deploymentId:y}},z=new o.NodeNextRequest(t),W=new o.NodeNextResponse(e),Z=g.NextRequestAdapter.fromNodeNextRequest(z,(0,g.signalFromNodeResponse)(e)),J=async({previousCacheEntry:a})=>{try{if(!$&&v&&M&&!a)return e.statusCode=404,e.setHeader("x-nextjs-cache","REVALIDATED"),e.end("This page could not be found"),null;let c=await C.handle(Z,X);t.fetchMetrics=X.renderOpts.fetchMetrics;let r=X.renderOpts.pendingWaitUntil;r&&s.waitUntil&&(s.waitUntil(r),r=void 0);let i=X.renderOpts.collectedTags;if(!j)return await (0,l.sendResponse)(z,W,c,r),null;{let t=await c.blob(),e=(0,d.toNodeOutgoingHttpHeaders)(c.headers);i&&(e[R.NEXT_CACHE_TAGS_HEADER]=i),!e["content-type"]&&t.type&&(e["content-type"]=t.type);let a=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,s=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=R.INFINITE_CACHE?!1!==a&&a>0?T.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:c.status,body:Buffer.from(await t.arrayBuffer()),headers:e},cacheControl:{revalidate:a,expire:s}}}}catch(e){throw(null==a?void 0:a.isStale)&&await C.onRequestError(t,e,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:v})},!1,b),e}},Q=async(c,i)=>{try{var n,o;let c=await C.handleResponse({req:t,nextConfig:T,cacheKey:x,routeKind:a.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:O,isRoutePPREnabled:!1,isOnDemandRevalidate:v,revalidateOnlyGenerated:M,responseGenerator:J,waitUntil:s.waitUntil,isMinimalMode:$});if(!j)return;if((null==c||null==(n=c.value)?void 0:n.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(o=c.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});$||e.setHeader("x-nextjs-cache",v?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),A&&e.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let r=(0,d.fromNodeOutgoingHttpHeaders)(c.value.headers);$&&j||r.delete(R.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||e.getHeader("Cache-Control")||r.get("Cache-Control")||r.set("Cache-Control",(0,u.getCacheControlHeader)(c.cacheControl)),await (0,l.sendResponse)(z,W,new Response(c.value.body,{headers:r,status:c.value.status||200}));return}catch(e){if(e instanceof m.NoFallbackError||await C.onRequestError(t,e,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:q,isOnDemandRevalidate:v})},!1,b),j)throw e;await (0,l.sendResponse)(z,W,new Response(null,{status:500}));return}finally{(()=>{if(!c)return;let t=e.statusCode;c.setAttributes({"http.status_code":t,"next.rsc":!1}),t&&t>=500&&(c.setStatus({code:r.SpanStatusCode.ERROR}),c.setAttribute("error.type",t.toString()));let a=B.getRootSpanAttributes();if(!a)return;if(a.get("next.span_type")!==p.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${a.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=a.get("next.route")||P,n=`${Y} ${s}`;c.setAttributes({"next.route":s,"http.route":s,"next.span_name":n}),c.updateName(n),i&&i!==c&&(i.setAttribute("http.route",s),i.updateName(n))})()}};if(K&&F)await Q(F,void 0);else{let e=B.getActiveScopeSpan();await B.withPropagatedContext(t.headers,()=>B.trace(p.BaseServerSpan.handleRequest,{spanName:`${Y} ${f}`,kind:r.SpanKind.SERVER,attributes:{"http.method":Y,"http.target":t.url}},t=>Q(t,e)),void 0,!K)}}t.s(["handler",0,y,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:f,workUnitAsyncStorage:S})},"routeModule",0,C,"serverHooks",0,I,"workAsyncStorage",0,f,"workUnitAsyncStorage",0,S])},88190,t=>{"use strict";let e={一年级:{upper:["简单的比较","位置关系","拼图游戏","立体图形的初步认识","加与减","简单的找规律","生活中的可能性","分类","用工具比较","找路线","多角度观察初步","骰子问题","基数与序数","图文算式","图形规律初步","简单的数图形","角的初步认识","加减法竖式","单位换算","钟面数学初步","趣题巧解一"],lower:["认识奇与偶","水量与浓度比较","火柴棒算式","移多补少","妙用加减号","七巧板","速算与巧算","钟面数学进阶","镜中对称","算式比较大小","立体图形计数","立体图形展开","图形分割","巧用人民币","图形剪拼","有趣的拆数","测量","基本应用题","重叠问题","图形观察"]},二年级:{upper:["趣题巧解二","奇与偶的应用","多角度观察进阶","有趣的乘法","图形规律进阶","有趣的除法","画图推理","时间问题","填数游戏","图形变换","整数分拆初步","图形竖式谜","移动凑倍","数规则图形","列表推理","火柴棒图案","加减法巧算","间隔趣题","错中求解","合理安排时间","排队问题"],lower:["统计","天平上的数学","年龄问题初步","有趣的搭配","等式加减法","扫雷游戏","数列规律","一笔画","加减法巧算二","平面图形认知","分类数图形","加减法竖式谜","立体图形认知","巧填算符初步","整数分拆综合","妙用倒推法","周期问题初步","和差倍问题入门","简单的经济问题","画图解鸡兔同笼"]},三年级:{upper:["乘除法巧算","枚举法中的字典排列","移多补少与等量代换","寻找隐藏周期","植树问题","复杂间隔问题","和倍与和差","归一问题","假设法解鸡兔同笼","分组法解鸡兔同笼","乘法分配律","差倍问题","多个对象和差倍","树形图","多重周期问题","复杂周期问题","数字趣题","假设法进阶","分组法进阶","等差数列初步","等差数列求和","等差数列应用","基本盈亏问题"],lower:["和差倍中的隐藏条件","复杂和差倍","假设分组综合提高","数字计数","巧填算符进阶","算符与数字","数阵图初步","盈亏条件的转化","复杂盈亏问题","四则混合运算","简单乘法竖式","简单除法竖式","简单抽屉原理","还原问题","长度计算","角度计算","找位置","阵列问题","几何图形剪拼","思维游戏"]},四年级:{upper:["整数计算综合","和差倍中的分组比较","基本直线形面积公式","字母竖式","加法原理与乘法原理","相遇问题","追及问题","数列规律计算","统筹规划","游戏策略","整数数列计算","乘法原理进阶","变倍问题","年龄问题","逻辑推理一","多位数巧算","复杂竖式","火车行程初步","火车行程进阶","底高的选取与组合","等积变形","数表规律计算","最值问题一"],lower:["从洛书到幻方","小数巧算","多人多次相遇与追及","格点图形面积计算","割补法巧算面积","横式问题","平均数问题","复杂数阵图","排列组合公式","排列组合应用","分段计算的行程问题","面积计算综合","多次往返相遇与追及","有特殊要求的挑选","捆绑法与插空法","奇偶性分析","牛吃草问题","整数裂项","容斥原理","复杂抽屉原理"]},五年级:{upper:["整除问题初步","整除问题进阶","质数与合数","环形路线","分数基本计算","直线形计算中的倍数关系","解方程与方程组","分数计算与比较大小","流水行船问题","约数与倍数","分数与循环小数","几何计数","逻辑推理二","公约数与公倍数初步","公约数与公倍数进阶","分数应用题","比例应用题","直线形计算中的比例关系","分数裂项","数字谜综合","余数的性质与计算","物不知数与同余","工程问题","列方程解应用题","燕尾模型","比较与估算"],lower:["圆与扇形初步","圆与扇形进阶","行程问题综合一","计算综合一","计数综合一","钟表问题","位值原理","水管问题","立体几何","比例计算与列表分析","正反比例的概念与应用","行程问题中的比例关系","沙漏与金字塔模型","数论相关的计数","数字谜中的计数","不确定性问题","浓度问题","经济问题","变速行程问题一","行程问题中的分段与比较"]},六年级:{upper:["比赛中的推理","计算综合二","递推计数","对应计数","进位制问题","取整问题","不定方程","复杂直线形计算","几何综合","复杂应用题串讲","间隔发车问题","复杂行程问题","概率初步","工程问题综合","整除问题综合","约数与倍数综合","整数型计算综合","最值问题二","计数综合二","计数综合三","数字谜综合二","分数百分数应用题综合","行程问题综合二","构造论证","直线形计算综合","应用题综合"],lower:["浓度与经济问题综合","余数问题综合","分数型计算综合","曲线形计算综合","抽屉原理综合","变速行程问题二"]}},a=function(t){let a={...t};for(let[s,{upper:c,lower:r}]of Object.entries(e)){let e=t[s]||[],i=new Set(e.flatMap(t=>t.sections.flatMap(t=>t.tags))),n=t=>t.filter(t=>!i.has(t));a[s]=[...e,{chapter:"课外拓展(高思)",sections:[{section:"高思上册",tags:n(c)},{section:"高思下册",tags:n(r)}]}]}return a}({一年级:[{chapter:"数的认识",sections:[{section:"100以内数的认识",tags:["100以内数的认识","基数与序数"]}]},{chapter:"基础运算",sections:[{section:"100以内加减法",tags:["100以内加法","100以内减法","连加连减"]}]},{chapter:"几何图形认识",sections:[{section:"简单图形",tags:["认识简单的平面图形","认识简单的立体图形"]}]},{chapter:"量与计量",sections:[{section:"人民币和时间",tags:["认识人民币","认识时间"]}]},{chapter:"解决问题",sections:[{section:"应用题",tags:["简单的加减法应用题"]}]},{chapter:"统计与图表",sections:[{section:"数据收集",tags:["简单数据的收集","整理和记录"]}]}],二年级:[{chapter:"数的拓展",sections:[{section:"万以内数",tags:["万以内数的认识","计数单位"]}]},{chapter:"运算深化",sections:[{section:"乘法与除法",tags:["表内乘法","表内除法","100以内加减法进阶"]}]},{chapter:"除法拓展",sections:[{section:"有余数除法",tags:["有余数的除法"]}]},{chapter:"量与计量",sections:[{section:"长度和时间",tags:["长度单位","时间单位"]}]},{chapter:"几何图形",sections:[{section:"角与变换",tags:["角的初步认识","图形的平移","图形的旋转"]}]},{chapter:"解决问题",sections:[{section:"两步计算",tags:["含有乘除法的两步计算应用题"]}]},{chapter:"统计与图表",sections:[{section:"条形统计图",tags:["简单条形统计图"]}]}],三年级:[{chapter:"大数认知",sections:[{section:"万以内数",tags:["万以内数的进一步认识"]}]},{chapter:"运算深化",sections:[{section:"乘法与加减法",tags:["多位数乘一位数","三位数加减法"]}]},{chapter:"除法拓展",sections:[{section:"一位数除法",tags:["除数是一位数的除法"]}]},{chapter:"几何与计量",sections:[{section:"周长与面积",tags:["周长的计算","面积的初步概念","面积单位"]}]},{chapter:"分数引入",sections:[{section:"分数初步",tags:["分数的初步认识"]}]},{chapter:"量与计量",sections:[{section:"质量与时间",tags:["质量单位","年月日"]}]},{chapter:"解决问题",sections:[{section:"综合应用",tags:["解决实际问题","简单的搭配问题"]}]}],四年级:[{chapter:"数的拓展",sections:[{section:"小数与大数",tags:["小数的认识和性质","亿以内数的认识"]}]},{chapter:"运算深化",sections:[{section:"运算定律",tags:["运算定律","简便运算"]}]},{chapter:"小数运算",sections:[{section:"小数四则运算",tags:["小数加减法","小数乘法","小数除法"]}]},{chapter:"几何图形",sections:[{section:"角和四边形",tags:["认识角","认识三角形","平行四边形","梯形"]}]},{chapter:"方程基础",sections:[{section:"字母表示数",tags:["用字母表示数"]}]},{chapter:"统计与图表",sections:[{section:"统计量",tags:["条形统计图","平均数"]}]}],五年级:[{chapter:"数的深化",sections:[{section:"分数与因数",tags:["分数的意义和性质","因数与倍数","质数与合数"]}]},{chapter:"分数运算",sections:[{section:"分数加减法",tags:["分数加法","分数减法","同分母分数加减法","异分母分数加减法"]}]},{chapter:"几何空间",sections:[{section:"长方体和正方体",tags:["长方体的表面积","长方体的体积","正方体的表面积","正方体的体积"]}]},{chapter:"方程与代数",sections:[{section:"简易方程",tags:["简易方程的求解"]}]},{chapter:"几何拓展",sections:[{section:"平面图形面积",tags:["平行四边形的面积","三角形的面积","梯形的面积"]}]},{chapter:"统计与图表",sections:[{section:"折线统计图",tags:["折线统计图"]}]}],六年级:[{chapter:"比与比例",sections:[{section:"比",tags:["比的认识","比的基本性质","比例"]}]},{chapter:"百分数",sections:[{section:"百分数应用",tags:["百分数的认识","百分数的应用"]}]},{chapter:"分数运算",sections:[{section:"分数乘除法",tags:["分数乘法","分数除法"]}]},{chapter:"几何空间",sections:[{section:"圆和圆柱圆锥",tags:["圆的周长","圆的面积","圆柱","圆锥"]}]},{chapter:"综合应用",sections:[{section:"综合应用题",tags:["综合应用题"]}]},{chapter:"统计与概率",sections:[{section:"统计图与概率",tags:["扇形统计图","可能性大小的判断"]}]}],七年级上:[{chapter:"第1章 有理数",sections:[{section:"1.1 正数和负数",tags:["正数和负数"]},{section:"1.2 有理数",tags:["有理数","数轴","相反数","绝对值"]},{section:"1.3 有理数的加减法",tags:["有理数的加法","有理数的减法"]},{section:"1.4 有理数的乘除法",tags:["有理数的乘法","有理数的除法","倒数"]},{section:"1.5 有理数的乘方",tags:["有理数的乘方","科学记数法","近似数和有效数字"]}]},{chapter:"第2章 整式的加减",sections:[{section:"2.1 整式",tags:["单项式","多项式","整式"]},{section:"2.2 整式的加减",tags:["同类项","合并同类项","去括号","整式的加减"]}]},{chapter:"第3章 一元一次方程",sections:[{section:"3.1 从算式到方程",tags:["方程","一元一次方程","等式的性质"]},{section:"3.2 解一元一次方程",tags:["解一元一次方程","移项","去括号","去分母"]},{section:"3.3 一元一次方程的应用",tags:["一元一次方程的应用"]}]},{chapter:"第4章 几何图形初步",sections:[{section:"4.1 几何图形",tags:["几何图形","立体图形","平面图形"]},{section:"4.2 直线、射线、线段",tags:["直线","射线","线段","两点确定一条直线"]},{section:"4.3 角",tags:["角","角的度量","余角","补角"]}]}],七年级下:[{chapter:"第5章 相交线与平行线",sections:[{section:"5.1 相交线",tags:["对顶角","邻补角","垂线","点到直线的距离"]},{section:"5.2 平行线及其判定",tags:["平行线","同位角","内错角","同旁内角"]},{section:"5.3 平行线的性质",tags:["平行线的性质"]},{section:"5.4 平移",tags:["平移"]}]},{chapter:"第6章 实数",sections:[{section:"6.1 平方根",tags:["平方根","算术平方根"]},{section:"6.2 立方根",tags:["立方根"]},{section:"6.3 实数",tags:["实数","无理数"]}]},{chapter:"第7章 平面直角坐标系",sections:[{section:"7.1 平面直角坐标系",tags:["平面直角坐标系","坐标"]},{section:"7.2 坐标方法",tags:["用坐标表示位置","用坐标表示平移"]}]},{chapter:"第8章 二元一次方程组",sections:[{section:"8.1 二元一次方程组",tags:["二元一次方程","二元一次方程组"]},{section:"8.2 代入消元法",tags:["代入消元法"]},{section:"8.3 加减消元法",tags:["加减消元法"]},{section:"8.4 二元一次方程组的应用",tags:["二元一次方程组的应用"]}]},{chapter:"第9章 不等式与不等式组",sections:[{section:"9.1 不等式",tags:["不等式","不等式的性质"]},{section:"9.2 一元一次不等式",tags:["一元一次不等式"]},{section:"9.3 一元一次不等式组",tags:["一元一次不等式组"]}]},{chapter:"第10章 数据的收集与整理",sections:[{section:"10.1 统计调查",tags:["全面调查","抽样调查"]},{section:"10.2 直方图",tags:["频数直方图"]}]}],八年级上:[{chapter:"第11章 三角形",sections:[{section:"11.1 与三角形有关的线段",tags:["三角形","三角形的边","三角形的高","中线","角平分线"]},{section:"11.2 与三角形有关的角",tags:["三角形内角和","外角"]},{section:"11.3 多边形",tags:["多边形","多边形内角和"]}]},{chapter:"第12章 全等三角形",sections:[{section:"12.1 全等三角形",tags:["全等三角形","全等三角形的性质"]},{section:"12.2 三角形全等的判定",tags:["SSS","SAS","ASA","AAS","HL"]},{section:"12.3 角平分线的性质",tags:["角平分线的性质"]}]},{chapter:"第13章 轴对称",sections:[{section:"13.1 轴对称",tags:["轴对称","轴对称图形"]},{section:"13.2 画轴对称图形",tags:["画轴对称图形","用坐标表示轴对称"]},{section:"13.3 等腰三角形",tags:["等腰三角形","等边三角形"]}]},{chapter:"第14章 整式的乘法与因式分解",sections:[{section:"14.1 整式的乘法",tags:["同底数幂的乘法","幂的乘方","积的乘方","单项式乘法","多项式乘法"]},{section:"14.2 乘法公式",tags:["平方差公式","完全平方公式"]},{section:"14.3 因式分解",tags:["因式分解","提公因式法","公式法"]}]},{chapter:"第15章 分式",sections:[{section:"15.1 分式",tags:["分式","分式的基本性质"]},{section:"15.2 分式的运算",tags:["分式的乘除","分式的加减"]},{section:"15.3 分式方程",tags:["分式方程","分式方程的应用"]}]}],八年级下:[{chapter:"第16章 二次根式",sections:[{section:"16.1 二次根式",tags:["二次根式","二次根式的性质"]},{section:"16.2 二次根式的乘除",tags:["二次根式的乘法","二次根式的除法"]},{section:"16.3 二次根式的加减",tags:["二次根式的加减","最简二次根式"]}]},{chapter:"第17章 勾股定理",sections:[{section:"17.1 勾股定理",tags:["勾股定理"]},{section:"17.2 勾股定理的逆定理",tags:["勾股定理的逆定理"]}]},{chapter:"第18章 平行四边形",sections:[{section:"18.1 平行四边形",tags:["平行四边形","平行四边形的性质","平行四边形的判定"]},{section:"18.2 特殊的平行四边形",tags:["矩形","菱形","正方形"]}]},{chapter:"第19章 一次函数",sections:[{section:"19.1 函数",tags:["函数","函数的图像"]},{section:"19.2 一次函数",tags:["一次函数","正比例函数","一次函数的图像与性质"]},{section:"19.3 一次函数与方程",tags:["用函数观点看方程","一次函数与一元一次方程","一次函数与二元一次方程组"]},{section:"19.4 一次函数与不等式",tags:["一次函数与不等式"]}]},{chapter:"第20章 数据的分析",sections:[{section:"20.1 数据的集中趋势",tags:["平均数","中位数","众数"]},{section:"20.2 数据的波动程度",tags:["极差","方差","标准差"]}]}],九年级上:[{chapter:"第21章 一元二次方程",sections:[{section:"21.1 一元二次方程",tags:["一元二次方程"]},{section:"21.2 解一元二次方程",tags:["配方法","公式法","因式分解法"]},{section:"21.3 一元二次方程的应用",tags:["一元二次方程的应用"]}]},{chapter:"第22章 二次函数",sections:[{section:"22.1 二次函数的图像和性质",tags:["二次函数","二次函数的图像","抛物线","顶点","对称轴"]},{section:"22.2 二次函数与一元二次方程",tags:["二次函数与一元二次方程"]},{section:"22.3 二次函数的应用",tags:["二次函数的应用","最值问题"]}]},{chapter:"第23章 旋转",sections:[{section:"23.1 图形的旋转",tags:["旋转","旋转的性质"]},{section:"23.2 中心对称",tags:["中心对称","中心对称图形"]}]},{chapter:"第24章 圆",sections:[{section:"24.1 圆的有关性质",tags:["圆","圆的对称性","弧","弦","圆心角"]},{section:"24.2 点和圆的位置关系",tags:["点和圆的位置关系"]},{section:"24.3 直线和圆的位置关系",tags:["直线和圆的位置关系","切线"]},{section:"24.4 弧长和扇形面积",tags:["弧长","扇形面积"]}]}],九年级下:[{chapter:"第25章 概率初步",sections:[{section:"25.1 随机事件与概率",tags:["随机事件","概率"]},{section:"25.2 用列举法求概率",tags:["列表法","树状图"]},{section:"25.3 用频率估计概率",tags:["用频率估计概率"]}]},{chapter:"第26章 反比例函数",sections:[{section:"26.1 反比例函数",tags:["反比例函数","反比例函数的图像与性质"]},{section:"26.2 反比例函数的应用",tags:["反比例函数的应用"]}]},{chapter:"第27章 相似",sections:[{section:"27.1 图形的相似",tags:["相似图形","相似多边形"]},{section:"27.2 相似三角形",tags:["相似三角形","相似三角形的判定","相似三角形的性质"]},{section:"27.3 位似",tags:["位似","位似变换"]}]},{chapter:"第28章 锐角三角函数",sections:[{section:"28.1 锐角三角函数",tags:["正弦","余弦","正切","锐角三角函数"]},{section:"28.2 解直角三角形",tags:["解直角三角形","解直角三角形的应用"]}]},{chapter:"第29章 投影与视图",sections:[{section:"29.1 投影",tags:["投影","平行投影","中心投影"]},{section:"29.2 三视图",tags:["三视图","主视图","俯视图","左视图"]}]}],高一上:[{chapter:"第1章 集合与常用逻辑用语",sections:[{section:"1.1 集合",tags:["集合","元素","子集","交集","并集","补集"]},{section:"1.2 常用逻辑用语",tags:["命题","充分条件","必要条件","全称量词","存在量词"]}]},{chapter:"第2章 一元二次函数、方程和不等式",sections:[{section:"2.1 等式性质与不等式性质",tags:["等式性质","不等式性质"]},{section:"2.2 基本不等式",tags:["基本不等式","均值不等式"]},{section:"2.3 二次函数与一元二次方程、不等式",tags:["一元二次不等式","二次函数与方程不等式"]}]},{chapter:"第3章 函数的概念与性质",sections:[{section:"3.1 函数的概念",tags:["函数","定义域","值域","函数的表示"]},{section:"3.2 函数的基本性质",tags:["单调性","奇偶性","周期性"]},{section:"3.3 幂函数",tags:["幂函数"]}]},{chapter:"第4章 指数函数与对数函数",sections:[{section:"4.1 指数",tags:["指数","指数运算"]},{section:"4.2 指数函数",tags:["指数函数","指数函数的图像与性质"]},{section:"4.3 对数",tags:["对数","对数运算"]},{section:"4.4 对数函数",tags:["对数函数","对数函数的图像与性质"]}]},{chapter:"第5章 三角函数",sections:[{section:"5.1 任意角和弧度制",tags:["任意角","弧度制"]},{section:"5.2 三角函数的概念",tags:["三角函数","正弦函数","余弦函数","正切函数"]},{section:"5.3 诱导公式",tags:["诱导公式"]},{section:"5.4 三角函数的图像与性质",tags:["正弦函数图像","y=Asin(ωx+φ)","五点作图法"]}]}],高一下:[{chapter:"第6章 平面向量及其应用",sections:[{section:"6.1 平面向量的概念",tags:["向量","向量的加法","向量的减法","数乘向量"]},{section:"6.2 平面向量的坐标",tags:["向量的坐标","向量的坐标运算"]},{section:"6.3 平面向量的数量积",tags:["数量积","向量的夹角"]},{section:"6.4 向量的应用",tags:["向量的应用"]}]},{chapter:"第7章 复数",sections:[{section:"7.1 复数的概念",tags:["复数","虚数单位","复数的代数形式"]},{section:"7.2 复数的运算",tags:["复数的加减","复数的乘除"]}]},{chapter:"第8章 立体几何初步",sections:[{section:"8.1 空间几何体",tags:["棱柱","棱锥","棱台","圆柱","圆锥","球"]},{section:"8.2 点、直线、平面之间的位置关系",tags:["空间点线面位置关系","平行","垂直"]},{section:"8.3 空间几何体的表面积与体积",tags:["表面积","体积"]}]},{chapter:"第9章 统计",sections:[{section:"9.1 随机抽样",tags:["简单随机抽样","分层随机抽样"]},{section:"9.2 用样本估计总体",tags:["频率分布直方图","茎叶图","样本估计总体"]},{section:"9.3 统计案例",tags:["回归分析","独立性检验"]}]},{chapter:"第10章 概率",sections:[{section:"10.1 随机事件与概率",tags:["随机事件","概率","古典概型"]},{section:"10.2 事件的相互独立性",tags:["独立事件","条件概率"]},{section:"10.3 随机变量",tags:["随机变量","离散型随机变量","分布列"]}]}],高二上:[{chapter:"第1章 空间向量与立体几何",sections:[{section:"1.1 空间向量及其运算",tags:["空间向量","空间向量的加减","空间向量的数量积"]},{section:"1.2 空间向量的坐标",tags:["空间直角坐标系","空间向量的坐标"]},{section:"1.3 空间向量的应用",tags:["用向量证明平行","用向量证明垂直","用向量求角","用向量求距离"]}]},{chapter:"第2章 平面解析几何",sections:[{section:"2.1 直线",tags:["直线的倾斜角与斜率","直线的方程","两直线的平行与垂直","点到直线的距离"]},{section:"2.2 圆",tags:["圆的方程","直线与圆的位置关系","圆与圆的位置关系"]},{section:"2.3 椭圆",tags:["椭圆","椭圆的标准方程","椭圆的几何性质"]},{section:"2.4 双曲线",tags:["双曲线","双曲线的标准方程","双曲线的几何性质"]},{section:"2.5 抛物线",tags:["抛物线","抛物线的标准方程","抛物线的几何性质"]}]},{chapter:"第3章 数列",sections:[{section:"3.1 数列的概念",tags:["数列","数列的通项公式"]},{section:"3.2 等差数列",tags:["等差数列","等差中项","等差数列的前n项和"]},{section:"3.3 等比数列",tags:["等比数列","等比中项","等比数列的前n项和"]},{section:"3.4 数列求和",tags:["数列求和","裂项相消","错位相减"]}]}],高二下:[{chapter:"第1章 计数原理",sections:[{section:"1.1 分类加法计数原理与分步乘法计数原理",tags:["加法原理","乘法原理"]},{section:"1.2 排列与组合",tags:["排列","排列数","组合","组合数"]},{section:"1.3 二项式定理",tags:["二项式定理","二项式系数","通项公式"]}]},{chapter:"第2章 随机变量及其分布",sections:[{section:"2.1 离散型随机变量",tags:["离散型随机变量","分布列"]},{section:"2.2 二项分布与超几何分布",tags:["二项分布","n次独立重复试验","超几何分布"]},{section:"2.3 数学期望与方差",tags:["数学期望","方差"]},{section:"2.4 正态分布",tags:["正态分布","正态曲线"]}]},{chapter:"第3章 导数及其应用",sections:[{section:"3.1 导数的概念",tags:["导数","导数的几何意义","切线"]},{section:"3.2 导数的运算",tags:["基本初等函数的导数","导数的运算法则","复合函数求导"]},{section:"3.3 导数的应用",tags:["导数与单调性","极值","最值","导数应用题"]}]}],高三:[{chapter:"第1章 导数进阶",sections:[{section:"1.1 导数与函数",tags:["导数与函数单调性","利用导数判断单调区间"]},{section:"1.2 导数与极值最值",tags:["极大值","极小值","函数的最大值","函数的最小值"]},{section:"1.3 导数综合应用",tags:["导数应用题","最优化问题","不等式证明","恒成立问题"]}]},{chapter:"第2章 坐标系与参数方程",sections:[{section:"2.1 参数方程",tags:["参数方程","参数方程与普通方程的互化"]},{section:"2.2 极坐标",tags:["极坐标系","极坐标与直角坐标的互化","极坐标方程"]}]},{chapter:"第3章 不等式选讲",sections:[{section:"3.1 绝对值不等式",tags:["绝对值不等式","绝对值不等式的解法"]},{section:"3.2 柯西不等式",tags:["柯西不等式"]},{section:"3.3 平均值不等式",tags:["算术-几何平均不等式","平均值不等式链"]}]},{chapter:"第4章 空间向量与立体几何进阶",sections:[{section:"4.1 空间向量",tags:["空间向量","空间向量的坐标","空间向量的运算"]},{section:"4.2 空间向量的应用",tags:["空间角","异面直线所成的角","直线与平面所成的角","二面角","空间距离"]}]}]});t.s(["MATH_CURRICULUM",0,a,"MATH_GRADE_ORDER",0,{一年级:1,二年级:2,三年级:3,四年级:4,五年级:5,六年级:6,七年级上:7,七年级下:8,八年级上:9,八年级下:10,九年级上:11,九年级下:12,高一上:13,高一下:14,高二上:15,高二下:16,高三:17}],88190)},3389,t=>{"use strict";t.i(88190),t.s([])},74679,t=>{"use strict";t.s(["PHYSICS_CURRICULUM",0,{八年级上:[{chapter:"机械运动",tags:["长度和时间的测量","运动的描述","运动的快慢","测量平均速度"]},{chapter:"声现象",tags:["声音的产生与传播","声音的特性","音调","响度","音色","声的利用","噪声的危害和控制"]},{chapter:"物态变化",tags:["温度","熔化和凝固","汽化和液化","升华和凝华"]},{chapter:"光现象",tags:["光的直线传播","光的反射","平面镜成像","光的折射","光的色散"]},{chapter:"透镜及其应用",tags:["透镜","生活中的透镜","凸透镜成像的规律","眼睛和眼镜","显微镜和望远镜"]}],八年级下:[{chapter:"质量与密度",tags:["质量","密度","测量物质的密度","密度与社会生活"]},{chapter:"力",tags:["力","弹力","重力"]},{chapter:"运动和力",tags:["牛顿第一定律","二力平衡","摩擦力"]},{chapter:"压强",tags:["压强","液体的压强","大气压强","流体压强与流速的关系"]},{chapter:"浮力",tags:["浮力","阿基米德原理","物体的浮沉条件及应用"]}],九年级上:[{chapter:"简单机械",tags:["杠杆","滑轮","机械效率"]},{chapter:"功和机械能",tags:["功","功率","动能和势能","机械能及其转化"]},{chapter:"内能",tags:["分子热运动","内能","比热容"]},{chapter:"内能的利用",tags:["热机","热机的效率","能量的转化和守恒"]}],九年级下:[{chapter:"电流和电路",tags:["两种电荷","电流和电路","串联和并联","电流的测量","串并联电路中电流的规律"]},{chapter:"电压和电阻",tags:["电压","串并联电路中电压的规律","电阻","变阻器"]},{chapter:"欧姆定律",tags:["电流与电压和电阻的关系","欧姆定律","电阻的测量","欧姆定律在串并联电路中的应用"]},{chapter:"电功率",tags:["电能和电功","电功率","测量小灯泡的电功率","焦耳定律","电与热","安全用电"]},{chapter:"生活用电",tags:["家庭电路","家庭电路中电流过大的原因","安全用电"]},{chapter:"电与磁",tags:["磁现象","磁场","电生磁","电磁铁","电磁继电器","电动机","磁生电"]},{chapter:"信息的传递",tags:["电话","电磁波","广播电视和移动通信","信息传递"]},{chapter:"能源与可持续发展",tags:["能源","核能","太阳能","能源与可持续发展"]}],高一上:[{chapter:"运动的描述",tags:["质点","参考系","坐标系","时间与时刻","位移","路程","速度","加速度"]},{chapter:"匀变速直线运动",tags:["匀变速直线运动规律","自由落体运动","x-t图","v-t图","运动图像"]},{chapter:"相互作用——力",tags:["重力","弹力","胡克定律","摩擦力","力的合成与分解","共点力的平衡"]},{chapter:"牛顿运动定律",tags:["牛顿第一定律","牛顿第二定律","牛顿第三定律","超重与失重","单位制"]}],高一下:[{chapter:"曲线运动",tags:["曲线运动的条件","运动的合成与分解","平抛运动"]},{chapter:"圆周运动",tags:["线速度","角速度","周期","频率","向心加速度","向心力","生活中的圆周运动"]},{chapter:"万有引力与宇宙航行",tags:["开普勒定律","万有引力定律","万有引力理论的成就","宇宙航行","卫星运动"]},{chapter:"机械能守恒定律",tags:["功","功率","重力势能","弹性势能","动能定理","机械能守恒定律","能量守恒定律"]},{chapter:"静电场及其应用",tags:["电荷","库仑定律","电场强度","电势能","电势","电势差","电场力做功","电容器"]},{chapter:"电路及其应用",tags:["电源和电流","电动势","欧姆定律","电阻定律","焦耳定律","闭合电路欧姆定律","多用电表"]}],高二上:[{chapter:"动量守恒定律",tags:["动量","冲量","动量定理","动量守恒定律","弹性碰撞","非弹性碰撞","反冲运动"]},{chapter:"机械振动",tags:["简谐运动","单摆","受迫振动","共振"]},{chapter:"机械波",tags:["波的形成与传播","波的图像","波的反射与折射","波的干涉与衍射","多普勒效应"]}],高二下:[{chapter:"磁场",tags:["磁场","磁感应强度","安培力","洛伦兹力","带电粒子在磁场中的运动"]},{chapter:"电磁感应",tags:["电磁感应现象","楞次定律","法拉第电磁感应定律","涡流","电磁阻尼与电磁驱动"]},{chapter:"交变电流",tags:["交变电流的产生","描述交变电流的物理量","变压器","电能的输送"]},{chapter:"传感器",tags:["传感器及其工作原理","常见传感器的应用"]}],高三:[{chapter:"分子动理论",tags:["分子动理论的基本内容","气体分子运动","温度与内能"]},{chapter:"气体、固体和液体",tags:["气体实验定律","理想气体","固体","液体","饱和汽与饱和汽压"]},{chapter:"热力学定律",tags:["热力学第一定律","热力学第二定律","能量守恒定律"]},{chapter:"光",tags:["光的折射","全反射","光的干涉","光的衍射","光的偏振","激光"]},{chapter:"波粒二象性",tags:["光电效应","光的波粒二象性","物质波"]},{chapter:"原子结构和原子核",tags:["原子结构","原子核","放射性元素的衰变","核力与核能","核裂变与核聚变"]},{chapter:"力学综合",tags:["运动学公式与图像","牛顿运动定律应用","曲线运动与圆周运动","万有引力与天体运动","功能关系与能量守恒","动量与能量综合"]},{chapter:"电磁学综合",tags:["静电场","恒定电流","磁场","电磁感应","交变电流","电磁感应与力学综合","带电粒子在复合场中的运动"]},{chapter:"热学",tags:["分子动理论","气体定律","热力学定律"]},{chapter:"振动与波",tags:["简谐运动","机械波","波的特性"]},{chapter:"光学",tags:["几何光学","物理光学"]},{chapter:"近代物理",tags:["光电效应","原子结构","原子核","核反应"]}]},"PHYSICS_GRADE_ORDER",0,{八年级上:1,八年级下:2,九年级上:3,九年级下:4,高一上:5,高一下:6,高二上:7,高二下:8,高三:9}])},72943,t=>{"use strict";t.s(["ENGLISH_CURRICULUM",0,{一年级:[{chapter:"语音基础",tags:["26个字母","字母发音"]},{chapter:"核心词汇",tags:["颜色","数字","家庭成员","简单日常用品"]},{chapter:"句型基础",tags:["问候","介绍","简单询问句"]},{chapter:"语法基础",tags:["人称代词","名词单数形式","Be动词"]},{chapter:"功能意念",tags:["课堂指令","表达感谢","表达道歉"]}],二年级:[{chapter:"语音深化",tags:["简单单词拼读"]},{chapter:"核心词汇",tags:["身体部位","水果食物","学校用品"]},{chapter:"句型拓展",tags:["询问年龄","表达喜好"]},{chapter:"语法深化",tags:["名词复数形式","指示代词"]},{chapter:"功能意念",tags:["询问和表达颜色","描述简单物品"]}],三年级:[{chapter:"时态引入",tags:["一般现在时","现在进行时"]},{chapter:"语法拓展",tags:["特殊疑问句","介词","情态动词"]},{chapter:"句型深化",tags:["询问地点","描述能力"]},{chapter:"功能意念",tags:["描述天气","询问时间","提出建议"]}],四年级:[{chapter:"时态深化",tags:["一般现在时动词第三人称单数","现在进行时"]},{chapter:"语法拓展",tags:["there be句型","形容词比较级","物主代词"]},{chapter:"句型深化",tags:["询问数量","描述活动"]},{chapter:"功能意念",tags:["购物","比较事物"]}],五年级:[{chapter:"时态拓展",tags:["一般过去时was/were","简单不规则动词过去式"]},{chapter:"语法深化",tags:["动词不定式","情态动词"]},{chapter:"句型深化",tags:["询问过去","表达建议"]}],六年级:[{chapter:"时态深化",tags:["现在完成时","过去时与现在完成时对比"]},{chapter:"语法进阶",tags:["状语从句","简单被动语态"]}],七年级:[{chapter:"基础语音",tags:["国际音标基础","字母发音","重音和语调"]},{chapter:"核心词法",tags:["简单人称代词","名词单复数","可数不可数名词","指示代词","Be动词用法","不定冠词a/an用法","元音音素与辅音音素区分"]},{chapter:"核心句法",tags:["简单句","陈述句","疑问句","否定句","一般现在时","情态动词can","情态动词may"]},{chapter:"功能意念",tags:["自我介绍","表达喜好","询问时间","描述地点"]}],八年级:[{chapter:"时态深化",tags:["一般过去时","规则动词变化","不规则动词变化","现在进行时","过去进行时"]},{chapter:"词法拓展",tags:["形容词比较级","形容词最高级","副词比较级","副词最高级","数词","物主代词","反身代词","量词some/any/many/much"]},{chapter:"句法拓展",tags:["祈使句","简单被动语态","并列句","动词不定式"]},{chapter:"语篇结构",tags:["记叙文","时间顺序","说明文","基础连贯表达"]},{chapter:"功能意念",tags:["表达建议","should用法","had better用法","谈论计划","描述过去经历"]}],九年级:[{chapter:"核心时态",tags:["现在完成时","has/have done","过去时与现在完成时对比","一般将来时","will do","be going to do"]},{chapter:"重要句式",tags:["复合句基础","名词性从句基础","定语从句基础","条件状语从句","if从句","原因状语从句","because从句"]},{chapter:"非谓语动词",tags:["动词不定式","动名词doing","现在分词基础"]},{chapter:"词汇系统",tags:["词根词缀基础","同义词辨析","固定搭配","短语动词"]},{chapter:"能力目标",tags:["阅读理解","主旨大意","细节定位","应用文写作","简单议论文写作"]}],高一:[{chapter:"语法体系构建",tags:["时态完整梳理","一般时态","进行时态","完成时态","将来时态","主动语态","被动语态"]},{chapter:"从句进阶",tags:["定语从句","关系代词","关系副词","名词性从句","主语从句","宾语从句","表语从句","同位语从句"]},{chapter:"非谓语深化",tags:["动词不定式作状语","动词不定式作定语","动名词用法","现在分词","过去分词"]},{chapter:"词汇拓展",tags:["3500词汇","高频词","学术词汇基础","构词法","前缀","后缀","合成词"]},{chapter:"应用能力",tags:["长难句分析","阅读速度提高","阅读准确性","段落写作","主题句","支撑句"]}],高二:[{chapter:"特殊结构",tags:["虚拟语气","条件句虚拟","名词性从句虚拟","倒装句","部分倒装","完全倒装"]},{chapter:"状语从句群",tags:["时间状语从句","地点状语从句","原因状语从句","条件状语从句","目的状语从句","结果状语从句","让步状语从句","比较状语从句"]},{chapter:"语篇分析",tags:["议论文逻辑结构","说明文逻辑结构","论证方法","修辞手法","比喻","排比"]},{chapter:"跨文化交际",tags:["英美文化背景","交际策略","语用学基础"]},{chapter:"高级写作",tags:["议论文写作","立论","驳论","应用文报告","应用文评论","逻辑性","连贯性"]}],高三:[{chapter:"语法精炼",tags:["易错语法点辨析","非谓语作状语","独立主格结构","强调句"]},{chapter:"阅读深度",tags:["推理判断","作者意图","文章结构理解","篇章衔接","连贯词"]},{chapter:"词汇辨析",tags:["近义词辨析","多义词辨析","形近词辨析","固定搭配","习语Idioms"]},{chapter:"听力与口语",tags:["长篇听力理解","辩论技巧","演讲技巧","流利度","准确性"]},{chapter:"综合写作",tags:["任务型写作","概要写作","写作模板","高级表达"]}]},"ENGLISH_GRADE_ORDER",0,{一年级:1,二年级:2,三年级:3,四年级:4,五年级:5,六年级:6,七年级:7,八年级:8,九年级:9,高一:10,高二:11,高三:12}])},53163,t=>{"use strict";t.s(["CHEMISTRY_CURRICULUM",0,{八年级:[{chapter:"物质的组成和结构",tags:["物质的分类","纯净物","混合物","分子","原子","离子","元素","物质的构成","原子结构示意图"]},{chapter:"化学变化和基本反应类型",tags:["化学变化与物理变化的区别","化学反应的实质","质量守恒定律","化合反应","分解反应","置换反应","复分解反应"]},{chapter:"化学方程式",tags:["化学方程式的书写与配平","根据化学方程式的简单计算"]},{chapter:"常见物质",tags:["氧气的性质和制法","空气的组成"]}],九年级:[{chapter:"碳和碳的氧化物",tags:["碳单质的性质和用途","二氧化碳的性质和制法","一氧化碳的毒性和可燃性","碳循环"]},{chapter:"金属与金属材料",tags:["金属的物理性质","金属的化学性质","金属与氧气反应","金属与酸反应","金属与盐溶液反应","金属活动性顺序表及其应用","铁的冶炼","合金"]},{chapter:"酸、碱、盐",tags:["酸碱指示剂","酸的通性","碱的通性","中和反应","盐的性质","化学肥料"]},{chapter:"溶液",tags:["溶解现象","溶解度","饱和溶液与不饱和溶液","溶液的浓度","质量分数","溶液的配制"]}],高一上:[{chapter:"物质的量",tags:["摩尔","阿伏加德罗常数","摩尔质量","气体摩尔体积","物质的量在化学计算中的应用"]},{chapter:"物质结构与元素周期律",tags:["元素周期表","原子结构","核外电子排布","元素性质的递变规律","化学键","离子键","共价键"]},{chapter:"离子反应与电解质",tags:["电离","电解质与非电解质","离子反应","离子方程式的书写"]},{chapter:"氧化还原反应",tags:["氧化还原反应概念","化合价升降","氧化剂与还原剂","氧化还原反应的配平"]},{chapter:"化学能与热能",tags:["反应热","焓变","热化学方程式","能源"]}],高一下:[{chapter:"非金属及其化合物",tags:["卤素","氮及其化合物","硝酸","氨","硫及其化合物","硫酸","二氧化硫","硅及其化合物"]},{chapter:"金属及其化合物",tags:["钠及其化合物","铝及其化合物","铁及其化合物","铜及其化合物","常见金属单质性质"]},{chapter:"化学反应速率与化学平衡",tags:["化学反应速率的表示","影响反应速率的因素","化学平衡状态","平衡移动原理","勒夏特列原理"]},{chapter:"水溶液中的离子平衡",tags:["水的电离","溶液的pH","盐类水解","缓冲溶液"]},{chapter:"有机化学基础",tags:["有机物的概念","烃","烷烃","烯烃","炔烃","芳香烃","官能团","同分异构体","醇","酚","羧酸","酯"]}],高二上:[{chapter:"原子结构与性质",tags:["核外电子运动状态","原子轨道","能级","电离能","电负性"]},{chapter:"分子结构与性质",tags:["价层电子对互斥理论","VSEPR","杂化轨道理论","分子空间构型","分子极性","分子间作用力","范德华力","氢键"]},{chapter:"晶体结构",tags:["晶体的类型与性质","分子晶体","原子晶体","离子晶体","金属晶体","晶胞的计算"]}],高二下:[{chapter:"化学反应速率进阶",tags:["反应速率理论","碰撞理论","活化能","反应机理"]},{chapter:"化学平衡进阶",tags:["化学平衡常数K","多重平衡","平衡条件的改变"]},{chapter:"电化学",tags:["原电池","电解池","电极反应","电化学腐蚀与防护","燃料电池"]},{chapter:"离子平衡进阶",tags:["弱电解质的电离平衡常数","沉淀溶解平衡"]}],高三:[{chapter:"有机合成与高分子",tags:["常见有机反应类型","取代反应","加成反应","消去反应","聚合反应","氧化反应","有机合成路线设计","高分子化合物结构与性质"]},{chapter:"物质的检验与分离",tags:["常见官能团的检验","有机物的分离与提纯","光谱分析","核磁共振","质谱"]},{chapter:"化学实验与技术",tags:["气体制备与净化","容量瓶配制溶液","滴定操作","实验安全"]},{chapter:"物质的量与化学计算",tags:["混合物计算","过量反应","差量法","综合计算"]},{chapter:"元素化合物性质",tags:["无机物性质的交叉与推断","框图题分析"]},{chapter:"化学平衡与反应原理",tags:["速率平衡综合","电离水解综合","电化学综合"]},{chapter:"有机化学综合",tags:["有机物的推断","结构简式","同分异构体书写","有机合成路线设计"]}]},"CHEMISTRY_GRADE_ORDER",0,{八年级:1,九年级:2,高一上:3,高一下:4,高二上:5,高二下:6,高三:7}])},33821,t=>{"use strict";t.s(["BIOLOGY_CURRICULUM",0,{七年级:[{chapter:"生物圈",tags:["生物的生存环境","生物与环境的关系","生物圈是最大的生态系统"]},{chapter:"细胞",tags:["细胞的结构","植物细胞","动物细胞","细胞核与遗传","细胞的分裂与分化"]},{chapter:"生物体的结构层次",tags:["细胞","组织","器官","系统","个体","植物体","动物体"]},{chapter:"植物的生命活动",tags:["种子植物","开花和结果","植株的生长","光合作用","呼吸作用","蒸腾作用"]},{chapter:"动物的生命活动",tags:["动物的运动","动物的呼吸","动物的消化","动物的循环","动物的排泄","神经系统和内分泌系统"]},{chapter:"生物的生殖发育和遗传",tags:["生物的生殖方式","两栖动物的变态发育","昆虫的变态发育","遗传与变异"]},{chapter:"人体的健康",tags:["青春期与健康","健康的生活方式","传染病的预防"]}],八年级:[{chapter:"生物的分类",tags:["生物分类的依据","界门纲目科属种","病毒","细菌","真菌"]},{chapter:"植物界",tags:["藻类","苔藓","蕨类植物","种子植物","裸子植物","被子植物"]},{chapter:"动物界",tags:["无脊椎动物","腔肠动物","扁形动物","线形动物","环节动物","软体动物","节肢动物","脊椎动物","鱼类","两栖类","爬行类","鸟类","哺乳类"]},{chapter:"生物的进化",tags:["生物进化的证据","化石","自然选择学说","生物进化的趋势"]}],九年级:[{chapter:"生态系统",tags:["生态系统的组成","生物成分","非生物成分","食物链和食物网","生态平衡"]},{chapter:"生物多样性",tags:["生物多样性的内涵","基因多样性","物种多样性","生态系统多样性","保护生物多样性的意义和措施"]},{chapter:"生物技术",tags:["发酵技术","转基因技术","克隆技术","生物技术与社会伦理"]}],高一上:[{chapter:"走近细胞",tags:["细胞学说的建立","原核细胞与真核细胞"]},{chapter:"细胞的物质基础",tags:["组成细胞的元素和化合物","水","无机盐","糖类","脂质","蛋白质","核酸"]},{chapter:"细胞的结构",tags:["细胞膜","细胞质","细胞核","细胞器","线粒体","叶绿体","核糖体","内质网","高尔基体","溶酶体","液泡"]},{chapter:"细胞的代谢",tags:["酶的特性和作用","ATP是细胞的能量通货"]},{chapter:"细胞的生命历程",tags:["细胞的增殖","有丝分裂","细胞的分化","细胞的衰老和凋亡"]}],高一下:[{chapter:"遗传的物质基础",tags:["DNA是主要的遗传物质","DNA的结构","DNA的复制"]},{chapter:"基因的表达",tags:["基因","遗传信息的转录","遗传信息的翻译","基因对性状的控制"]},{chapter:"孟德尔的遗传定律",tags:["分离定律","自由组合定律","性状分离比的解释"]},{chapter:"伴性遗传与人类遗传病",tags:["伴性遗传","人类遗传病的类型","遗传病调查"]},{chapter:"生物的变异",tags:["基因突变","染色体变异","基因重组"]},{chapter:"生物的进化",tags:["种群是生物进化的基本单位","突变和基因重组产生原材料","自然选择决定进化方向"]}],高二上:[{chapter:"内环境与稳态",tags:["内环境的组成","内环境是细胞与外界环境进行物质交换的媒介","稳态的意义"]},{chapter:"神经调节与体液调节",tags:["神经调节","反射弧","兴奋的传导","体液调节","激素调节","甲状腺激素","胰岛素"]},{chapter:"生态系统的结构和功能",tags:["生态系统的结构","生态系统的组成成分","营养结构","能量流动","物质循环"]},{chapter:"生态系统的稳定性",tags:["生态系统的抵抗力稳定性","恢复力稳定性","生态系统保护"]},{chapter:"人口增长与环境",tags:["人口增长对生态环境的影响","可持续发展"]}],高二下:[{chapter:"实验设计与操作",tags:["生物学实验的基本方法","显微镜的使用","实验数据的处理"]},{chapter:"细胞的代谢实验",tags:["酶的特性实验","影响光合作用的因素实验","影响呼吸作用的因素实验"]},{chapter:"遗传与变异实验",tags:["孟德尔遗传定律的模拟","染色体的观察"]},{chapter:"种群与群落",tags:["种群密度的调查","群落演替","物种丰富度的测量"]},{chapter:"基因工程",tags:["基因工程的原理和操作","基因工程的应用"]},{chapter:"细胞工程",tags:["植物组织培养","动物细胞培养","动物细胞融合","单克隆抗体"]},{chapter:"胚胎工程",tags:["体外受精","胚胎移植","胚胎分割","胚胎干细胞"]},{chapter:"生态工程",tags:["生态工程的基本原理","湿地生态工程","农村生态工程","城市生态工程"]}],高三:[{chapter:"疾病与免疫",tags:["免疫系统的组成和功能","非特异性免疫","特异性免疫","免疫失调","艾滋病","过敏反应"]},{chapter:"生物学史",tags:["生物学重要发展历程","生物学家的贡献"]},{chapter:"生命科学前沿",tags:["脑科学","干细胞研究","基因组学"]},{chapter:"细胞与分子",tags:["物质基础与结构","细胞的代谢","光合作用","呼吸作用","细胞增殖与生命历程"]},{chapter:"遗传与变异综合",tags:["遗传定律的应用","基因的表达与调控","生物的变异分析","遗传图谱分析"]},{chapter:"稳态与调节",tags:["内环境稳态","神经与体液调节综合","动物激素调节","植物激素调节"]},{chapter:"生态学综合",tags:["生态系统的结构和功能","生态系统的稳定性","种群和群落的特征"]},{chapter:"生物技术综合",tags:["基因工程流程","细胞工程流程","胚胎工程应用"]}]},"BIOLOGY_GRADE_ORDER",0,{七年级:1,八年级:2,九年级:3,高一上:4,高一下:5,高二上:6,高二下:7,高三:8}])},88044,t=>{"use strict";t.s(["CHINESE_CURRICULUM",0,{七年级:[],八年级:[],九年级:[],高一上:[],高一下:[],高二上:[],高二下:[],高三:[]},"CHINESE_GRADE_ORDER",0,{七年级:1,八年级:2,九年级:3,高一上:4,高一下:5,高二上:6,高二下:7,高三:8}])},23765,t=>{"use strict";t.s(["HISTORY_CURRICULUM",0,{七年级:[],八年级:[],九年级:[],高一上:[],高一下:[],高二上:[],高二下:[],高三:[]},"HISTORY_GRADE_ORDER",0,{七年级:1,八年级:2,九年级:3,高一上:4,高一下:5,高二上:6,高二下:7,高三:8}])},77723,t=>{"use strict";t.s(["GEOGRAPHY_CURRICULUM",0,{七年级:[],八年级:[],九年级:[],高一上:[],高一下:[],高二上:[],高二下:[],高三:[]},"GEOGRAPHY_GRADE_ORDER",0,{七年级:1,八年级:2,九年级:3,高一上:4,高一下:5,高二上:6,高二下:7,高三:8}])},71178,t=>{"use strict";t.s(["POLITICS_CURRICULUM",0,{七年级:[],八年级:[],九年级:[],高一上:[],高一下:[],高二上:[],高二下:[],高三:[]},"POLITICS_GRADE_ORDER",0,{七年级:1,八年级:2,九年级:3,高一上:4,高一下:5,高二上:6,高二下:7,高三:8}])}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=_211va-d._.js.map
|