wrong-notebook 2026.10.22 → 2026.10.23
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 -1
- package/.next/app-path-routes-manifest.json +0 -1
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/routes-manifest.json +0 -8
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin/page.js.nft.json +1 -1
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin/user/[id]/page.js.nft.json +1 -1
- package/.next/server/app/admin/user/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/admin/dashboard/route.js +8 -2
- package/.next/server/app/api/admin/dashboard/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/migrate-tags/route.js +1 -1
- package/.next/server/app/api/admin/migrate-tags/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/system-reset/route.js +2 -2
- package/.next/server/app/api/admin/system-reset/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/users/[id]/detail/route.js +9 -2
- package/.next/server/app/api/admin/users/[id]/detail/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/users/[id]/route.js +1 -1
- package/.next/server/app/api/admin/users/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/admin/users/route.js +1 -1
- package/.next/server/app/api/admin/users/route.js.nft.json +1 -1
- package/.next/server/app/api/ai/models/route.js +5 -5
- package/.next/server/app/api/ai/models/route.js.nft.json +1 -1
- package/.next/server/app/api/ai/test/route.js +6 -6
- package/.next/server/app/api/ai/test/route.js.nft.json +1 -1
- package/.next/server/app/api/analytics/route.js +3 -3
- package/.next/server/app/api/analytics/route.js.nft.json +1 -1
- package/.next/server/app/api/analyze/route.js +7 -7
- package/.next/server/app/api/analyze/route.js.nft.json +1 -1
- package/.next/server/app/api/auth/[...nextauth]/route.js +1 -1
- package/.next/server/app/api/auth/[...nextauth]/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/delete/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/delete/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/figure/route.js +6 -6
- package/.next/server/app/api/error-items/[id]/figure/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/fix-latex/route.js +7 -7
- package/.next/server/app/api/error-items/[id]/fix-latex/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/geogebra/route.js +7 -7
- package/.next/server/app/api/error-items/[id]/geogebra/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/image/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/image/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/notes/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/notes/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/practice-records/route.js +2 -2
- package/.next/server/app/api/error-items/[id]/practice-records/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/reanswer/route.js +8 -8
- package/.next/server/app/api/error-items/[id]/reanswer/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/retag/route.js +6 -6
- package/.next/server/app/api/error-items/[id]/retag/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/route.js +1 -1
- package/.next/server/app/api/error-items/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/[id]/svg-animation/route.js +8 -8
- package/.next/server/app/api/error-items/[id]/svg-animation/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/batch-delete/route.js +2 -2
- package/.next/server/app/api/error-items/batch-delete/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/clear/route.js +2 -2
- package/.next/server/app/api/error-items/clear/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/list/route.js +4 -4
- package/.next/server/app/api/error-items/list/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/route.js +8 -8
- package/.next/server/app/api/error-items/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/short/[shortId]/route.js +1 -1
- package/.next/server/app/api/error-items/short/[shortId]/route.js.nft.json +1 -1
- package/.next/server/app/api/error-items/similarity/route.js +2 -2
- package/.next/server/app/api/error-items/similarity/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js +7 -7
- package/.next/server/app/api/exams/[id]/questions/[questionId]/regenerate/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/[id]/results/route.js +6 -6
- package/.next/server/app/api/exams/[id]/results/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/[id]/retry/route.js +7 -7
- package/.next/server/app/api/exams/[id]/retry/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/[id]/route.js +7 -7
- package/.next/server/app/api/exams/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/exams/route.js +7 -7
- package/.next/server/app/api/exams/route.js.nft.json +1 -1
- package/.next/server/app/api/export/route.js +2 -2
- package/.next/server/app/api/export/route.js.nft.json +1 -1
- package/.next/server/app/api/geogebra-analyze/route.js +5 -5
- package/.next/server/app/api/geogebra-analyze/route.js.nft.json +1 -1
- package/.next/server/app/api/health/route.js.nft.json +1 -1
- package/.next/server/app/api/import/route.js +7 -7
- package/.next/server/app/api/import/route.js.nft.json +1 -1
- package/.next/server/app/api/logs/frontend/route.js +2 -2
- package/.next/server/app/api/logs/frontend/route.js.nft.json +1 -1
- package/.next/server/app/api/notebooks/[id]/retag/route.js +3 -3
- package/.next/server/app/api/notebooks/[id]/retag/route.js.nft.json +1 -1
- package/.next/server/app/api/notebooks/[id]/route.js +2 -2
- package/.next/server/app/api/notebooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/notebooks/route.js +1 -1
- package/.next/server/app/api/notebooks/route.js.nft.json +1 -1
- package/.next/server/app/api/openclaw/batch-upload/route.js +7 -7
- package/.next/server/app/api/openclaw/batch-upload/route.js.nft.json +1 -1
- package/.next/server/app/api/practice/generate/route.js +5 -5
- package/.next/server/app/api/practice/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/practice/record/[id]/route.js +5 -5
- package/.next/server/app/api/practice/record/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/practice/record/route.js +7 -7
- package/.next/server/app/api/practice/record/route.js.nft.json +1 -1
- package/.next/server/app/api/reanswer/route.js +7 -7
- package/.next/server/app/api/reanswer/route.js.nft.json +1 -1
- package/.next/server/app/api/register/route.js.nft.json +1 -1
- package/.next/server/app/api/register/status/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/route.js +3 -3
- package/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/stats/practice/clear/route.js +2 -2
- package/.next/server/app/api/stats/practice/clear/route.js.nft.json +1 -1
- package/.next/server/app/api/stats/practice/route.js +1 -1
- package/.next/server/app/api/stats/practice/route.js.nft.json +1 -1
- package/.next/server/app/api/tags/route.js +2 -2
- package/.next/server/app/api/tags/route.js.nft.json +1 -1
- package/.next/server/app/api/tags/stats/route.js +2 -2
- package/.next/server/app/api/tags/stats/route.js.nft.json +1 -1
- package/.next/server/app/api/tags/suggestions/route.js +1 -1
- package/.next/server/app/api/tags/suggestions/route.js.nft.json +1 -1
- package/.next/server/app/api/tasks/route.js +2 -2
- package/.next/server/app/api/tasks/route.js.nft.json +1 -1
- package/.next/server/app/api/user/route.js +2 -2
- package/.next/server/app/api/user/route.js.nft.json +1 -1
- package/.next/server/app/api/version/route.js.nft.json +1 -1
- package/.next/server/app/error-items/[id]/page.js.nft.json +1 -1
- package/.next/server/app/error-items/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/exams/[id]/page.js.nft.json +1 -1
- package/.next/server/app/exams/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/exams/[id]/print/page.js.nft.json +1 -1
- package/.next/server/app/exams/[id]/print/page_client-reference-manifest.js +1 -1
- package/.next/server/app/exams/page.js.nft.json +1 -1
- package/.next/server/app/exams/page_client-reference-manifest.js +1 -1
- package/.next/server/app/latex-test/page.js.nft.json +1 -1
- package/.next/server/app/latex-test/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login/page.js.nft.json +1 -1
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
- package/.next/server/app/manifest.webmanifest.body +1 -1
- package/.next/server/app/notebooks/[id]/add/page.js.nft.json +1 -1
- package/.next/server/app/notebooks/[id]/add/page_client-reference-manifest.js +1 -1
- package/.next/server/app/notebooks/[id]/page.js.nft.json +1 -1
- package/.next/server/app/notebooks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/notebooks/page.js.nft.json +1 -1
- package/.next/server/app/notebooks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/practice/page.js.nft.json +1 -1
- package/.next/server/app/practice/page_client-reference-manifest.js +1 -1
- package/.next/server/app/print-preview/page.js.nft.json +1 -1
- package/.next/server/app/print-preview/page_client-reference-manifest.js +1 -1
- package/.next/server/app/register/page.js.nft.json +1 -1
- package/.next/server/app/register/page_client-reference-manifest.js +1 -1
- package/.next/server/app/stats/page.js.nft.json +1 -1
- package/.next/server/app/stats/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tags/page.js.nft.json +1 -1
- package/.next/server/app/tags/page_client-reference-manifest.js +1 -1
- package/.next/server/app-paths-manifest.json +0 -1
- package/.next/server/chunks/{[externals]__1735khz._.js → [externals]__0jzwjtl._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0be5c5r._.js → [root-of-the-server]__0-2l_pu._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__02j1w81._.js → [root-of-the-server]__00moo9h._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__03nfvnm._.js → [root-of-the-server]__012xcq-._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__01bzczj._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0bqawi0._.js → [root-of-the-server]__02pqrw_._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0nqbham._.js → [root-of-the-server]__033ri9p._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__04pjde6._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1u-1vx4._.js → [root-of-the-server]__064krqp._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__07iraov._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__16begv4._.js → [root-of-the-server]__07q7nsp._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0jaawra._.js → [root-of-the-server]__0_unb90._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0gp88gz._.js → [root-of-the-server]__0a1zwxf._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0k-nf6a._.js → [root-of-the-server]__0aefi10._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0cfjgye._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1hpwwxw._.js → [root-of-the-server]__0d-37yj._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0d2kpnm._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0k-p1pj._.js → [root-of-the-server]__0dqgi36._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0mqorxb._.js → [root-of-the-server]__0dz5c04._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0vhjihq._.js → [root-of-the-server]__0e_u82_._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0obb4y-._.js → [root-of-the-server]__0f3jyg0._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1413v0e._.js → [root-of-the-server]__0gwwa9b._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__0lrdm1u._.js → [root-of-the-server]__0hars8c._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1h09r50._.js → [root-of-the-server]__0iozebm._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0k-5uu2._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1csfdxc._.js → [root-of-the-server]__0k3mm05._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0l-xu_t._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0inxsnu._.js → [root-of-the-server]__0lggrcf._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0m0eall._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__06_nln5._.js → [root-of-the-server]__0m37xyb._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0m8p-6f._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1m4-ab6._.js → [root-of-the-server]__0pa47kn._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__0r42_o7._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0rgjh3q._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0scij0p._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0sixhu9._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0sj18kk._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0sp4_zo._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__0t2o8v-._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__18zrkky._.js → [root-of-the-server]__0w58v6b._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0wp40ty._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0lro5a7._.js → [root-of-the-server]__0wsj4a_._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0u58zap._.js → [root-of-the-server]__0wvvsah._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1v6nwhq._.js → [root-of-the-server]__0xg5h56._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__0zpazf3._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__06h5afw._.js → [root-of-the-server]__10hs-qn._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1j6mx-v._.js → [root-of-the-server]__119xork._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__11_-ncy._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__11jhplo._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__122xu-0._.js +5 -5
- package/.next/server/chunks/{[root-of-the-server]__0fnyu4s._.js → [root-of-the-server]__15y1l96._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1pplzr1._.js → [root-of-the-server]__16hnc6-._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__17i9sje._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1aaux7e._.js → [root-of-the-server]__19_wn9u._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1cn6rlb._.js → [root-of-the-server]__1_hp3ol._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1_ogacf._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1nwf3ua._.js → [root-of-the-server]__1a4-26x._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1b6i9mu._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1b_y2wk._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1lct0vi._.js → [root-of-the-server]__1bl7t8i._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1kqv61m._.js → [root-of-the-server]__1c0vatt._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1c7a0rs._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1chx4lo._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1sdtn83._.js → [root-of-the-server]__1cngnud._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__19vj8qy._.js → [root-of-the-server]__1d82zkk._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1ezju_2._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1fc23i5._.js +122 -0
- package/.next/server/chunks/[root-of-the-server]__1flnfu4._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1gya7jq._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1hng_h2._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__1rsn804._.js → [root-of-the-server]__1i40psm._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1ijkds_._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1j4v2e3._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1kpo44g._.js +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1oup682._.js → [root-of-the-server]__1lbcdia._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1g1wi9i._.js → [root-of-the-server]__1m86czr._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__05s4wut._.js → [root-of-the-server]__1mnpqkx._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1cceu4b._.js → [root-of-the-server]__1n4b6nb._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__0bsw5c9._.js → [root-of-the-server]__1nmrlew._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1o34kp3._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0c59gc3._.js → [root-of-the-server]__1q7yl7l._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1gmc_uw._.js → [root-of-the-server]__1qv60vg._.js} +1 -1
- package/.next/server/chunks/{[root-of-the-server]__1mkpya8._.js → [root-of-the-server]__1ry8uat._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1ezwxao._.js → [root-of-the-server]__1s2rww3._.js} +1 -1
- package/.next/server/chunks/[root-of-the-server]__1svvf40._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1tk0-4v._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1v-71me._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1vw740y._.js +5 -5
- package/.next/server/chunks/[root-of-the-server]__1x_ud_-._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1yt_xxr._.js +3 -0
- package/.next/server/chunks/_008zx49._.js +1 -1
- package/.next/server/chunks/_011-ll5._.js +1 -1
- package/.next/server/chunks/_0gxi3zr._.js +1 -1
- package/.next/server/chunks/_0lz3t4l._.js +12 -12
- package/.next/server/chunks/{_1e1h1f1._.js → _0n36ev0._.js} +1 -1
- package/.next/server/chunks/_0oc8oe4._.js +3 -0
- package/.next/server/chunks/_0rjzgi0._.js +3 -0
- package/.next/server/chunks/_10y361h._.js +3 -0
- package/.next/server/chunks/_14tz_k9._.js +1 -1
- package/.next/server/chunks/{_0c5hvv3._.js → _15neond._.js} +3 -3
- package/.next/server/chunks/_16jdov0._.js +1 -1
- package/.next/server/chunks/_1_ns7o3._.js +1 -1
- package/.next/server/chunks/_1a1aqmi._.js +1 -1
- package/.next/server/chunks/_1b7qjlv._.js +1 -1
- package/.next/server/chunks/_1m-yyz-._.js +1 -1
- package/.next/server/chunks/_1n1xsqj._.js +3 -0
- package/.next/server/chunks/_1z_ujac._.js +1 -1
- package/.next/server/chunks/{_0frix22._.js → _2194yr7._.js} +3 -3
- package/.next/server/chunks/src_0tzpy5j._.js +1 -1
- package/.next/server/chunks/src_lib_ai_prompts_ts_0z36zms._.js +12 -11
- package/.next/server/chunks/ssr/[root-of-the-server]__00gewu3._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__03psbtz._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0hzktoi._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0skyo1a._.js +3 -0
- package/.next/server/chunks/ssr/_07ls0n_._.js +1 -1
- package/.next/server/chunks/ssr/_0sf1gd9._.js +1 -1
- package/.next/server/chunks/ssr/_11ut-6_._.js +3 -0
- package/.next/server/chunks/ssr/{_12c20v5._.js → _1aot_70._.js} +1 -1
- package/.next/server/chunks/ssr/src_1gayunq._.js +1 -1
- package/.next/server/chunks/ssr/src_1o363ao._.js +1 -1
- package/.next/server/chunks/ssr/src_app_admin_page_tsx_0ublbd0._.js +1 -1
- package/.next/server/chunks/ssr/src_app_error-items_[id]_page_tsx_04xwwdm._.js +1 -1
- package/.next/server/chunks/ssr/src_app_notebooks_[id]_page_tsx_08njm-5._.js +1 -1
- package/.next/server/chunks/ssr/src_components_providers_tsx_09kw-mv._.js +1 -1
- package/.next/server/edge/chunks/node_modules_0g4gi6f._.js +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/middleware-manifest.json +7 -7
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/{w6W6dMBYlP4wbCdeRcVhA → Y0pwgmRdVAifh_zukihNt}/_clientMiddlewareManifest.js +2 -2
- package/.next/static/chunks/03gmdewlo3s6u.js +1 -0
- package/.next/static/chunks/06q8lm6y95ac4.css +1 -0
- package/.next/static/chunks/0ij2dqb0qj5ry.js +1 -0
- package/.next/static/chunks/{2rmhba08h4qqo.js → 0pwdmc9gw8ben.js} +1 -1
- package/.next/static/chunks/{35cov9g4cgt-v.js → 1c92up8k2x0z4.js} +1 -1
- package/.next/static/chunks/24dymggis4suf.css +3 -0
- package/.next/static/chunks/24jbwfpgmio7x.js +1 -0
- package/.next/static/chunks/27fr34_1v7xyh.js +1 -0
- package/.next/static/chunks/2eu_bls12m1wj.js +1 -0
- package/.next/static/chunks/{2yl8a-gxngbuq.js → 2x8e_fbze06sd.js} +1 -1
- package/.next/static/chunks/2z1_5umv36es6.js +191 -0
- package/.next/static/chunks/3m4c1r8_2ga_1.js +1 -0
- package/.next/static/chunks/{2s07soqug65hc.js → 3whzkc6d8oefw.js} +1 -1
- package/LICENSE +22 -0
- package/launcher.js +22 -6
- package/package.json +3 -2
- package/prisma/migrations/20261022000141_add_svg_animation_en/migration.sql +2 -0
- package/prisma/schema.prisma +2 -1
- package/prisma/seed.db +0 -0
- package/public/icons/apple-touch-icon.png +0 -0
- package/public/icons/icon-192.png +0 -0
- package/public/icons/icon-512.png +0 -0
- package/public/icons/icon-maskable-512.png +0 -0
- package/public/offline.html +61 -0
- package/public/sw.js +84 -0
- package/.next/server/app/api/error-items/[id]/mastery/route/app-paths-manifest.json +0 -3
- package/.next/server/app/api/error-items/[id]/mastery/route/build-manifest.json +0 -12
- package/.next/server/app/api/error-items/[id]/mastery/route/server-reference-manifest.json +0 -4
- package/.next/server/app/api/error-items/[id]/mastery/route.js +0 -8
- package/.next/server/app/api/error-items/[id]/mastery/route.js.map +0 -5
- package/.next/server/app/api/error-items/[id]/mastery/route.js.nft.json +0 -1
- package/.next/server/app/api/error-items/[id]/mastery/route_client-reference-manifest.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__04tyyvs._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0cmxmwt._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0d5dpu4._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0d9ijed._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0e22a4y._.js +0 -122
- package/.next/server/chunks/[root-of-the-server]__0j5231l._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0mfjf2y._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0no6umu._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0o9gtvd._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0p3u6_q._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0rmrkd_._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0tdibjz._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0vz88er._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0wf9znr._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0yc8r2x._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__0zv7jom._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__11_1z7m._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__11n87go._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__11p4ahb._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__131taws._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__13ebiit._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__14dnbrn._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__14jqm9_._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__152lbaw._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__17duis5._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__17q3k-v._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__184u6de._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__18atlj8._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__18c7l6u._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1jdi-1f._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1ju8z29._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1loecue._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__1p8hw44._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__20465pr._.js +0 -3
- package/.next/server/chunks/[root-of-the-server]__207mxv8._.js +0 -3
- package/.next/server/chunks/_0_o8yhv._.js +0 -3
- package/.next/server/chunks/_0rdo0a4._.js +0 -3
- package/.next/server/chunks/_167vv93._.js +0 -3
- package/.next/server/chunks/_1flar98._.js +0 -3
- package/.next/server/chunks/_next-internal_server_app_api_error-items_[id]_mastery_route_actions_1l5uan6.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0b8kewv._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0icjezr._.js +0 -3
- package/.next/server/chunks/ssr/_1gu1rou._.js +0 -3
- package/.next/static/chunks/00pn0o7lymln6.js +0 -1
- package/.next/static/chunks/02521degnqmf0.js +0 -1
- package/.next/static/chunks/130ch9mnvb6mp.css +0 -3
- package/.next/static/chunks/17wdtw8hml2n6.js +0 -191
- package/.next/static/chunks/2a0kgntckcbvf.js +0 -1
- package/.next/static/chunks/2h-exsnhkfnb8.js +0 -1
- package/.next/static/chunks/2wnnnmbh85mq_.js +0 -1
- package/.next/static/chunks/3c4-ozf1dxam2.css +0 -1
- package/.next/static/chunks/3hz1l3qoxv84t.js +0 -1
- /package/.next/static/{w6W6dMBYlP4wbCdeRcVhA → Y0pwgmRdVAifh_zukihNt}/_buildManifest.js +0 -0
- /package/.next/static/{w6W6dMBYlP4wbCdeRcVhA → Y0pwgmRdVAifh_zukihNt}/_ssgManifest.js +0 -0
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},79955,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1_gkx5x._.js"].map(t=>e.l(t))).then(()=>t(35611)))},46735,e=>{e.v(t=>Promise.all(["server/chunks/[externals]__04n7qbr._.js","server/chunks/[root-of-the-server]__0rk_yxy._.js"].map(t=>e.l(t))).then(()=>t(83085)))},91961,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(t=>e.l(t))).then(()=>t(12111)))},72331,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0wf9znr._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(t=>e.l(t))).then(()=>t(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))},63856,e=>e.a(async(t,r)=>{try{var a=e.i(13618),s=e.i(79832),i=e.i(98043),n=t([s]);async function o(){let e=await (0,a.getServerSession)(s.authOptions);return e?.user?.email?i.prisma.user.findUnique({where:{email:e.user.email}}):null}[s]=n.then?(await n)():n,e.s(["getCurrentUser",0,o]),r()}catch(e){r(e)}},!1),74866,e=>{"use strict";var t=e.i(98043),r=e.i(43911),a=e.i(50377),s=e.i(26828),i=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,s=(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(s,r.count):function(e,t,r=Math.random){return u(e,e.length,r).sort((e,t)=>e.practiceCount-t.practiceCount).slice(0,t)}(s,r.count)}function c(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 d(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,s){let i=await t.prisma.examQuestion.findUnique({where:{id:e},select:{errorItem:{select:{questionText:!0,knowledgePoints:!0,gradeSemester:!0,figureSvg:!0,tags:{select:{name:!0}}}}}});if(!i?.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(i.errorItem.questionText||"",d(i.errorItem),s,a,i.errorItem.gradeSemester,i.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 f=new Set;async function p(e,r="zh"){if(f.has(e))return;f.add(e);let a=null;try{let i=await t.prisma.examPaper.findUnique({where:{id:e},select:{userId:!0,title:!0,difficulty:!0,questions:{where:{status:{not:"ready"}},select:{id:!0}}}});if(!i)return;let n=i.questions.map(e=>e.id),o=n.length,u=0;o>0&&(a=(0,s.startBackgroundTask)({userId:i.userId,kind:"exam",subject:i.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(),i.difficulty,r),a?.setProgress(++u,o)};await Promise.all(Array.from({length:Math.min(3,n.length)},l));let d=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}}),f=c(d.map(e=>e.status));await t.prisma.examPaper.update({where:{id:e},data:{status:f}}),a?.setProgress(u,o,d.filter(e=>"failed"===e.status).length),"failed"===f?a?.fail("ALL_FAILED"):a?.succeed()}catch(t){n.error({paperId:e,error:t},"Exam paper generation failed"),a?.fail(t)}finally{f.delete(e)}}let g={status:!0,questionText:!0,answerText:!0,analysis:!0,figureSvg:!0,error:!0};async function w(e,a,o,u,l="zh"){let c=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(!c||c.paperId!==e||c.paper.userId!==o)throw Error("EXAM_QUESTION_NOT_FOUND");if("pending"===c.status)throw Error("QUESTION_GENERATING");let m={userId:o,subject:c.paper.title,link:`/exams/${e}`};if("question"===u){if(c._count.practiceRecords>0)throw Error("HAS_RESULTS");let i=c.errorItem;if(!i)throw Error("SOURCE_DELETED");let n=await (0,s.trackBackgroundTask)({...m,kind:"exam"},()=>(0,r.getAIService)().generateSimilarQuestion(i.questionText||"",d(i),l,c.paper.difficulty,i.gradeSemester,i.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 h(e)}else{let e=c.questionText;if("ready"!==c.status||!e?.trim())throw Error("NO_QUESTION_TEXT");let n=c.errorItem?.subject?(0,i.resolveNotebookScope)(c.errorItem.subject):null,o=n?.subject?i.SUBJECT_DISPLAY_NAMES[n.subject]:null,u=await (0,s.trackBackgroundTask)({...m,kind:"reanswer"},()=>(0,r.getAIService)().reanswerQuestion(e,l,o,void 0,c.errorItem?.gradeSemester));if(!u.answerText.trim()&&!u.analysis.trim())throw Error("EMPTY_ANSWER");let d={answerText:u.answerText,analysis:u.analysis};await t.prisma.$transaction([t.prisma.examQuestion.update({where:{id:a},data:d}),t.prisma.practiceRecord.updateMany({where:{examQuestionId:a},data:d})])}let f=await t.prisma.examQuestion.findUnique({where:{id:a},select:g});return n.info({paperId:e,questionId:a,mode:u},"Exam question regenerated"),f}async function h(e){let r=await t.prisma.examQuestion.findMany({where:{paperId:e},select:{status:!0}});await t.prisma.examPaper.update({where:{id:e},data:{status:c(r.map(e=>e.status))}})}async function x(e,r,a,s){let i=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(!i||i.userId!==r)throw Error("EXAM_NOT_FOUND");let n=new Map(i.questions.map(e=>[e.id,e])),o=new Set;return await t.prisma.$transaction(async t=>{for(let{questionId:e,result:u}of s){let s=n.get(e);s?.errorItemId&&null!==u&&(await t.practiceRecord.create({data:{userId:r,errorItemId:s.errorItemId,examQuestionId:s.id,source:"exam",result:u,isCorrect:"correct"===u,createdAt:a,difficulty:i.difficulty,subject:s.errorItem?.subject?.name??null,questionText:s.questionText,answerText:s.answerText,analysis:s.analysis,figureSvg:s.figureSvg}}),o.add(s.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,p,"isPaperGenerating",0,function(e){return f.has(e)},"recordExamResults",0,x,"regenerateExamQuestion",0,w,"selectSourceItems",0,l])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0j5231l._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},79955,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1_gkx5x._.js"].map(t=>e.l(t))).then(()=>t(35611)))},46735,e=>{e.v(t=>Promise.all(["server/chunks/[externals]__04n7qbr._.js","server/chunks/[root-of-the-server]__0rk_yxy._.js"].map(t=>e.l(t))).then(()=>t(83085)))},91961,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(t=>e.l(t))).then(()=>t(12111)))},72331,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__14jqm9_._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(t=>e.l(t))).then(()=>t(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))},4752,e=>{"use strict";var t=e.i(98043),r=e.i(43911);let l=(0,e.i(50377).createLogger)("mastery"),n=["correct","wrong","not_attempted"];function a(e){return"string"==typeof e&&n.includes(e)}let i={easy:.85,medium:.95,hard:1,harder:1},s={wrong:.1,not_attempted:0};async function o(e){let n=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(!n)return;let o=n.practiceRecords.filter(e=>a(e.result)).map(e=>({date:e.createdAt.toISOString(),difficulty:e.difficulty,result:e.result,source:e.source})),u=function(e){if(0===e.length)return null;let t=.15,r=.5;return e.forEach((l,n)=>{let a=Math.pow(.7,e.length-1-n),o="correct"===l.result?i[l.difficulty||"medium"]??i.medium:s[l.result];t+=a*o,r+=a}),Math.round(t/r*100)/100}(o);if(null===u)return void await t.prisma.errorItem.update({where:{id:n.id},data:{masteryProbability:null,masteryReason:null,masterySource:null,masteryEvaluatedAt:null}});let c=u,h="",f="rule";try{let e=await (0,r.getAIService)().evaluateMastery({questionText:n.questionText||"",knowledgePoints:n.tags.map(e=>e.name),mistakeStatus:n.mistakeStatus,history:o,ruleProbability:u});c=e.probability,h=e.reason,f="ai"}catch(r){l.warn({errorItemId:e,error:r instanceof Error?r.message:String(r)},"AI mastery evaluation failed, using rule estimate");let t=o.filter(e=>"correct"===e.result).length;h=`共练习 ${o.length} 次,做对 ${t} 次(规则估算)`}await t.prisma.errorItem.update({where:{id:n.id},data:{masteryProbability:c,masteryReason:h,masterySource:f,masteryEvaluatedAt:new Date,masteryLevel:+(c>=.8)}}),l.info({errorItemId:e,probability:c,source:f},"Mastery evaluated")}let u=new Set,c=!1;async function h(){if(!c){c=!0;try{for(;u.size>0;){let[e]=u;u.delete(e);try{await o(e)}catch(t){l.error({errorItemId:e,error:t},"Mastery evaluation failed")}}}finally{c=!1}}}e.s(["PRACTICE_RESULTS",0,n,"isPracticeResult",0,a,"scheduleMasteryEvaluation",0,function(e){e.forEach(e=>u.add(e)),h()}])},55920,e=>{"use strict";e.s(["getDefaultPaperLevel",0,function(e){return"number"!=typeof e||!Number.isInteger(e)||e<1||e>5?null:e<=3?"a":"b"}])},88993,e=>{"use strict";let t=/^[【[((]?图示/u;function r(e){return(function(e){let r=[],l=!1,n=!1;for(let a of e.split(/\r?\n/)){let e=a.trim();e?l&&t.test(e)&&(n=!0):n=!1,n||r.push(a),e&&(l=!0)}return r.join("\n")})(e.normalize("NFC")).replace(/[\uFF01-\uFF5E]/g,e=>String.fromCharCode(e.charCodeAt(0)-65248)).replace(/\\underline\{[^}]*\}|_{2,}/g,"__").replace(/\s+/gu," ").replace(/\( ?\)/g,"()").trim()}e.s(["DEFAULT_QUESTION_DUPLICATE_THRESHOLD",0,90,"calculateQuestionSimilarity",0,function(e,t){let l=r(e),n=r(t);if(!l||!n)return null;if(l===n)return 1;let a=Array.from(l),i=Array.from(n),s=Math.max(a.length,i.length),o=0;for(;o<Math.min(a.length,i.length)&&a[o]===i[o];)o++;let u=a.length,c=i.length;for(;u>o&&c>o&&a[u-1]===i[c-1];)u--,c--;a=a.slice(o,u),i=i.slice(o,c),a.length>i.length&&([a,i]=[i,a]);let h=Int32Array.from({length:a.length+1},(e,t)=>t);for(let e=1;e<=i.length;e++){let t=h[0];h[0]=e;for(let r=1;r<=a.length;r++){let l=h[r];h[r]=Math.min(l+1,h[r-1]+1,t+ +(a[r-1]!==i[e-1])),t=l}}return 1-h[a.length]/s},"duplicateQuestionSimilarity",0,function(e,t,l=90){let n=r(e),a=r(t);if(!n||!a||l>=100)return null;if(n===a)return 1;let i=Array.from(n),s=Array.from(a);i.length>s.length&&([i,s]=[s,i]);let o=s.length,u=Math.ceil(o*(1e4-Math.round(100*l))/1e4)-1;if(s.length-i.length>u||0===u)return null;let c=u+1,h=new Int32Array(i.length+1).fill(c),f=new Int32Array(i.length+1).fill(c);for(let e=0;e<=Math.min(i.length,u);e++)h[e]=e;for(let e=1;e<=s.length;e++){let t=Math.max(1,e-u),r=Math.min(i.length,e+u);f[0]=e<=u?e:c,t>1&&(f[t-1]=c);let l=f[0];for(let n=t;n<=r;n++)f[n]=Math.min(h[n]+1,f[n-1]+1,h[n-1]+ +(i[n-1]!==s[e-1])),l=Math.min(l,f[n]);if(l>u)return null;r<i.length&&(f[r+1]=c),[h,f]=[f,h]}let m=h[i.length];return m<=u?1-m/o:null}])},41070,e=>{"use strict";let t="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",r=RegExp(`^[${t}]{6}$`);e.s(["BASE58_ALPHABET",0,t,"SHORT_ID_LENGTH",0,6,"isShortId",0,function(e){return"string"==typeof e&&r.test(e)}])},92366,e=>{"use strict";var t=e.i(54799),r=e.i(41070);async function l(e){for(let l=0;l<10;l++){let l=function(){let e="";for(;e.length<r.SHORT_ID_LENGTH;)for(let l of(0,t.randomBytes)(2*r.SHORT_ID_LENGTH))l<232&&e.length<r.SHORT_ID_LENGTH&&(e+=r.BASE58_ALPHABET[l%58]);return e}();if(!await e.errorItem.findUnique({where:{shortId:l},select:{id:!0}}))return l}throw Error("Failed to generate a unique short ID")}e.s(["generateUniqueShortId",0,l])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0mfjf2y._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0no6umu._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0o9gtvd._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0p3u6_q._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[63021,(e,r,t)=>{r.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var r=e.i(63021);let t=e.g.prisma||new r.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,t])},49719,(e,r,t)=>{r.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(r,t)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),t()}catch(e){t(e)}},!0),874,(e,r,t)=>{r.exports=e.x("buffer",()=>require("buffer"))},54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},27699,(e,r,t)=>{r.exports=e.x("events",()=>require("events"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},21517,(e,r,t)=>{r.exports=e.x("http",()=>require("http"))},24836,(e,r,t)=>{r.exports=e.x("https",()=>require("https"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},45706,(e,r,t)=>{r.exports=e.x("querystring",()=>require("querystring"))},92509,(e,r,t)=>{r.exports=e.x("url",()=>require("url"))},24361,(e,r,t)=>{r.exports=e.x("util",()=>require("util"))},6461,(e,r,t)=>{r.exports=e.x("zlib",()=>require("zlib"))},98876,e=>{"use strict";let r={minimax:{name:"MiniMax",baseUrl:"https://api.minimax.cn/v1",model:"MiniMax-M3.1-Flash",envPrefix:"MINIMAX",consoleUrl:"https://platform.minimax.cn"},glm:{name:"智谱 GLM",baseUrl:"https://open.bigmodel.cn/api/paas/v4",model:"glm-5.3-flash",envPrefix:"GLM",consoleUrl:"https://open.bigmodel.cn"},deepseek:{name:"DeepSeek",baseUrl:"https://api.deepseek.com",model:"deepseek-flash",envPrefix:"DEEPSEEK",consoleUrl:"https://platform.deepseek.com"},kimi:{name:"Kimi",baseUrl:"https://api.moonshot.cn/v1",model:"kimi-k3",envPrefix:"KIMI",consoleUrl:"https://platform.kimi.com"}},t=Object.keys(r);e.s(["VENDOR_PRESETS",0,r,"VENDOR_PROVIDER_IDS",0,t,"isVendorProvider",0,function(e){return"string"==typeof e&&Object.prototype.hasOwnProperty.call(r,e)},"resolveVendorConfig",0,function(e,t){let n=r[e];return{apiKey:t?.apiKey||"",baseUrl:t?.baseUrl||n.baseUrl,model:t?.model||n.model}}])},76759,e=>{"use strict";var r=e.i(58821);let t={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,t,n,i){let a={message:e};return n&&(a.code=n),i&&(a.details=i),r.NextResponse.json(a,{status:t})}e.s(["ErrorCode",0,t,"badRequest",0,function(e,r){return n(e,400,t.BAD_REQUEST,r)},"conflict",0,function(e){return n(e,409,t.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,t.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,t.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,t.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,t.UNAUTHORIZED)},"validationError",0,function(e,r){return n(e,400,t.VALIDATION_ERROR,r)}])},98003,e=>{"use strict";var r=e.i(22734),t=e.i(14747),n=e.i(50377),i=e.i(76025),a=e.i(98876);let s=(0,n.createLogger)("config"),o=t.default.join(process.env.CONFIG_DIR||t.default.join(process.cwd(),"config"),"app-config.json"),c={aiProvider:process.env.AI_PROVIDER||"minimax",allowRegistration:!0,timeZone:i.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-6.1-sol"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},...Object.fromEntries(a.VENDOR_PROVIDER_IDS.map(e=>{let r=a.VENDOR_PRESETS[e].envPrefix;return[e,{apiKey:process.env[`${r}_API_KEY`],baseUrl:process.env[`${r}_BASE_URL`],model:process.env[`${r}_MODEL`]}]})),prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function l(e,r){return Object.fromEntries(a.VENDOR_PROVIDER_IDS.map(t=>[t,{...e[t],...r[t]}]))}function p(){if(r.default.existsSync(o))try{var e;let t=r.default.readFileSync(o,"utf-8"),n=JSON.parse(t),a=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){s.info("Detected legacy OpenAI config, migrating to multi-instance format..."),a=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let r={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let r=16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-6.1-sol"};return{instances:[r],activeInstanceId:r.id}}(n.openai);let e={...n,openai:a};r.default.writeFileSync(o,JSON.stringify(e,null,2)),s.info("Legacy OpenAI config migrated successfully")}return{...c,...n,timeZone:(0,i.isValidTimeZone)(n.timeZone)?n.timeZone.trim():i.DEFAULT_TIME_ZONE,openai:{instances:a?.instances||c.openai?.instances||[],activeInstanceId:a?.activeInstanceId||c.openai?.activeInstanceId},gemini:{...c.gemini,...n.gemini},azure:{...c.azure,...n.azure},anthropic:{...c.anthropic,...n.anthropic},...l(c,n),prompts:{...c.prompts,...n.prompts},timeouts:{...c.timeouts,...n.timeouts}}}catch(e){s.error({error:e},"Failed to read config file")}return c}e.s(["getActiveOpenAIConfig",0,function(){let e=p(),r=e.openai?.instances||[],t=e.openai?.activeInstanceId;if(t&&0!==r.length)return r.find(e=>e.id===t)},"getAppConfig",0,p,"getAppTimeZone",0,function(){return p().timeZone||i.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,i.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let t=p(),n={...t,...e,timeZone:e.timeZone?.trim()??t.timeZone??i.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??t.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??t.openai?.activeInstanceId},gemini:{...t.gemini,...e.gemini},azure:{...t.azure,...e.azure},anthropic:{...t.anthropic,...e.anthropic},...l(t,e),prompts:{...t.prompts,...e.prompts},timeouts:{...t.timeouts,...e.timeouts}};try{return r.default.writeFileSync(o,JSON.stringify(n,null,2)),n}catch(e){throw s.error({error:e},"Failed to write config file"),e}}])},50377,e=>{"use strict";let r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function t(e,n={}){let i,a=r[e],s=(i=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==r[i]?r[i]:r.info;return(r,t)=>{let i,o;if(a<s)return;let c=new Date;"string"==typeof r?(i={},o=r):(i=r,o=t||"");{let r=JSON.stringify({level:e,time:c.toISOString(),...n,...i,msg:o});switch(e){case"error":case"fatal":console.error(r);break;case"warn":console.warn(r);break;default:console.log(r)}}}}let n=function e(r={}){return r.module,{trace:t("trace",r),debug:t("debug",r),info:t("info",r),warn:t("warn",r),error:t("error",r),fatal:t("fatal",r),child:t=>e({...r,...t}),box:(e,t,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...r,title:e,..."string"==typeof t?{content:t}:t||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])},4752,e=>{"use strict";var r=e.i(98043),t=e.i(43911);let n=(0,e.i(50377).createLogger)("mastery"),i=["correct","wrong","not_attempted"];function a(e){return"string"==typeof e&&i.includes(e)}let s={easy:.85,medium:.95,hard:1,harder:1},o={wrong:.1,not_attempted:0};async function c(e){let i=await r.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 c=i.practiceRecords.filter(e=>a(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 r=.15,t=.5;return e.forEach((n,i)=>{let a=Math.pow(.7,e.length-1-i),c="correct"===n.result?s[n.difficulty||"medium"]??s.medium:o[n.result];r+=a*c,t+=a}),Math.round(r/t*100)/100}(c);if(null===l)return void await r.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:null,masteryReason:null,masterySource:null,masteryEvaluatedAt:null}});let p=l,u="",d="rule";try{let e=await (0,t.getAIService)().evaluateMastery({questionText:i.questionText||"",knowledgePoints:i.tags.map(e=>e.name),mistakeStatus:i.mistakeStatus,history:c,ruleProbability:l});p=e.probability,u=e.reason,d="ai"}catch(t){n.warn({errorItemId:e,error:t instanceof Error?t.message:String(t)},"AI mastery evaluation failed, using rule estimate");let r=c.filter(e=>"correct"===e.result).length;u=`共练习 ${c.length} 次,做对 ${r} 次(规则估算)`}await r.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:p,masteryReason:u,masterySource:d,masteryEvaluatedAt:new Date,masteryLevel:+(p>=.8)}}),n.info({errorItemId:e,probability:p,source:d},"Mastery evaluated")}let l=new Set,p=!1;async function u(){if(!p){p=!0;try{for(;l.size>0;){let[e]=l;l.delete(e);try{await c(e)}catch(r){n.error({errorItemId:e,error:r},"Mastery evaluation failed")}}}finally{p=!1}}}e.s(["PRACTICE_RESULTS",0,i,"isPracticeResult",0,a,"scheduleMasteryEvaluation",0,function(e){e.forEach(e=>l.add(e)),u()}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0rmrkd_._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0tdibjz._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0vz88er._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0wf9znr._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[63021,(e,t,r)=>{t.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var t=e.i(63021);let r=e.g.prisma||new t.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,r])},49719,(e,t,r)=>{t.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(t,r)=>{try{var a=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(a),r()}catch(e){r(e)}},!0),874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},27699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},21517,(e,t,r)=>{t.exports=e.x("http",()=>require("http"))},24836,(e,t,r)=>{t.exports=e.x("https",()=>require("https"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},45706,(e,t,r)=>{t.exports=e.x("querystring",()=>require("querystring"))},92509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},6461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},4334,e=>e.a(async(t,r)=>{try{var a=e.i(58821),n=e.i(98043),i=e.i(79832),s=e.i(13618),o=e.i(76759),u=e.i(50377),l=t([i]);[i]=l.then?(await l)():l;let p=(0,u.createLogger)("api:error-items:mastery");async function d(e,{params:t}){let{id:r}=await t,u=await (0,s.getServerSession)(i.authOptions);try{let t;if(u?.user?.email&&(t=await n.prisma.user.findUnique({where:{email:u.user.email}})),!t)return(0,o.unauthorized)("Authentication required");let{masteryLevel:i}=await e.json(),s=await n.prisma.errorItem.findUnique({where:{id:r},select:{userId:!0}});if(!s)return a.NextResponse.json({message:"Item not found"},{status:404});if(s.userId!==t.id)return a.NextResponse.json({message:"Not authorized to update this item"},{status:403});let l=await n.prisma.errorItem.update({where:{id:r},data:{masteryLevel:i}});return a.NextResponse.json(l)}catch(e){return p.error({error:e},"Error updating item"),(0,o.internalError)("Failed to update error item")}}e.s(["PATCH",0,d]),r()}catch(e){r(e)}},!1),21530,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),p=e.i(47587),c=e.i(66012),R=e.i(70101),x=e.i(74838),E=e.i(10372),h=e.i(93695),f=e.i(9580);e.i(52474);var m=e.i(220);let v=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/error-items/[id]/mastery/route",pathname:"/api/error-items/[id]/mastery",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/error-items/[id]/mastery/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(4334),...{}}),{workAsyncStorage:N,workUnitAsyncStorage:g,serverHooks:O}=v;async function I(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let N="/api/error-items/[id]/mastery/route";N=N.replace(/\/index$/,"")||"/";let g=await v.prepare(e,t,{srcPage:N,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:O,deploymentId:I,params:A,nextConfig:w,parsedUrl:T,isDraftMode:_,prerenderManifest:y,routerServerContext:D,isOnDemandRevalidate:S,revalidateOnlyGenerated:C,resolvedPathname:b,clientReferenceManifest:q,serverActionsManifest:U}=g,P=(0,o.normalizeAppPath)(N),L=!!y.routes[b]&&(v.isDev||(0,f.isRouteCacheOwner)(b,v.cacheOwner,y.routes[b])),j=!!(y.dynamicRoutes[P]||L),F=async()=>((null==D?void 0:D.render404)?await D.render404(e,t,T,!1):t.end("This page could not be found"),null);if(j&&!_){let e=y.dynamicRoutes[P];if(e&&!1===e.fallback&&!L){if(w.adapterPath)return await F();throw new h.NoFallbackError}}let k=null;!j||v.isDev||_||(k="/index"===(k=b)?"/":k);let H=!0===v.isDev||!j,M=j&&!H;U&&q&&(0,s.setManifestsSingleton)({page:N,clientReferenceManifest:q,serverActionsManifest:U});let B=e.method||"GET",G=(0,i.getTracer)(),V=G.getActiveScopeSpan(),K=!!(null==D?void 0:D.isWrappedByNextServer),z=!!(0,n.getRequestMeta)(e,"minimalMode"),Q=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,w,y,z);null==Q||Q.resetRequestCache(),globalThis.__incrementalCache=Q;let X={params:A,previewProps:y.preview,renderOpts:{experimental:{authInterrupts:!!w.experimental.authInterrupts,useCacheTimeout:w.experimental.useCacheTimeout},cacheComponents:!!w.cacheComponents,validationLevel:w.experimental.instantInsights.validationLevel,isDraftMode:_,supportsDynamicResponse:H,incrementalCache:Q,hmrRefreshHash:(0,n.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:w.cacheLife,staticPageGenerationTimeout:w.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>v.onRequestError(e,t,a,n,D)},sharedContext:{buildId:O,deploymentId:I}},$=new u.NodeNextRequest(e),W=new u.NodeNextResponse(t),Z=l.NextRequestAdapter.fromNodeNextRequest($,(0,l.signalFromNodeResponse)(t)),J=async({previousCacheEntry:r})=>{try{if(!z&&S&&C&&!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,X);e.fetchMetrics=X.renderOpts.fetchMetrics;let i=X.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let s=X.renderOpts.collectedTags;if(!j)return await (0,c.sendResponse)($,W,n,i),null;{let e=await n.blob(),t=(0,R.toNodeOutgoingHttpHeaders)(n.headers);s&&(t[E.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=E.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,a=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=E.INFINITE_CACHE?!1!==r&&r>0?w.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:m.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:N,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:S})},!1,D),t}},Y=async(n,s)=>{try{var o,u;let n=await v.handleResponse({req:e,nextConfig:w,cacheKey:k,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:C,responseGenerator:J,waitUntil:a.waitUntil,isMinimalMode:z});if(!j)return;if((null==n||null==(o=n.value)?void 0:o.kind)!==m.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});z||t.setHeader("x-nextjs-cache",S?"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,R.fromNodeOutgoingHttpHeaders)(n.value.headers);z&&j||i.delete(E.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,x.getCacheControlHeader)(n.cacheControl)),await (0,c.sendResponse)($,W,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof h.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:S})},!1,D),j)throw t;await (0,c.sendResponse)($,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=G.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")||P,o=`${B} ${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&&V)await Y(V,void 0);else{let t=G.getActiveScopeSpan();await G.withPropagatedContext(e.headers,()=>G.trace(d.BaseServerSpan.handleRequest,{spanName:`${B} ${N}`,kind:i.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},e=>Y(e,t)),void 0,!K)}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:g})},"routeModule",0,v,"serverHooks",0,O,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,g])},76759,e=>{"use strict";var t=e.i(58821);let r={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function a(e,r,a,n){let i={message:e};return a&&(i.code=a),n&&(i.details=n),t.NextResponse.json(i,{status:r})}e.s(["ErrorCode",0,r,"badRequest",0,function(e,t){return a(e,400,r.BAD_REQUEST,t)},"conflict",0,function(e){return a(e,409,r.CONFLICT)},"createErrorResponse",0,a,"forbidden",0,function(e="Forbidden"){return a(e,403,r.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return a(e,500,r.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return a(e,404,r.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return a(e,401,r.UNAUTHORIZED)},"validationError",0,function(e,t){return a(e,400,r.VALIDATION_ERROR,t)}])},50377,e=>{"use strict";let t={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function r(e,a={}){let n,i=t[e],s=(n=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==t[n]?t[n]:t.info;return(t,r)=>{let n,o;if(i<s)return;let u=new Date;"string"==typeof t?(n={},o=t):(n=t,o=r||"");{let t=JSON.stringify({level:e,time:u.toISOString(),...a,...n,msg:o});switch(e){case"error":case"fatal":console.error(t);break;case"warn":console.warn(t);break;default:console.log(t)}}}}let a=function e(t={}){return t.module,{trace:r("trace",t),debug:r("debug",t),info:r("info",t),warn:r("warn",t),error:r("error",t),fatal:r("fatal",t),child:r=>e({...t,...r}),box:(e,r,a="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...t,title:e,..."string"==typeof r?{content:r}:r||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return a.child({module:e})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0yc8r2x._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0zv7jom._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__11_1z7m._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[63021,(e,r,t)=>{r.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var r=e.i(63021);let t=e.g.prisma||new r.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,t])},49719,(e,r,t)=>{r.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(r,t)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),t()}catch(e){t(e)}},!0),874,(e,r,t)=>{r.exports=e.x("buffer",()=>require("buffer"))},54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},27699,(e,r,t)=>{r.exports=e.x("events",()=>require("events"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},21517,(e,r,t)=>{r.exports=e.x("http",()=>require("http"))},24836,(e,r,t)=>{r.exports=e.x("https",()=>require("https"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},45706,(e,r,t)=>{r.exports=e.x("querystring",()=>require("querystring"))},92509,(e,r,t)=>{r.exports=e.x("url",()=>require("url"))},24361,(e,r,t)=>{r.exports=e.x("util",()=>require("util"))},6461,(e,r,t)=>{r.exports=e.x("zlib",()=>require("zlib"))},98876,e=>{"use strict";let r={minimax:{name:"MiniMax",baseUrl:"https://api.minimax.cn/v1",model:"MiniMax-M3.1-Flash",envPrefix:"MINIMAX",consoleUrl:"https://platform.minimax.cn"},glm:{name:"智谱 GLM",baseUrl:"https://open.bigmodel.cn/api/paas/v4",model:"glm-5.3-flash",envPrefix:"GLM",consoleUrl:"https://open.bigmodel.cn"},deepseek:{name:"DeepSeek",baseUrl:"https://api.deepseek.com",model:"deepseek-flash",envPrefix:"DEEPSEEK",consoleUrl:"https://platform.deepseek.com"},kimi:{name:"Kimi",baseUrl:"https://api.moonshot.cn/v1",model:"kimi-k3",envPrefix:"KIMI",consoleUrl:"https://platform.kimi.com"}},t=Object.keys(r);e.s(["VENDOR_PRESETS",0,r,"VENDOR_PROVIDER_IDS",0,t,"isVendorProvider",0,function(e){return"string"==typeof e&&Object.prototype.hasOwnProperty.call(r,e)},"resolveVendorConfig",0,function(e,t){let n=r[e];return{apiKey:t?.apiKey||"",baseUrl:t?.baseUrl||n.baseUrl,model:t?.model||n.model}}])},76759,e=>{"use strict";var r=e.i(58821);let t={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,t,n,i){let a={message:e};return n&&(a.code=n),i&&(a.details=i),r.NextResponse.json(a,{status:t})}e.s(["ErrorCode",0,t,"badRequest",0,function(e,r){return n(e,400,t.BAD_REQUEST,r)},"conflict",0,function(e){return n(e,409,t.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,t.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,t.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,t.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,t.UNAUTHORIZED)},"validationError",0,function(e,r){return n(e,400,t.VALIDATION_ERROR,r)}])},98003,e=>{"use strict";var r=e.i(22734),t=e.i(14747),n=e.i(50377),i=e.i(76025),a=e.i(98876);let s=(0,n.createLogger)("config"),o=t.default.join(process.env.CONFIG_DIR||t.default.join(process.cwd(),"config"),"app-config.json"),c={aiProvider:process.env.AI_PROVIDER||"minimax",allowRegistration:!0,timeZone:i.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-6.1-sol"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},...Object.fromEntries(a.VENDOR_PROVIDER_IDS.map(e=>{let r=a.VENDOR_PRESETS[e].envPrefix;return[e,{apiKey:process.env[`${r}_API_KEY`],baseUrl:process.env[`${r}_BASE_URL`],model:process.env[`${r}_MODEL`]}]})),prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function l(e,r){return Object.fromEntries(a.VENDOR_PROVIDER_IDS.map(t=>[t,{...e[t],...r[t]}]))}function p(){if(r.default.existsSync(o))try{var e;let t=r.default.readFileSync(o,"utf-8"),n=JSON.parse(t),a=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){s.info("Detected legacy OpenAI config, migrating to multi-instance format..."),a=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let r={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let r=16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-6.1-sol"};return{instances:[r],activeInstanceId:r.id}}(n.openai);let e={...n,openai:a};r.default.writeFileSync(o,JSON.stringify(e,null,2)),s.info("Legacy OpenAI config migrated successfully")}return{...c,...n,timeZone:(0,i.isValidTimeZone)(n.timeZone)?n.timeZone.trim():i.DEFAULT_TIME_ZONE,openai:{instances:a?.instances||c.openai?.instances||[],activeInstanceId:a?.activeInstanceId||c.openai?.activeInstanceId},gemini:{...c.gemini,...n.gemini},azure:{...c.azure,...n.azure},anthropic:{...c.anthropic,...n.anthropic},...l(c,n),prompts:{...c.prompts,...n.prompts},timeouts:{...c.timeouts,...n.timeouts}}}catch(e){s.error({error:e},"Failed to read config file")}return c}e.s(["getActiveOpenAIConfig",0,function(){let e=p(),r=e.openai?.instances||[],t=e.openai?.activeInstanceId;if(t&&0!==r.length)return r.find(e=>e.id===t)},"getAppConfig",0,p,"getAppTimeZone",0,function(){return p().timeZone||i.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,i.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let t=p(),n={...t,...e,timeZone:e.timeZone?.trim()??t.timeZone??i.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??t.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??t.openai?.activeInstanceId},gemini:{...t.gemini,...e.gemini},azure:{...t.azure,...e.azure},anthropic:{...t.anthropic,...e.anthropic},...l(t,e),prompts:{...t.prompts,...e.prompts},timeouts:{...t.timeouts,...e.timeouts}};try{return r.default.writeFileSync(o,JSON.stringify(n,null,2)),n}catch(e){throw s.error({error:e},"Failed to write config file"),e}}])},63856,e=>e.a(async(r,t)=>{try{var n=e.i(13618),i=e.i(79832),a=e.i(98043),s=r([i]);async function o(){let e=await (0,n.getServerSession)(i.authOptions);return e?.user?.email?a.prisma.user.findUnique({where:{email:e.user.email}}):null}[i]=s.then?(await s)():s,e.s(["getCurrentUser",0,o]),t()}catch(e){t(e)}},!1),50377,e=>{"use strict";let r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function t(e,n={}){let i,a=r[e],s=(i=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==r[i]?r[i]:r.info;return(r,t)=>{let i,o;if(a<s)return;let c=new Date;"string"==typeof r?(i={},o=r):(i=r,o=t||"");{let r=JSON.stringify({level:e,time:c.toISOString(),...n,...i,msg:o});switch(e){case"error":case"fatal":console.error(r);break;case"warn":console.warn(r);break;default:console.log(r)}}}}let n=function e(r={}){return r.module,{trace:t("trace",r),debug:t("debug",r),info:t("info",r),warn:t("warn",r),error:t("error",r),fatal:t("fatal",r),child:t=>e({...r,...t}),box:(e,t,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...r,title:e,..."string"==typeof t?{content:t}:t||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])},4752,e=>{"use strict";var r=e.i(98043),t=e.i(43911);let n=(0,e.i(50377).createLogger)("mastery"),i=["correct","wrong","not_attempted"];function a(e){return"string"==typeof e&&i.includes(e)}let s={easy:.85,medium:.95,hard:1,harder:1},o={wrong:.1,not_attempted:0};async function c(e){let i=await r.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 c=i.practiceRecords.filter(e=>a(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 r=.15,t=.5;return e.forEach((n,i)=>{let a=Math.pow(.7,e.length-1-i),c="correct"===n.result?s[n.difficulty||"medium"]??s.medium:o[n.result];r+=a*c,t+=a}),Math.round(r/t*100)/100}(c);if(null===l)return void await r.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:null,masteryReason:null,masterySource:null,masteryEvaluatedAt:null}});let p=l,u="",d="rule";try{let e=await (0,t.getAIService)().evaluateMastery({questionText:i.questionText||"",knowledgePoints:i.tags.map(e=>e.name),mistakeStatus:i.mistakeStatus,history:c,ruleProbability:l});p=e.probability,u=e.reason,d="ai"}catch(t){n.warn({errorItemId:e,error:t instanceof Error?t.message:String(t)},"AI mastery evaluation failed, using rule estimate");let r=c.filter(e=>"correct"===e.result).length;u=`共练习 ${c.length} 次,做对 ${r} 次(规则估算)`}await r.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:p,masteryReason:u,masterySource:d,masteryEvaluatedAt:new Date,masteryLevel:+(p>=.8)}}),n.info({errorItemId:e,probability:p,source:d},"Mastery evaluated")}let l=new Set,p=!1;async function u(){if(!p){p=!0;try{for(;l.size>0;){let[e]=l;l.delete(e);try{await c(e)}catch(r){n.error({errorItemId:e,error:r},"Mastery evaluation failed")}}}finally{p=!1}}}e.s(["PRACTICE_RESULTS",0,i,"isPracticeResult",0,a,"scheduleMasteryEvaluation",0,function(e){e.forEach(e=>l.add(e)),u()}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__11n87go._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__11p4ahb._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[63021,(e,r,t)=>{r.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var r=e.i(63021);let t=e.g.prisma||new r.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,t])},49719,(e,r,t)=>{r.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(r,t)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),t()}catch(e){t(e)}},!0),874,(e,r,t)=>{r.exports=e.x("buffer",()=>require("buffer"))},54799,(e,r,t)=>{r.exports=e.x("crypto",()=>require("crypto"))},27699,(e,r,t)=>{r.exports=e.x("events",()=>require("events"))},22734,(e,r,t)=>{r.exports=e.x("fs",()=>require("fs"))},21517,(e,r,t)=>{r.exports=e.x("http",()=>require("http"))},24836,(e,r,t)=>{r.exports=e.x("https",()=>require("https"))},70406,(e,r,t)=>{r.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,r,t)=>{r.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,r,t)=>{r.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,r,t)=>{r.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,r,t)=>{r.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,r,t)=>{r.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,r,t)=>{r.exports=e.x("path",()=>require("path"))},45706,(e,r,t)=>{r.exports=e.x("querystring",()=>require("querystring"))},92509,(e,r,t)=>{r.exports=e.x("url",()=>require("url"))},24361,(e,r,t)=>{r.exports=e.x("util",()=>require("util"))},6461,(e,r,t)=>{r.exports=e.x("zlib",()=>require("zlib"))},98876,e=>{"use strict";let r={minimax:{name:"MiniMax",baseUrl:"https://api.minimax.cn/v1",model:"MiniMax-M3.1-Flash",envPrefix:"MINIMAX",consoleUrl:"https://platform.minimax.cn"},glm:{name:"智谱 GLM",baseUrl:"https://open.bigmodel.cn/api/paas/v4",model:"glm-5.3-flash",envPrefix:"GLM",consoleUrl:"https://open.bigmodel.cn"},deepseek:{name:"DeepSeek",baseUrl:"https://api.deepseek.com",model:"deepseek-flash",envPrefix:"DEEPSEEK",consoleUrl:"https://platform.deepseek.com"},kimi:{name:"Kimi",baseUrl:"https://api.moonshot.cn/v1",model:"kimi-k3",envPrefix:"KIMI",consoleUrl:"https://platform.kimi.com"}},t=Object.keys(r);e.s(["VENDOR_PRESETS",0,r,"VENDOR_PROVIDER_IDS",0,t,"isVendorProvider",0,function(e){return"string"==typeof e&&Object.prototype.hasOwnProperty.call(r,e)},"resolveVendorConfig",0,function(e,t){let n=r[e];return{apiKey:t?.apiKey||"",baseUrl:t?.baseUrl||n.baseUrl,model:t?.model||n.model}}])},76759,e=>{"use strict";var r=e.i(58821);let t={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,t,n,i){let a={message:e};return n&&(a.code=n),i&&(a.details=i),r.NextResponse.json(a,{status:t})}e.s(["ErrorCode",0,t,"badRequest",0,function(e,r){return n(e,400,t.BAD_REQUEST,r)},"conflict",0,function(e){return n(e,409,t.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,t.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,t.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,t.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,t.UNAUTHORIZED)},"validationError",0,function(e,r){return n(e,400,t.VALIDATION_ERROR,r)}])},98003,e=>{"use strict";var r=e.i(22734),t=e.i(14747),n=e.i(50377),i=e.i(76025),a=e.i(98876);let s=(0,n.createLogger)("config"),o=t.default.join(process.env.CONFIG_DIR||t.default.join(process.cwd(),"config"),"app-config.json"),c={aiProvider:process.env.AI_PROVIDER||"minimax",allowRegistration:!0,timeZone:i.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-6.1-sol"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},...Object.fromEntries(a.VENDOR_PROVIDER_IDS.map(e=>{let r=a.VENDOR_PRESETS[e].envPrefix;return[e,{apiKey:process.env[`${r}_API_KEY`],baseUrl:process.env[`${r}_BASE_URL`],model:process.env[`${r}_MODEL`]}]})),prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function l(e,r){return Object.fromEntries(a.VENDOR_PROVIDER_IDS.map(t=>[t,{...e[t],...r[t]}]))}function p(){if(r.default.existsSync(o))try{var e;let t=r.default.readFileSync(o,"utf-8"),n=JSON.parse(t),a=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){s.info("Detected legacy OpenAI config, migrating to multi-instance format..."),a=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let r={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let r=16*Math.random()|0;return("x"===e?r:3&r|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-6.1-sol"};return{instances:[r],activeInstanceId:r.id}}(n.openai);let e={...n,openai:a};r.default.writeFileSync(o,JSON.stringify(e,null,2)),s.info("Legacy OpenAI config migrated successfully")}return{...c,...n,timeZone:(0,i.isValidTimeZone)(n.timeZone)?n.timeZone.trim():i.DEFAULT_TIME_ZONE,openai:{instances:a?.instances||c.openai?.instances||[],activeInstanceId:a?.activeInstanceId||c.openai?.activeInstanceId},gemini:{...c.gemini,...n.gemini},azure:{...c.azure,...n.azure},anthropic:{...c.anthropic,...n.anthropic},...l(c,n),prompts:{...c.prompts,...n.prompts},timeouts:{...c.timeouts,...n.timeouts}}}catch(e){s.error({error:e},"Failed to read config file")}return c}e.s(["getActiveOpenAIConfig",0,function(){let e=p(),r=e.openai?.instances||[],t=e.openai?.activeInstanceId;if(t&&0!==r.length)return r.find(e=>e.id===t)},"getAppConfig",0,p,"getAppTimeZone",0,function(){return p().timeZone||i.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,i.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let t=p(),n={...t,...e,timeZone:e.timeZone?.trim()??t.timeZone??i.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??t.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??t.openai?.activeInstanceId},gemini:{...t.gemini,...e.gemini},azure:{...t.azure,...e.azure},anthropic:{...t.anthropic,...e.anthropic},...l(t,e),prompts:{...t.prompts,...e.prompts},timeouts:{...t.timeouts,...e.timeouts}};try{return r.default.writeFileSync(o,JSON.stringify(n,null,2)),n}catch(e){throw s.error({error:e},"Failed to write config file"),e}}])},50377,e=>{"use strict";let r={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function t(e,n={}){let i,a=r[e],s=(i=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==r[i]?r[i]:r.info;return(r,t)=>{let i,o;if(a<s)return;let c=new Date;"string"==typeof r?(i={},o=r):(i=r,o=t||"");{let r=JSON.stringify({level:e,time:c.toISOString(),...n,...i,msg:o});switch(e){case"error":case"fatal":console.error(r);break;case"warn":console.warn(r);break;default:console.log(r)}}}}let n=function e(r={}){return r.module,{trace:t("trace",r),debug:t("debug",r),info:t("info",r),warn:t("warn",r),error:t("error",r),fatal:t("fatal",r),child:t=>e({...r,...t}),box:(e,t,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...r,title:e,..."string"==typeof t?{content:t}:t||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])},4752,e=>{"use strict";var r=e.i(98043),t=e.i(43911);let n=(0,e.i(50377).createLogger)("mastery"),i=["correct","wrong","not_attempted"];function a(e){return"string"==typeof e&&i.includes(e)}let s={easy:.85,medium:.95,hard:1,harder:1},o={wrong:.1,not_attempted:0};async function c(e){let i=await r.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 c=i.practiceRecords.filter(e=>a(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 r=.15,t=.5;return e.forEach((n,i)=>{let a=Math.pow(.7,e.length-1-i),c="correct"===n.result?s[n.difficulty||"medium"]??s.medium:o[n.result];r+=a*c,t+=a}),Math.round(r/t*100)/100}(c);if(null===l)return void await r.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:null,masteryReason:null,masterySource:null,masteryEvaluatedAt:null}});let p=l,u="",d="rule";try{let e=await (0,t.getAIService)().evaluateMastery({questionText:i.questionText||"",knowledgePoints:i.tags.map(e=>e.name),mistakeStatus:i.mistakeStatus,history:c,ruleProbability:l});p=e.probability,u=e.reason,d="ai"}catch(t){n.warn({errorItemId:e,error:t instanceof Error?t.message:String(t)},"AI mastery evaluation failed, using rule estimate");let r=c.filter(e=>"correct"===e.result).length;u=`共练习 ${c.length} 次,做对 ${r} 次(规则估算)`}await r.prisma.errorItem.update({where:{id:i.id},data:{masteryProbability:p,masteryReason:u,masterySource:d,masteryEvaluatedAt:new Date,masteryLevel:+(p>=.8)}}),n.info({errorItemId:e,probability:p,source:d},"Mastery evaluated")}let l=new Set,p=!1;async function u(){if(!p){p=!0;try{for(;l.size>0;){let[e]=l;l.delete(e);try{await c(e)}catch(r){n.error({errorItemId:e,error:r},"Mastery evaluation failed")}}}finally{p=!1}}}e.s(["PRACTICE_RESULTS",0,i,"isPracticeResult",0,a,"scheduleMasteryEvaluation",0,function(e){e.forEach(e=>l.add(e)),u()}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__131taws._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[63021,(e,t,r)=>{t.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var t=e.i(63021);let r=e.g.prisma||new t.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,r])},49719,(e,t,r)=>{t.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(t,r)=>{try{var a=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(a),r()}catch(e){r(e)}},!0),874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},27699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},21517,(e,t,r)=>{t.exports=e.x("http",()=>require("http"))},24836,(e,t,r)=>{t.exports=e.x("https",()=>require("https"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},45706,(e,t,r)=>{t.exports=e.x("querystring",()=>require("querystring"))},92509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},6461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},90900,e=>e.a(async(t,r)=>{try{var a=e.i(58821),n=e.i(98043),i=e.i(63856),s=e.i(76759),o=e.i(50377),l=t([i]);[i]=l.then?(await l)():l;let c=(0,o.createLogger)("api:error-items:practice-records");async function u(e,{params:t}){let{id:r}=await t;try{let e=await (0,i.getCurrentUser)();if(!e)return(0,s.unauthorized)("Authentication required");let t=await n.prisma.errorItem.findUnique({where:{id:r},select:{userId:!0,masteryLevel:!0,masteryProbability:!0,masteryReason:!0,masterySource:!0,masteryEvaluatedAt:!0,practiceRecords:{where:{result:{not:null}},orderBy:[{createdAt:"desc"},{id:"desc"}],select:{id:!0,result:!0,difficulty:!0,source:!0,questionText:!0,answerText:!0,analysis:!0,wrongAnswerText:!0,mistakeAnalysis:!0,originalImageUrl:!0,figureSvg:!0,createdAt:!0,examQuestion:{select:{paperId:!0,order:!0,paper:{select:{title:!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");let{userId:o,practiceRecords:l,...u}=t;return a.NextResponse.json({...u,records:l.map(({examQuestion:e,...t})=>({...t,exam:e?{paperId:e.paperId,order:e.order,title:e.paper.title}:null}))})}catch(e){return c.error({error:e},"Error fetching practice records"),(0,s.internalError)("Failed to fetch practice records")}}e.s(["GET",0,u]),r()}catch(e){r(e)}},!1),42249,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),c=e.i(95169),d=e.i(47587),p=e.i(66012),R=e.i(70101),x=e.i(74838),E=e.i(10372),h=e.i(93695),f=e.i(9580);e.i(52474);var m=e.i(220);let v=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/error-items/[id]/practice-records/route",pathname:"/api/error-items/[id]/practice-records",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/error-items/[id]/practice-records/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(90900),...{}}),{workAsyncStorage:g,workUnitAsyncStorage:N,serverHooks:O}=v;async function I(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/error-items/[id]/practice-records/route";g=g.replace(/\/index$/,"")||"/";let N=await v.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!N)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:O,deploymentId:I,params:A,nextConfig:T,parsedUrl:w,isDraftMode:y,prerenderManifest:_,routerServerContext:D,isOnDemandRevalidate:S,revalidateOnlyGenerated:C,resolvedPathname:b,clientReferenceManifest:q,serverActionsManifest:U}=N,P=(0,o.normalizeAppPath)(g),L=!!_.routes[b]&&(v.isDev||(0,f.isRouteCacheOwner)(b,v.cacheOwner,_.routes[b])),F=!!(_.dynamicRoutes[P]||L),j=async()=>((null==D?void 0:D.render404)?await D.render404(e,t,w,!1):t.end("This page could not be found"),null);if(F&&!y){let e=_.dynamicRoutes[P];if(e&&!1===e.fallback&&!L){if(T.adapterPath)return await j();throw new h.NoFallbackError}}let k=null;!F||v.isDev||y||(k="/index"===(k=b)?"/":k);let H=!0===v.isDev||!F,M=F&&!H;U&&q&&(0,s.setManifestsSingleton)({page:g,clientReferenceManifest:q,serverActionsManifest:U});let B=e.method||"GET",G=(0,i.getTracer)(),V=G.getActiveScopeSpan(),K=!!(null==D?void 0:D.isWrappedByNextServer),Q=!!(0,n.getRequestMeta)(e,"minimalMode"),z=(0,n.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,T,_,Q);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let X={params:A,previewProps:_.preview,renderOpts:{experimental:{authInterrupts:!!T.experimental.authInterrupts,useCacheTimeout:T.experimental.useCacheTimeout},cacheComponents:!!T.cacheComponents,validationLevel:T.experimental.instantInsights.validationLevel,isDraftMode:y,supportsDynamicResponse:H,incrementalCache:z,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,D)},sharedContext:{buildId:O,deploymentId:I}},$=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),Z=u.NextRequestAdapter.fromNodeNextRequest($,(0,u.signalFromNodeResponse)(t)),J=async({previousCacheEntry:r})=>{try{if(!Q&&S&&C&&!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,X);e.fetchMetrics=X.renderOpts.fetchMetrics;let i=X.renderOpts.pendingWaitUntil;i&&a.waitUntil&&(a.waitUntil(i),i=void 0);let s=X.renderOpts.collectedTags;if(!F)return await (0,p.sendResponse)($,W,n,i),null;{let e=await n.blob(),t=(0,R.toNodeOutgoingHttpHeaders)(n.headers);s&&(t[E.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==X.renderOpts.collectedRevalidate&&!(X.renderOpts.collectedRevalidate>=E.INFINITE_CACHE)&&X.renderOpts.collectedRevalidate,a=void 0===X.renderOpts.collectedExpire||X.renderOpts.collectedExpire>=E.INFINITE_CACHE?!1!==r&&r>0?T.expireTime:void 0:X.renderOpts.collectedExpire;return{value:{kind:m.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:g,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:S})},!1,D),t}},Y=async(n,s)=>{try{var o,l;let n=await v.handleResponse({req:e,nextConfig:T,cacheKey:k,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:_,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:C,responseGenerator:J,waitUntil:a.waitUntil,isMinimalMode:Q});if(!F)return;if((null==n||null==(o=n.value)?void 0:o.kind)!==m.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});Q||t.setHeader("x-nextjs-cache",S?"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,R.fromNodeOutgoingHttpHeaders)(n.value.headers);Q&&F||i.delete(E.NEXT_CACHE_TAGS_HEADER),!n.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,x.getCacheControlHeader)(n.cacheControl)),await (0,p.sendResponse)($,W,new Response(n.value.body,{headers:i,status:n.value.status||200}));return}catch(t){if(t instanceof h.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:P,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:S})},!1,D),F)throw t;await (0,p.sendResponse)($,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=G.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.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")||P,o=`${B} ${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&&V)await Y(V,void 0);else{let t=G.getActiveScopeSpan();await G.withPropagatedContext(e.headers,()=>G.trace(c.BaseServerSpan.handleRequest,{spanName:`${B} ${g}`,kind:i.SpanKind.SERVER,attributes:{"http.method":B,"http.target":e.url}},e=>Y(e,t)),void 0,!K)}}e.s(["handler",0,I,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:g,workUnitAsyncStorage:N})},"routeModule",0,v,"serverHooks",0,O,"workAsyncStorage",0,g,"workUnitAsyncStorage",0,N])},76759,e=>{"use strict";var t=e.i(58821);let r={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function a(e,r,a,n){let i={message:e};return a&&(i.code=a),n&&(i.details=n),t.NextResponse.json(i,{status:r})}e.s(["ErrorCode",0,r,"badRequest",0,function(e,t){return a(e,400,r.BAD_REQUEST,t)},"conflict",0,function(e){return a(e,409,r.CONFLICT)},"createErrorResponse",0,a,"forbidden",0,function(e="Forbidden"){return a(e,403,r.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return a(e,500,r.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return a(e,404,r.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return a(e,401,r.UNAUTHORIZED)},"validationError",0,function(e,t){return a(e,400,r.VALIDATION_ERROR,t)}])},63856,e=>e.a(async(t,r)=>{try{var a=e.i(13618),n=e.i(79832),i=e.i(98043),s=t([n]);async function o(){let e=await (0,a.getServerSession)(n.authOptions);return e?.user?.email?i.prisma.user.findUnique({where:{email:e.user.email}}):null}[n]=s.then?(await s)():s,e.s(["getCurrentUser",0,o]),r()}catch(e){r(e)}},!1),50377,e=>{"use strict";let t={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function r(e,a={}){let n,i=t[e],s=(n=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==t[n]?t[n]:t.info;return(t,r)=>{let n,o;if(i<s)return;let l=new Date;"string"==typeof t?(n={},o=t):(n=t,o=r||"");{let t=JSON.stringify({level:e,time:l.toISOString(),...a,...n,msg:o});switch(e){case"error":case"fatal":console.error(t);break;case"warn":console.warn(t);break;default:console.log(t)}}}}let a=function e(t={}){return t.module,{trace:r("trace",t),debug:r("debug",t),info:r("info",t),warn:r("warn",t),error:r("error",t),fatal:r("fatal",t),child:r=>e({...t,...r}),box:(e,r,a="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...t,title:e,..."string"==typeof r?{content:r}:r||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return a.child({module:e})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__13ebiit._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},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)))},91961,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(r=>e.l(r))).then(()=>r(12111)))},72331,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__11p4ahb._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(r=>e.l(r))).then(()=>r(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__14dnbrn._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__14jqm9_._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},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)))},91961,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(r=>e.l(r))).then(()=>r(12111)))},72331,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1loecue._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(r=>e.l(r))).then(()=>r(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__152lbaw._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__17duis5._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__17q3k-v._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__184u6de._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[63021,(e,t,r)=>{t.exports=e.x("@prisma/client-2c3a283f134fdcb6",()=>require("@prisma/client-2c3a283f134fdcb6"))},98043,e=>{"use strict";var t=e.i(63021);let r=e.g.prisma||new t.PrismaClient({log:"true"===process.env.DEBUG_DB?["query","error","warn"]:["error"]});e.s(["prisma",0,r])},49719,(e,t,r)=>{t.exports=e.x("assert",()=>require("assert"))},44950,e=>e.a(async(t,r)=>{try{var n=await e.y("bcryptjs-ee66c2bdc904f2cf");e.n(n),r()}catch(e){r(e)}},!0),874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},54799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},27699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},22734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},21517,(e,t,r)=>{t.exports=e.x("http",()=>require("http"))},24836,(e,t,r)=>{t.exports=e.x("https",()=>require("https"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},20635,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},59043,(e,t,r)=>{t.exports=e.x("next/dist/server/runtime-reacts.external.js",()=>require("next/dist/server/runtime-reacts.external.js"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},14747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},45706,(e,t,r)=>{t.exports=e.x("querystring",()=>require("querystring"))},92509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},24361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},6461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},47381,e=>e.a(async(t,r)=>{try{var n=e.i(58821),a=e.i(98043),i=e.i(79832),o=e.i(13618),s=e.i(98003),l=e.i(76025),c=e.i(76759),p=e.i(50377),u=t([i]);[i]=u.then?(await u)():u;let E=(0,p.createLogger)("api:analytics");async function d(e){let t=await (0,o.getServerSession)(i.authOptions);if(!t||!t.user)return(0,c.unauthorized)();let r=t.user.id;try{let e=await a.prisma.errorItem.count({where:{userId:r}}),t=await a.prisma.errorItem.count({where:{userId:r,masteryLevel:{gt:0}}}),i=e>0?(t/e*100).toFixed(1):0,o=await a.prisma.errorItem.findMany({where:{userId:r},include:{subject:!0}}),c=new Map;o.forEach(e=>{let t=e.subject?.name||"Unknown";c.set(t,(c.get(t)||0)+1)});let p=Array.from(c.entries()).map(([e,t])=>({name:e,value:t})),u=[],d=(0,s.getAppTimeZone)(),E=new Date;for(let e=6;e>=0;e--){let{start:t,end:n}=(0,l.getDayRange)(E,d,-e),i=(0,l.formatDateTime)(t,"MM-dd",d),o=await a.prisma.errorItem.count({where:{userId:r,createdAt:{gte:t,lt:n}}});u.push({date:i,count:o})}return n.NextResponse.json({totalErrors:e,masteredCount:t,masteryRate:i,subjectStats:p,activityData:u})}catch(e){return E.error({error:e},"Error fetching analytics"),(0,c.internalError)("Failed to fetch analytics")}}e.s(["GET",0,d]),r()}catch(e){r(e)}},!1),32424,e=>{"use strict";var t=e.i(47909),r=e.i(74017),n=e.i(96250),a=e.i(59756),i=e.i(61916),o=e.i(74677),s=e.i(69741),l=e.i(16795),c=e.i(87718),p=e.i(95169),u=e.i(47587),d=e.i(66012),E=e.i(70101),m=e.i(74838),R=e.i(10372),x=e.i(93695),f=e.i(9580);e.i(52474);var I=e.i(220);let v=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/analytics/route",pathname:"/api/analytics",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/analytics/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(47381),...{}}),{workAsyncStorage:h,workUnitAsyncStorage:O,serverHooks:g}=v;async function _(e,t,n){n.requestMeta&&(0,a.setRequestMeta)(e,n.requestMeta),v.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let h="/api/analytics/route";h=h.replace(/\/index$/,"")||"/";let O=await v.prepare(e,t,{srcPage:h,multiZoneDraftMode:!1});if(!O)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:g,deploymentId:_,params:N,nextConfig:A,parsedUrl:y,isDraftMode:D,prerenderManifest:T,routerServerContext:w,isOnDemandRevalidate:S,revalidateOnlyGenerated:U,resolvedPathname:P,clientReferenceManifest:b,serverActionsManifest:C}=O,L=(0,s.normalizeAppPath)(h),M=!!T.routes[P]&&(v.isDev||(0,f.isRouteCacheOwner)(P,v.cacheOwner,T.routes[P])),q=!!(T.dynamicRoutes[L]||M),F=async()=>((null==w?void 0:w.render404)?await w.render404(e,t,y,!1):t.end("This page could not be found"),null);if(q&&!D){let e=T.dynamicRoutes[L];if(e&&!1===e.fallback&&!M){if(A.adapterPath)return await F();throw new x.NoFallbackError}}let j=null;!q||v.isDev||D||(j="/index"===(j=P)?"/":j);let k=!0===v.isDev||!q,K=q&&!k;C&&b&&(0,o.setManifestsSingleton)({page:h,clientReferenceManifest:b,serverActionsManifest:C});let Z=e.method||"GET",V=(0,i.getTracer)(),H=V.getActiveScopeSpan(),B=!!(null==w?void 0:w.isWrappedByNextServer),G=!!(0,a.getRequestMeta)(e,"minimalMode"),z=(0,a.getRequestMeta)(e,"incrementalCache")||await v.getIncrementalCache(e,A,T,G);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let Y={params:N,previewProps:T.preview,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts,useCacheTimeout:A.experimental.useCacheTimeout},cacheComponents:!!A.cacheComponents,validationLevel:A.experimental.instantInsights.validationLevel,isDraftMode:D,supportsDynamicResponse:k,incrementalCache:z,hmrRefreshHash:(0,a.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:A.cacheLife,staticPageGenerationTimeout:A.staticPageGenerationTimeout,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>v.onRequestError(e,t,n,a,w)},sharedContext:{buildId:g,deploymentId:_}},$=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),Q=c.NextRequestAdapter.fromNodeNextRequest($,(0,c.signalFromNodeResponse)(t)),W=async({previousCacheEntry:r})=>{try{if(!G&&S&&U&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await v.handle(Q,Y);e.fetchMetrics=Y.renderOpts.fetchMetrics;let i=Y.renderOpts.pendingWaitUntil;i&&n.waitUntil&&(n.waitUntil(i),i=void 0);let o=Y.renderOpts.collectedTags;if(!q)return await (0,d.sendResponse)($,X,a,i),null;{let e=await a.blob(),t=(0,E.toNodeOutgoingHttpHeaders)(a.headers);o&&(t[R.NEXT_CACHE_TAGS_HEADER]=o),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==Y.renderOpts.collectedRevalidate&&!(Y.renderOpts.collectedRevalidate>=R.INFINITE_CACHE)&&Y.renderOpts.collectedRevalidate,n=void 0===Y.renderOpts.collectedExpire||Y.renderOpts.collectedExpire>=R.INFINITE_CACHE?!1!==r&&r>0?A.expireTime:void 0:Y.renderOpts.collectedExpire;return{value:{kind:I.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await v.onRequestError(e,t,{routerKind:"App Router",routePath:h,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:S})},!1,w),t}},J=async(a,o)=>{try{var s,l;let a=await v.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:U,responseGenerator:W,waitUntil:n.waitUntil,isMinimalMode:G});if(!q)return;if((null==a||null==(s=a.value)?void 0:s.kind)!==I.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==a||null==(l=a.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});G||t.setHeader("x-nextjs-cache",S?"REVALIDATED":a.isMiss?"MISS":a.isStale?"STALE":"HIT"),D&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let i=(0,E.fromNodeOutgoingHttpHeaders)(a.value.headers);G&&q||i.delete(R.NEXT_CACHE_TAGS_HEADER),!a.cacheControl||t.getHeader("Cache-Control")||i.get("Cache-Control")||i.set("Cache-Control",(0,m.getCacheControlHeader)(a.cacheControl)),await (0,d.sendResponse)($,X,new Response(a.value.body,{headers:i,status:a.value.status||200}));return}catch(t){if(t instanceof x.NoFallbackError||await v.onRequestError(e,t,{routerKind:"App Router",routePath:L,routeType:"route",revalidateReason:(0,u.getRevalidateReason)({isStaticGeneration:K,isOnDemandRevalidate:S})},!1,w),q)throw t;await (0,d.sendResponse)($,X,new Response(null,{status:500}));return}finally{(()=>{if(!a)return;let e=t.statusCode;a.setAttributes({"http.status_code":e,"next.rsc":!1}),e&&e>=500&&(a.setStatus({code:i.SpanStatusCode.ERROR}),a.setAttribute("error.type",e.toString()));let r=V.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.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 n=r.get("next.route")||L,s=`${Z} ${n}`;a.setAttributes({"next.route":n,"http.route":n,"next.span_name":s}),a.updateName(s),o&&o!==a&&(o.setAttribute("http.route",n),o.updateName(s))})()}};if(B&&H)await J(H,void 0);else{let t=V.getActiveScopeSpan();await V.withPropagatedContext(e.headers,()=>V.trace(p.BaseServerSpan.handleRequest,{spanName:`${Z} ${h}`,kind:i.SpanKind.SERVER,attributes:{"http.method":Z,"http.target":e.url}},e=>J(e,t)),void 0,!B)}}e.s(["handler",0,_,"patchFetch",0,function(){return(0,n.patchFetch)({workAsyncStorage:h,workUnitAsyncStorage:O})},"routeModule",0,v,"serverHooks",0,g,"workAsyncStorage",0,h,"workUnitAsyncStorage",0,O])},98876,e=>{"use strict";let t={minimax:{name:"MiniMax",baseUrl:"https://api.minimax.cn/v1",model:"MiniMax-M3.1-Flash",envPrefix:"MINIMAX",consoleUrl:"https://platform.minimax.cn"},glm:{name:"智谱 GLM",baseUrl:"https://open.bigmodel.cn/api/paas/v4",model:"glm-5.3-flash",envPrefix:"GLM",consoleUrl:"https://open.bigmodel.cn"},deepseek:{name:"DeepSeek",baseUrl:"https://api.deepseek.com",model:"deepseek-flash",envPrefix:"DEEPSEEK",consoleUrl:"https://platform.deepseek.com"},kimi:{name:"Kimi",baseUrl:"https://api.moonshot.cn/v1",model:"kimi-k3",envPrefix:"KIMI",consoleUrl:"https://platform.kimi.com"}},r=Object.keys(t);e.s(["VENDOR_PRESETS",0,t,"VENDOR_PROVIDER_IDS",0,r,"isVendorProvider",0,function(e){return"string"==typeof e&&Object.prototype.hasOwnProperty.call(t,e)},"resolveVendorConfig",0,function(e,r){let n=t[e];return{apiKey:r?.apiKey||"",baseUrl:r?.baseUrl||n.baseUrl,model:r?.model||n.model}}])},76759,e=>{"use strict";var t=e.i(58821);let r={UNAUTHORIZED:"UNAUTHORIZED",SESSION_EXPIRED:"SESSION_EXPIRED",FORBIDDEN:"FORBIDDEN",NOT_OWNER:"NOT_OWNER",ADMIN_REQUIRED:"ADMIN_REQUIRED",NOT_FOUND:"NOT_FOUND",USER_NOT_FOUND:"USER_NOT_FOUND",ITEM_NOT_FOUND:"ITEM_NOT_FOUND",BAD_REQUEST:"BAD_REQUEST",INVALID_INPUT:"INVALID_INPUT",MISSING_REQUIRED_FIELD:"MISSING_REQUIRED_FIELD",VALIDATION_ERROR:"VALIDATION_ERROR",OPERATION_NOT_ALLOWED:"OPERATION_NOT_ALLOWED",CONFLICT:"CONFLICT",ALREADY_EXISTS:"ALREADY_EXISTS",INTERNAL_ERROR:"INTERNAL_ERROR",DATABASE_ERROR:"DATABASE_ERROR",AI_ERROR:"AI_ERROR"};function n(e,r,n,a){let i={message:e};return n&&(i.code=n),a&&(i.details=a),t.NextResponse.json(i,{status:r})}e.s(["ErrorCode",0,r,"badRequest",0,function(e,t){return n(e,400,r.BAD_REQUEST,t)},"conflict",0,function(e){return n(e,409,r.CONFLICT)},"createErrorResponse",0,n,"forbidden",0,function(e="Forbidden"){return n(e,403,r.FORBIDDEN)},"internalError",0,function(e="Internal server error"){return n(e,500,r.INTERNAL_ERROR)},"notFound",0,function(e="Not found"){return n(e,404,r.NOT_FOUND)},"unauthorized",0,function(e="Unauthorized"){return n(e,401,r.UNAUTHORIZED)},"validationError",0,function(e,t){return n(e,400,r.VALIDATION_ERROR,t)}])},98003,e=>{"use strict";var t=e.i(22734),r=e.i(14747),n=e.i(50377),a=e.i(76025),i=e.i(98876);let o=(0,n.createLogger)("config"),s=r.default.join(process.env.CONFIG_DIR||r.default.join(process.cwd(),"config"),"app-config.json"),l={aiProvider:process.env.AI_PROVIDER||"minimax",allowRegistration:!0,timeZone:a.DEFAULT_TIME_ZONE,openai:{instances:process.env.OPENAI_API_KEY?[{id:"env-default",name:"Default (ENV)",apiKey:process.env.OPENAI_API_KEY,baseUrl:process.env.OPENAI_BASE_URL||"https://api.openai.com/v1",model:process.env.OPENAI_MODEL||"gpt-6.1-sol"}]:[],activeInstanceId:process.env.OPENAI_API_KEY?"env-default":void 0},gemini:{apiKey:process.env.GOOGLE_API_KEY,baseUrl:process.env.GEMINI_BASE_URL,model:process.env.GEMINI_MODEL||"gemini-2.5-flash"},azure:{apiKey:process.env.AZURE_OPENAI_API_KEY,endpoint:process.env.AZURE_OPENAI_ENDPOINT,deploymentName:process.env.AZURE_OPENAI_DEPLOYMENT,apiVersion:process.env.AZURE_OPENAI_API_VERSION||"2024-02-15-preview",model:process.env.AZURE_OPENAI_MODEL||"gpt-4o"},anthropic:{apiKey:process.env.ANTHROPIC_API_KEY,baseUrl:process.env.ANTHROPIC_BASE_URL,model:process.env.ANTHROPIC_MODEL||"claude-sonnet-5-5"},...Object.fromEntries(i.VENDOR_PROVIDER_IDS.map(e=>{let t=i.VENDOR_PRESETS[e].envPrefix;return[e,{apiKey:process.env[`${t}_API_KEY`],baseUrl:process.env[`${t}_BASE_URL`],model:process.env[`${t}_MODEL`]}]})),prompts:{analyze:"",similar:""},timeouts:{analyze:18e4}};function c(e,t){return Object.fromEntries(i.VENDOR_PROVIDER_IDS.map(r=>[r,{...e[r],...t[r]}]))}function p(){if(t.default.existsSync(s))try{var e;let r=t.default.readFileSync(s,"utf-8"),n=JSON.parse(r),i=n.openai;if((e=n.openai)&&"object"==typeof e&&"apiKey"in e&&!("instances"in e)){o.info("Detected legacy OpenAI config, migrating to multi-instance format..."),i=function(e){if(!e.apiKey)return{instances:[],activeInstanceId:void 0};let t={id:"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}),name:"Default",apiKey:e.apiKey,baseUrl:e.baseUrl||"https://api.openai.com/v1",model:e.model||"gpt-6.1-sol"};return{instances:[t],activeInstanceId:t.id}}(n.openai);let e={...n,openai:i};t.default.writeFileSync(s,JSON.stringify(e,null,2)),o.info("Legacy OpenAI config migrated successfully")}return{...l,...n,timeZone:(0,a.isValidTimeZone)(n.timeZone)?n.timeZone.trim():a.DEFAULT_TIME_ZONE,openai:{instances:i?.instances||l.openai?.instances||[],activeInstanceId:i?.activeInstanceId||l.openai?.activeInstanceId},gemini:{...l.gemini,...n.gemini},azure:{...l.azure,...n.azure},anthropic:{...l.anthropic,...n.anthropic},...c(l,n),prompts:{...l.prompts,...n.prompts},timeouts:{...l.timeouts,...n.timeouts}}}catch(e){o.error({error:e},"Failed to read config file")}return l}e.s(["getActiveOpenAIConfig",0,function(){let e=p(),t=e.openai?.instances||[],r=e.openai?.activeInstanceId;if(r&&0!==t.length)return t.find(e=>e.id===r)},"getAppConfig",0,p,"getAppTimeZone",0,function(){return p().timeZone||a.DEFAULT_TIME_ZONE},"updateAppConfig",0,function(e){if(void 0!==e.timeZone&&!(0,a.isValidTimeZone)(e.timeZone))throw Error("INVALID_TIME_ZONE");let r=p(),n={...r,...e,timeZone:e.timeZone?.trim()??r.timeZone??a.DEFAULT_TIME_ZONE,openai:{instances:e.openai?.instances??r.openai?.instances??[],activeInstanceId:e.openai?.activeInstanceId??r.openai?.activeInstanceId},gemini:{...r.gemini,...e.gemini},azure:{...r.azure,...e.azure},anthropic:{...r.anthropic,...e.anthropic},...c(r,e),prompts:{...r.prompts,...e.prompts},timeouts:{...r.timeouts,...e.timeouts}};try{return t.default.writeFileSync(s,JSON.stringify(n,null,2)),n}catch(e){throw o.error({error:e},"Failed to write config file"),e}}])},50377,e=>{"use strict";let t={trace:10,debug:20,info:30,warn:40,error:50,fatal:60};function r(e,n={}){let a,i=t[e],o=(a=process.env.LOG_LEVEL?.toLowerCase())&&void 0!==t[a]?t[a]:t.info;return(t,r)=>{let a,s;if(i<o)return;let l=new Date;"string"==typeof t?(a={},s=t):(a=t,s=r||"");{let t=JSON.stringify({level:e,time:l.toISOString(),...n,...a,msg:s});switch(e){case"error":case"fatal":console.error(t);break;case"warn":console.warn(t);break;default:console.log(t)}}}}let n=function e(t={}){return t.module,{trace:r("trace",t),debug:r("debug",t),info:r("info",t),warn:r("warn",t),error:r("error",t),fatal:r("fatal",t),child:r=>e({...t,...r}),box:(e,r,n="📋")=>{console.log(JSON.stringify({level:"info",time:new Date().toISOString(),...t,title:e,..."string"==typeof r?{content:r}:r||{},msg:e}))},divider:(e="-")=>{}}}({env:"production"});e.s(["createLogger",0,function(e){return n.child({module:e})}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__18atlj8._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__18c7l6u._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},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)))},91961,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(r=>e.l(r))).then(()=>r(12111)))},72331,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0bqawi0._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(r=>e.l(r))).then(()=>r(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__1jdi-1f._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},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)))},91961,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(r=>e.l(r))).then(()=>r(12111)))},72331,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__11_1z7m._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(r=>e.l(r))).then(()=>r(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__1ju8z29._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__1loecue._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__1p8hw44._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[85685,e=>{e.v(e=>Promise.resolve().then(()=>e(54799)))},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)))},91961,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__1jtd2ar._.js"].map(r=>e.l(r))).then(()=>r(12111)))},72331,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__207mxv8._.js","server/chunks/[root-of-the-server]__1nmtv65._.js","server/chunks/[root-of-the-server]__0_t7bbz._.js"].map(r=>e.l(r))).then(()=>r(20442)))},30249,e=>{e.v(e=>Promise.resolve().then(()=>e(5898)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__20465pr._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[51615,(e,r,o)=>{r.exports=e.x("node:buffer",()=>require("node:buffer"))},2157,(e,r,o)=>{r.exports=e.x("node:fs",()=>require("node:fs"))},47299,(e,r,o)=>{r.exports=e.x("node:http",()=>require("node:http"))},61095,(e,r,o)=>{r.exports=e.x("node:net",()=>require("node:net"))},50227,(e,r,o)=>{r.exports=e.x("node:path",()=>require("node:path"))},59639,(e,r,o)=>{r.exports=e.x("node:process",()=>require("node:process"))},57764,(e,r,o)=>{r.exports=e.x("node:url",()=>require("node:url"))},12057,(e,r,o)=>{r.exports=e.x("node:util",()=>require("node:util"))},27028,(e,r,o)=>{r.exports=e.x("node:zlib",()=>require("node:zlib"))},25897,e=>{e.v(r=>Promise.all(["server/chunks/[root-of-the-server]__0akadps._.js","server/chunks/[root-of-the-server]__15tkoe6._.js"].map(r=>e.l(r))).then(()=>r(55057)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__207mxv8._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
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),w=e.i(9580);e.i(52474);var E=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:S,serverHooks:T}=x;async function y(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 S=await x.prepare(e,t,{srcPage:R,multiZoneDraftMode:!1});if(!S)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:T,deploymentId:y,params:I,nextConfig:v,parsedUrl:A,isDraftMode:_,prerenderManifest:q,routerServerContext:C,isOnDemandRevalidate:N,revalidateOnlyGenerated:P,resolvedPathname:O,clientReferenceManifest:U,serverActionsManifest:M}=S,b=(0,o.normalizeAppPath)(R),k=!!q.routes[O]&&(x.isDev||(0,w.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;M&&U&&(0,s.setManifestsSingleton)({page:R,clientReferenceManifest:U,serverActionsManifest:M});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:I,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:T,deploymentId:y}},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: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 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)!==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});$||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,y,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:S})},"routeModule",0,x,"serverHooks",0,T,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,S])},63856,e=>e.a(async(t,r)=>{try{var a=e.i(13618),i=e.i(79832),n=e.i(98043),s=t([i]);async function o(){let e=await (0,a.getServerSession)(i.authOptions);return e?.user?.email?n.prisma.user.findUnique({where:{email:e.user.email}}):null}[i]=s.then?(await s)():s,e.s(["getCurrentUser",0,o]),r()}catch(e){r(e)}},!1),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 w(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 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 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,E,"regenerateExamQuestion",0,f,"selectSourceItems",0,l])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0_o8yhv._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[34828,e=>e.a(async(t,r)=>{try{var a=e.i(58821),i=e.i(69719),n=e.i(98043),s=e.i(63856),o=e.i(76759),u=e.i(50377),l=e.i(74866),d=t([s]);[s]=d.then?(await d)():d;let p=(0,u.createLogger)("api:exams:retry"),m=i.z.object({language:i.z.enum(["zh","en"]).optional()});async function c(e,{params:t}){let{id:r}=await t;try{let t=await (0,s.getCurrentUser)();if(!t)return(0,o.unauthorized)("Authentication required");let i=await n.prisma.examPaper.findUnique({where:{id:r},select:{userId:!0}});if(!i||i.userId!==t.id)return(0,o.notFound)("Exam paper not found");let u=m.safeParse(await e.json().catch(()=>({})));return await n.prisma.examPaper.update({where:{id:r},data:{status:"generating"}}),(0,l.generateExamPaper)(r,u.success&&u.data.language||"zh"),a.NextResponse.json({success:!0})}catch(e){return p.error({error:e},"Error retrying exam paper"),(0,o.internalError)("Failed to retry exam paper")}}e.s(["POST",0,c]),r()}catch(e){r(e)}},!1),15947,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),h=e.i(74838),g=e.i(10372),f=e.i(93695),w=e.i(9580);e.i(52474);var x=e.i(220);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/exams/[id]/retry/route",pathname:"/api/exams/[id]/retry",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/exams/[id]/retry/route.ts",nextConfigOutput:"standalone",userland:()=>e.r(34828),...{}}),{workAsyncStorage:y,workUnitAsyncStorage:R,serverHooks:v}=E;async function S(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let y="/api/exams/[id]/retry/route";y=y.replace(/\/index$/,"")||"/";let R=await E.prepare(e,t,{srcPage:y,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:T,nextConfig:I,parsedUrl:A,isDraftMode:C,prerenderManifest:_,routerServerContext:P,isOnDemandRevalidate:q,revalidateOnlyGenerated:N,resolvedPathname:b,clientReferenceManifest:M,serverActionsManifest:O}=R,U=(0,o.normalizeAppPath)(y),k=!!_.routes[b]&&(E.isDev||(0,w.isRouteCacheOwner)(b,E.cacheOwner,_.routes[b])),D=!!(_.dynamicRoutes[U]||k),j=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&&!C){let e=_.dynamicRoutes[U];if(e&&!1===e.fallback&&!k){if(I.adapterPath)return await j();throw new f.NoFallbackError}}let L=null;!D||E.isDev||C||(L="/index"===(L=b)?"/":L);let H=!0===E.isDev||!D,Q=D&&!H;O&&M&&(0,s.setManifestsSingleton)({page:y,clientReferenceManifest:M,serverActionsManifest:O});let F=e.method||"GET",X=(0,n.getTracer)(),K=X.getActiveScopeSpan(),$=!!(null==P?void 0:P.isWrappedByNextServer),B=!!(0,i.getRequestMeta)(e,"minimalMode"),z=(0,i.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,I,_,B);null==z||z.resetRequestCache(),globalThis.__incrementalCache=z;let G={params:T,previewProps:_.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts,useCacheTimeout:I.experimental.useCacheTimeout},cacheComponents:!!I.cacheComponents,validationLevel:I.experimental.instantInsights.validationLevel,isDraftMode:C,supportsDynamicResponse:H,incrementalCache:z,hmrRefreshHash:(0,i.getRequestMeta)(e,"hmrRefreshHash"),cacheLifeProfiles:I.cacheLife,staticPageGenerationTimeout:I.staticPageGenerationTimeout,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,i)=>E.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&&N&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await E.handle(J,G);e.fetchMetrics=G.renderOpts.fetchMetrics;let n=G.renderOpts.pendingWaitUntil;n&&a.waitUntil&&(a.waitUntil(n),n=void 0);let s=G.renderOpts.collectedTags;if(!D)return await (0,p.sendResponse)(V,W,i,n),null;{let e=await i.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(i.headers);s&&(t[g.NEXT_CACHE_TAGS_HEADER]=s),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==G.renderOpts.collectedRevalidate&&!(G.renderOpts.collectedRevalidate>=g.INFINITE_CACHE)&&G.renderOpts.collectedRevalidate,a=void 0===G.renderOpts.collectedExpire||G.renderOpts.collectedExpire>=g.INFINITE_CACHE?!1!==r&&r>0?I.expireTime:void 0:G.renderOpts.collectedExpire;return{value:{kind:x.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 E.onRequestError(e,t,{routerKind:"App Router",routePath:y,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:q})},!1,P),t}},Z=async(i,s)=>{try{var o,u;let i=await E.handleResponse({req:e,nextConfig:I,cacheKey:L,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:_,isRoutePPREnabled:!1,isOnDemandRevalidate:q,revalidateOnlyGenerated:N,responseGenerator:Y,waitUntil:a.waitUntil,isMinimalMode:B});if(!D)return;if((null==i||null==(o=i.value)?void 0:o.kind)!==x.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"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let n=(0,m.fromNodeOutgoingHttpHeaders)(i.value.headers);B&&D||n.delete(g.NEXT_CACHE_TAGS_HEADER),!i.cacheControl||t.getHeader("Cache-Control")||n.get("Cache-Control")||n.set("Cache-Control",(0,h.getCacheControlHeader)(i.cacheControl)),await (0,p.sendResponse)(V,W,new Response(i.value.body,{headers:n,status:i.value.status||200}));return}catch(t){if(t instanceof f.NoFallbackError||await E.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,p.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: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")||U,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)await Z(K,void 0);else{let t=X.getActiveScopeSpan();await X.withPropagatedContext(e.headers,()=>X.trace(d.BaseServerSpan.handleRequest,{spanName:`${F} ${y}`,kind:n.SpanKind.SERVER,attributes:{"http.method":F,"http.target":e.url}},e=>Z(e,t)),void 0,!$)}}e.s(["handler",0,S,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:y,workUnitAsyncStorage:R})},"routeModule",0,E,"serverHooks",0,v,"workAsyncStorage",0,y,"workUnitAsyncStorage",0,R])},63856,e=>e.a(async(t,r)=>{try{var a=e.i(13618),i=e.i(79832),n=e.i(98043),s=t([i]);async function o(){let e=await (0,a.getServerSession)(i.authOptions);return e?.user?.email?n.prisma.user.findUnique({where:{email:e.user.email}}):null}[i]=s.then?(await s)():s,e.s(["getCurrentUser",0,o]),r()}catch(e){r(e)}},!1),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 h(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 g={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 w(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:g});return s.info({paperId:e,questionId:a,mode:u},"Exam question regenerated"),m}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 x(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,h,"isPaperGenerating",0,function(e){return m.has(e)},"recordExamResults",0,x,"regenerateExamQuestion",0,f,"selectSourceItems",0,l])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0rdo0a4._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
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 y=e.i(220);let E=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}=E;async function S(e,t,a){a.requestMeta&&(0,i.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let x="/api/exams/[id]/results/route";x=x.replace(/\/index$/,"")||"/";let R=await E.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:q,isOnDemandRevalidate:P,revalidateOnlyGenerated:b,resolvedPathname:M,clientReferenceManifest:N,serverActionsManifest:O}=R,U=(0,o.normalizeAppPath)(x),k=!!C.routes[M]&&(E.isDev||(0,w.isRouteCacheOwner)(M,E.cacheOwner,C.routes[M])),D=!!(C.dynamicRoutes[U]||k),L=async()=>((null==q?void 0:q.render404)?await q.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||E.isDev||_||(j="/index"===(j=M)?"/":j);let H=!0===E.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==q?void 0:q.isWrappedByNextServer),B=!!(0,i.getRequestMeta)(e,"minimalMode"),K=(0,i.getRequestMeta)(e,"incrementalCache")||await E.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)=>E.onRequestError(e,t,a,i,q)},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&&P&&b&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await E.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:y.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 E.onRequestError(e,t,{routerKind:"App Router",routePath:x,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:P})},!1,q),t}},Z=async(i,n)=>{try{var o,u;let i=await E.handleResponse({req:e,nextConfig:T,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:P,revalidateOnlyGenerated:b,responseGenerator:Y,waitUntil:a.waitUntil,isMinimalMode:B});if(!D)return;if((null==i||null==(o=i.value)?void 0:o.kind)!==y.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",P?"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 E.onRequestError(e,t,{routerKind:"App Router",routePath:U,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:Q,isOnDemandRevalidate:P})},!1,q),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,E,"serverHooks",0,v,"workAsyncStorage",0,x,"workUnitAsyncStorage",0,R])},63856,e=>e.a(async(t,r)=>{try{var a=e.i(13618),i=e.i(79832),s=e.i(98043),n=t([i]);async function o(){let e=await (0,a.getServerSession)(i.authOptions);return e?.user?.email?s.prisma.user.findUnique({where:{email:e.user.email}}):null}[i]=n.then?(await n)():n,e.s(["getCurrentUser",0,o]),r()}catch(e){r(e)}},!1),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 y(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,y,"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=_167vv93._.js.map
|