- Update architecture impact map (004) and data (005) with new modules - Add lesson-preparation usage fixes design spec - Add teacher web test post-audit report
1673 lines
104 KiB
Markdown
1673 lines
104 KiB
Markdown
# 教师端 Web 功能测试报告 (Post-Audit)
|
||
|
||
> 测试日期: 2026-06-23 18:27:12
|
||
> 测试范围: 所有教师端页面功能 (审计修复后)
|
||
> 测试工具: Playwright + Chromium (Python)
|
||
> 测试账号: t_chinese_1@xiaoxue.edu.cn
|
||
|
||
---
|
||
|
||
## 一、测试概览
|
||
|
||
| 指标 | 数值 |
|
||
|------|------|
|
||
| 总测试页面数 | 39 |
|
||
| PASS | 38 |
|
||
| FAIL | 1 |
|
||
| WARN | 0 |
|
||
| 通过率 | 97.4% |
|
||
|
||
---
|
||
|
||
## 二、页面测试详情
|
||
|
||
### Dashboard
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/dashboard` | 200 | passed | 错误: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<SidebarProvider sidebar={<AppSidebar>}>
|
||
<div className="flex h-scr...">
|
||
<aside>
|
||
<div className="flex-1 fle...">
|
||
<a>
|
||
...
|
||
<div className="flex items...">
|
||
<GlobalSearch>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" size="icon" className="relative t..." aria-label="通知" ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap round..."}
|
||
aria-label="通知"
|
||
type="button"
|
||
+ id="radix-_R_19ebn6lb_"
|
||
- id="radix-_R_55qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" className="relative s..." type="button" id="radix-_R_1..." ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-..."}
|
||
type="button"
|
||
+ id="radix-_R_1pebn6lb_"
|
||
- id="radix-_R_75qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
<main>
|
||
<AiAssistantWidget>
|
||
<Sheet open={false} onOpenChange={function bound dispatchSetState}>
|
||
<Dialog data-slot="sheet" open={false} onOpenChange={function bound dispatchSetState}>
|
||
<DialogProvider scope={undefined} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<SheetTrigger asChild={true}>
|
||
<DialogTrigger data-slot="sheet-trigger" asChild={true}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button type="button" size="icon" className="fixed bott..." aria-label="打开 AI 助手" ...>
|
||
<button
|
||
data-slot="sheet-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm f..."}
|
||
type="button"
|
||
aria-label="打开 AI 助手"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_2ebn6lb_"
|
||
- aria-controls="radix-_R_9qbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
|
|
||
|
||
### Textbooks
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/textbooks` | 200 | passed | 错误: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<SidebarProvider sidebar={<AppSidebar>}>
|
||
<div className="flex h-scr...">
|
||
<aside>
|
||
<div className="flex-1 fle...">
|
||
<a>
|
||
...
|
||
<div className="flex items...">
|
||
<GlobalSearch>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" size="icon" className="relative t..." aria-label="通知" ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap round..."}
|
||
aria-label="通知"
|
||
type="button"
|
||
+ id="radix-_R_19ebn6lb_"
|
||
- id="radix-_R_55qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" className="relative s..." type="button" id="radix-_R_1..." ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-..."}
|
||
type="button"
|
||
+ id="radix-_R_1pebn6lb_"
|
||
- id="radix-_R_75qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
<main>
|
||
<AiAssistantWidget>
|
||
<Sheet open={false} onOpenChange={function bound dispatchSetState}>
|
||
<Dialog data-slot="sheet" open={false} onOpenChange={function bound dispatchSetState}>
|
||
<DialogProvider scope={undefined} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<SheetTrigger asChild={true}>
|
||
<DialogTrigger data-slot="sheet-trigger" asChild={true}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button type="button" size="icon" className="fixed bott..." aria-label="打开 AI 助手" ...>
|
||
<button
|
||
data-slot="sheet-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm f..."}
|
||
type="button"
|
||
aria-label="打开 AI 助手"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_2ebn6lb_"
|
||
- aria-controls="radix-_R_9qbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
; A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<InnerLayoutRouter url="/teacher/t..." tree={[...]} params={{}} cacheNode={{lazyData:null, ...}} segmentPath={[...]} ...>
|
||
<SegmentViewNode type="page" pagePath="(dashboard...">
|
||
<SegmentTrieNode>
|
||
<TextbooksPage>
|
||
<div className="space-y-6 p-8">
|
||
<div className="flex flex-...">
|
||
<div>
|
||
<TextbookFormDialog>
|
||
<Dialog open={false} onOpenChange={function bound dispatchSetState}>
|
||
<DialogProvider scope={undefined} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<DialogTrigger asChild={true}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-m..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_16atpesndubn6lb_"
|
||
- aria-controls="radix-_R_4pbn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
...
|
||
...
|
||
|
|
||
|
||
### Questions
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/questions` | 200 | passed | - |
|
||
|
||
### Exams
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/exams` | 200 | passed | 重定向: http://localhost:3000/teacher/exams/all<br>错误: IntlError: INVALID_MESSAGE: MALFORMED_ARGUMENT (难度等级 {{level}}:{{label}})
|
||
at getFallbackFromErrorAndNotify (http://localhost:3000/_next/static/chunks/node_modules_51f95abb._.js:3651:23)
|
||
at translateBaseFn (http://localhost:3000/_next/static/chunks/node_modules_51f95abb._.js:3705:20)
|
||
at translateFn (http://localhost:3000/_next/static/chunks/node_modules_51f95abb._.js:3709:24)
|
||
at ExamDataTable.useMemo[columns] (http://localhost:3000/_next/static/chunks/src_72b8a5e4._.js:2144:66)
|
||
at cell (http://localhost:3000/_next/static/chunks/src_72b8a5e4._.js:2003:43)
|
||
at Object.react_stack_bottom_frame (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:14816:24)
|
||
at renderWithHooks (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:4645:24)
|
||
at updateFunctionComponent (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:6106:21)
|
||
at beginWork (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:6702:24)
|
||
at runWithFiberInDEV (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:959:74)
|
||
at performUnitOfWork (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9556:97)
|
||
at workLoopConcurrentByScheduler (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9552:58)
|
||
at renderRootConcurrent (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9535:71)
|
||
at performWorkOnRoot (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9062:150)
|
||
at performWorkOnRootViaSchedulerTask (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:10224:9)
|
||
at MessagePort.performWorkUntilDeadline (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_a0e4c7b4._.js:2647:64); IntlError: INVALID_MESSAGE: MALFORMED_ARGUMENT (难度等级 {{level}}:{{label}})
|
||
at getFallbackFromErrorAndNotify (http://localhost:3000/_next/static/chunks/node_modules_51f95abb._.js:3651:23)
|
||
at translateBaseFn (http://localhost:3000/_next/static/chunks/node_modules_51f95abb._.js:3705:20)
|
||
at translateFn (http://localhost:3000/_next/static/chunks/node_modules_51f95abb._.js:3709:24)
|
||
at ExamDataTable.useMemo[columns] (http://localhost:3000/_next/static/chunks/src_72b8a5e4._.js:2144:66)
|
||
at cell (http://localhost:3000/_next/static/chunks/src_72b8a5e4._.js:2003:43)
|
||
at Object.react_stack_bottom_frame (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:14816:24)
|
||
at renderWithHooksAgain (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:4700:24)
|
||
at renderWithHooks (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:4651:28)
|
||
at updateFunctionComponent (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:6106:21)
|
||
at beginWork (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:6702:24)
|
||
at runWithFiberInDEV (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:959:74)
|
||
at performUnitOfWork (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9556:97)
|
||
at workLoopConcurrentByScheduler (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9552:58)
|
||
at renderRootConcurrent (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9535:71)
|
||
at performWorkOnRoot (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9062:150)
|
||
at performWorkOnRootViaSchedulerTask (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:10224:9)
|
||
at MessagePort.performWorkUntilDeadline (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_a0e4c7b4._.js:2647:64) |
|
||
| PASS `/teacher/exams/all` | 200 | passed | 错误: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<SidebarProvider sidebar={<AppSidebar>}>
|
||
<div className="flex h-scr...">
|
||
<aside>
|
||
<div className="flex-1 fle...">
|
||
<a>
|
||
...
|
||
<div className="flex items...">
|
||
<GlobalSearch>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" size="icon" className="relative t..." aria-label="通知" ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap round..."}
|
||
aria-label="通知"
|
||
type="button"
|
||
+ id="radix-_R_19ebn6lb_"
|
||
- id="radix-_R_55qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" className="relative s..." type="button" id="radix-_R_1..." ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-..."}
|
||
type="button"
|
||
+ id="radix-_R_1pebn6lb_"
|
||
- id="radix-_R_75qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
<main>
|
||
<AiAssistantWidget>
|
||
<Sheet open={false} onOpenChange={function bound dispatchSetState}>
|
||
<Dialog data-slot="sheet" open={false} onOpenChange={function bound dispatchSetState}>
|
||
<DialogProvider scope={undefined} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<SheetTrigger asChild={true}>
|
||
<DialogTrigger data-slot="sheet-trigger" asChild={true}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button type="button" size="icon" className="fixed bott..." aria-label="打开 AI 助手" ...>
|
||
<button
|
||
data-slot="sheet-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm f..."}
|
||
type="button"
|
||
aria-label="打开 AI 助手"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_2ebn6lb_"
|
||
- aria-controls="radix-_R_9qbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
; IntlError: INVALID_MESSAGE: MALFORMED_ARGUMENT (难度等级 {{level}}:{{label}})
|
||
at getFallbackFromErrorAndNotify (http://localhost:3000/_next/static/chunks/node_modules_51f95abb._.js:3651:23)
|
||
at translateBaseFn (http://localhost:3000/_next/static/chunks/node_modules_51f95abb._.js:3705:20)
|
||
at translateFn (http://localhost:3000/_next/static/chunks/node_modules_51f95abb._.js:3709:24)
|
||
at ExamDataTable.useMemo[columns] (http://localhost:3000/_next/static/chunks/src_72b8a5e4._.js:2144:66)
|
||
at cell (http://localhost:3000/_next/static/chunks/src_72b8a5e4._.js:2003:43)
|
||
at Object.react_stack_bottom_frame (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:14816:24)
|
||
at renderWithHooks (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:4645:24)
|
||
at updateFunctionComponent (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:6106:21)
|
||
at beginWork (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:6702:24)
|
||
at runWithFiberInDEV (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:959:74)
|
||
at performUnitOfWork (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9556:97)
|
||
at workLoopConcurrentByScheduler (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9552:58)
|
||
at renderRootConcurrent (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9535:71)
|
||
at performWorkOnRoot (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:9062:150)
|
||
at performWorkOnRootViaSchedulerTask (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-dom_1e674e59._.js:10224:9)
|
||
at MessagePort.performWorkUntilDeadline (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_a0e4c7b4._.js:2647:64) |
|
||
| PASS `/teacher/exams/create` | 200 | passed | - |
|
||
|
||
### Homework
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/homework` | 200 | passed | 重定向: http://localhost:3000/teacher/homework/assignments<br>错误: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<SidebarProvider sidebar={<AppSidebar>}>
|
||
<div className="flex h-scr...">
|
||
<aside>
|
||
<div className="flex-1 fle...">
|
||
<a>
|
||
...
|
||
<div className="flex items...">
|
||
<GlobalSearch>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" size="icon" className="relative t..." aria-label="通知" ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap round..."}
|
||
aria-label="通知"
|
||
type="button"
|
||
+ id="radix-_R_19ebn6lb_"
|
||
- id="radix-_R_55qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" className="relative s..." type="button" id="radix-_R_1..." ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-..."}
|
||
type="button"
|
||
+ id="radix-_R_1pebn6lb_"
|
||
- id="radix-_R_75qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
<main>
|
||
<AiAssistantWidget>
|
||
<Sheet open={false} onOpenChange={function bound dispatchSetState}>
|
||
<Dialog data-slot="sheet" open={false} onOpenChange={function bound dispatchSetState}>
|
||
<DialogProvider scope={undefined} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<SheetTrigger asChild={true}>
|
||
<DialogTrigger data-slot="sheet-trigger" asChild={true}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button type="button" size="icon" className="fixed bott..." aria-label="打开 AI 助手" ...>
|
||
<button
|
||
data-slot="sheet-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm f..."}
|
||
type="button"
|
||
aria-label="打开 AI 助手"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_2ebn6lb_"
|
||
- aria-controls="radix-_R_9qbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
|
|
||
| PASS `/teacher/homework/assignments` | 200 | passed | - |
|
||
| PASS `/teacher/homework/assignments/create` | 200 | passed | - |
|
||
| PASS `/teacher/homework/submissions` | 200 | passed | - |
|
||
|
||
### Grades
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/grades` | 200 | passed | - |
|
||
| PASS `/teacher/grades/entry` | 200 | passed | - |
|
||
| PASS `/teacher/grades/stats` | 200 | passed | 错误: %c%s%c background: #e6e6e6;background: light-dark(rgba(0,0,0,0.1), rgba(255,255,255,0.25));color: #000000;color: light-dark(#000000, #ffffff);border-radius: 2px Server Error: MISSING_MESSAGE: Could not resolve `grades.classReport.caption` in messages for locale `zh-CN`.
|
||
at ClassGradeReport (about://React/Server/E:%5CDesktop%5CCICD%5C.next%5Cdev%5Cserver%5Cchunks%5Cssr%5C%5Broot-of-the-server%5D__d43d5e3d._.js?102:604:51)
|
||
at resolveErrorDev (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:1882:106)
|
||
at getOutlinedModel (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:1434:28)
|
||
at parseModelString (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:1548:50)
|
||
at Object.<anonymous> (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2475:51)
|
||
at JSON.parse (<anonymous>)
|
||
at initializeModelChunk (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:1053:30)
|
||
at getOutlinedModel (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:1372:17)
|
||
at parseModelString (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:1602:50)
|
||
at Array.<anonymous> (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2475:51)
|
||
at JSON.parse (<anonymous>)
|
||
at initializeModelChunk (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:1053:30)
|
||
at resolveConsoleEntry (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2008:96)
|
||
at processFullStringRow (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2409:17)
|
||
at processFullBinaryRow (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2349:9)
|
||
at processBinaryChunk (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2459:98)
|
||
at progress (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2628:13); %c%s%c E:\Desktop\CICD\.next\dev\server\chunks\ssr\node_modules_d30fabce._.js: Invalid source map. Only conformant source maps can be used to find the original code. Cause: Error: sourceMapURL could not be parsed background: #e6e6e6;background: light-dark(rgba(0,0,0,0.1), rgba(255,255,255,0.25));color: #000000;color: light-dark(#000000, #ffffff);border-radius: 2px Server |
|
||
| PASS `/teacher/grades/analytics` | 200 | passed | - |
|
||
|
||
### Classes
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/classes` | 200 | passed | 重定向: http://localhost:3000/teacher/classes/my |
|
||
| PASS `/teacher/classes/my` | 200 | passed | - |
|
||
| PASS `/teacher/classes/students` | 200 | passed | 警告: Error text: 20; Error text: 42 |
|
||
| PASS `/teacher/classes/schedule` | 200 | passed | - |
|
||
|
||
### Course Plans
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/course-plans` | 200 | passed | - |
|
||
|
||
### Lesson Plans
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/lesson-plans` | 200 | passed | 错误: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<SidebarProvider sidebar={<AppSidebar>}>
|
||
<div className="flex h-scr...">
|
||
<aside>
|
||
<div className="flex-1 fle...">
|
||
<a>
|
||
...
|
||
<div className="flex items...">
|
||
<GlobalSearch>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" size="icon" className="relative t..." aria-label="通知" ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap round..."}
|
||
aria-label="通知"
|
||
type="button"
|
||
+ id="radix-_R_19ebn6lb_"
|
||
- id="radix-_R_55qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" className="relative s..." type="button" id="radix-_R_1..." ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-..."}
|
||
type="button"
|
||
+ id="radix-_R_1pebn6lb_"
|
||
- id="radix-_R_75qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
<main>
|
||
<AiAssistantWidget>
|
||
<Sheet open={false} onOpenChange={function bound dispatchSetState}>
|
||
<Dialog data-slot="sheet" open={false} onOpenChange={function bound dispatchSetState}>
|
||
<DialogProvider scope={undefined} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<SheetTrigger asChild={true}>
|
||
<DialogTrigger data-slot="sheet-trigger" asChild={true}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button type="button" size="icon" className="fixed bott..." aria-label="打开 AI 助手" ...>
|
||
<button
|
||
data-slot="sheet-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm f..."}
|
||
type="button"
|
||
aria-label="打开 AI 助手"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_2ebn6lb_"
|
||
- aria-controls="radix-_R_9qbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
; A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<div className="space-y-4">
|
||
<LessonPlanFilters>
|
||
<div className="grid grid-...">
|
||
<LessonPlanCard plan={{id:"o20j6e...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1a3qatpesndubn6lb_"
|
||
- aria-controls="radix-_R_58f9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"p54vt8...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1a5qatpesndubn6lb_"
|
||
- aria-controls="radix-_R_58n9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"ps8rrh...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1a7qatpesndubn6lb_"
|
||
- aria-controls="radix-_R_58v9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"zpeysv...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1a9qatpesndubn6lb_"
|
||
- aria-controls="radix-_R_5979bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"gpqmy3...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1abqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_59f9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"b89r2i...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1adqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_59n9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"rp33u1...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1afqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_59v9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"w4a90p...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1ahqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_5a79bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"dt0qjt...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1ajqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_5af9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"wkama4...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1alqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_5an9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"hnkmjz...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1anqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_5av9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"k43bo4...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1apqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_5b79bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"kiret3...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1arqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_5bf9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"q8bl25...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1atqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_5bn9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"jn8to5...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1avqatpesndubn6lb_"
|
||
- aria-controls="radix-_R_5bv9bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
<LessonPlanCard plan={{id:"wdqlzc...", ...}} viewMode="teacher">
|
||
<div className="border bor...">
|
||
<LinkComponent>
|
||
<div>
|
||
<div>
|
||
<div>
|
||
<div className="flex gap-2...">
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button variant="outline" size="sm" type="button" aria-haspopup="dialog" ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm..."}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_1b1qatpesndubn6lb_"
|
||
- aria-controls="radix-_R_5c79bn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
+ 归档
|
||
...
|
||
|
|
||
| PASS `/teacher/lesson-plans/new` | 200 | passed | - |
|
||
|
||
### Attendance
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/attendance` | 200 | passed | - |
|
||
| PASS `/teacher/attendance/sheet` | 200 | passed | - |
|
||
| PASS `/teacher/attendance/stats` | 200 | passed | - |
|
||
|
||
### Schedule Changes
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| FAIL `/teacher/schedule-changes` | 500 | failed | 错误: HTTP 500 error; Failed to load resource: the server responded with a status of 500 (Internal Server Error) |
|
||
|
||
### Diagnostic
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/diagnostic` | 200 | passed | 错误: %o
|
||
|
||
%s Error: Failed query: select `id`, `student_id`, `generated_by`, `class_id`, `report_type`, `period`, `summary`, `strengths`, `weaknesses`, `recommendations`, `overall_score`, `report_status`, `created_at`, `updated_at` from `learning_diagnostic_reports` order by `learning_diagnostic_reports`.`created_at` desc limit ?
|
||
params: 100
|
||
at <anonymous> (about://React/Server/E:%5CDesktop%5CCICD%5C.next%5Cdev%5Cserver%5Cchunks%5Cssr%5C%5Broot-of-the-server%5D__520e8e85._.js?69:11677:31)
|
||
at TeacherDiagnosticPage (about://React/Server/E:%5CDesktop%5CCICD%5C.next%5Cdev%5Cserver%5Cchunks%5Cssr%5C%5Broot-of-the-server%5D__c5e083b6._.js?70:138:21)
|
||
at resolveErrorDev (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:1882:148)
|
||
at processFullStringRow (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2390:29)
|
||
at processFullBinaryRow (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2349:9)
|
||
at processBinaryChunk (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2459:98)
|
||
at progress (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2628:13) The above error occurred in the <TeacherDiagnosticPage> component. It was handled by the <ErrorBoundaryHandler> error boundary. |
|
||
|
||
### Elective
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/elective` | 200 | passed | - |
|
||
|
||
### Error Book
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/error-book` | 200 | passed | 错误: %o
|
||
|
||
%s Error: Failed query: select `id`, `error_status`, `knowledge_point_ids` from `error_book_items` where `error_book_items`.`student_id` in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||
params: user_s_g1c1_1,user_s_g1c1_2,user_s_g1c1_3,user_s_g1c1_4,user_s_g1c1_5,user_s_g1c1_6,user_s_g1c2_1,user_s_g1c2_2,user_s_g1c2_3,user_s_g1c2_4,user_s_g1c2_5,user_s_g1c2_6
|
||
at getKnowledgePointWeakness (about://React/Server/E:%5CDesktop%5CCICD%5C.next%5Cdev%5Cserver%5Cchunks%5Cssr%5C%5Broot-of-the-server%5D__ff9d8e4f._.js?65:696:18)
|
||
at TeacherErrorBookPage (about://React/Server/E:%5CDesktop%5CCICD%5C.next%5Cdev%5Cserver%5Cchunks%5Cssr%5C%5Broot-of-the-server%5D__ff9d8e4f._.js?66:1992:75)
|
||
at resolveErrorDev (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:1882:148)
|
||
at processFullStringRow (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2390:29)
|
||
at processFullBinaryRow (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2349:9)
|
||
at processBinaryChunk (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2459:98)
|
||
at progress (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2628:13) The above error occurred in the <TeacherErrorBookPage> component. It was handled by the <ErrorBoundaryHandler> error boundary. |
|
||
|
||
### Textbooks Detail
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/textbooks/em3l39kx0inu9rsq6onnpe7r` | 200 | passed | - |
|
||
| PASS `/teacher/textbooks/loncxhs6kk4l33d826wv1m9y` | 200 | passed | - |
|
||
| PASS `/teacher/textbooks/b9kusgl3cxhtjcf1tcpvokhk` | 200 | passed | - |
|
||
|
||
### Classes Detail
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/classes/my/class_G1C1` | 200 | passed | 警告: Error text: 20; Error text: 42 |
|
||
|
||
### Course Plans Detail
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/course-plans/cp_g1c1_chinese` | 200 | passed | 错误: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<SidebarProvider sidebar={<AppSidebar>}>
|
||
<div className="flex h-scr...">
|
||
<aside>
|
||
<div className="flex-1 fle...">
|
||
<a>
|
||
...
|
||
<div className="flex items...">
|
||
<GlobalSearch>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" size="icon" className="relative t..." aria-label="通知" ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap round..."}
|
||
aria-label="通知"
|
||
type="button"
|
||
+ id="radix-_R_19ebn6lb_"
|
||
- id="radix-_R_55qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" className="relative s..." type="button" id="radix-_R_1..." ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-..."}
|
||
type="button"
|
||
+ id="radix-_R_1pebn6lb_"
|
||
- id="radix-_R_75qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
<main>
|
||
<AiAssistantWidget>
|
||
<Sheet open={false} onOpenChange={function bound dispatchSetState}>
|
||
<Dialog data-slot="sheet" open={false} onOpenChange={function bound dispatchSetState}>
|
||
<DialogProvider scope={undefined} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<SheetTrigger asChild={true}>
|
||
<DialogTrigger data-slot="sheet-trigger" asChild={true}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button type="button" size="icon" className="fixed bott..." aria-label="打开 AI 助手" ...>
|
||
<button
|
||
data-slot="sheet-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm f..."}
|
||
type="button"
|
||
aria-label="打开 AI 助手"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_2ebn6lb_"
|
||
- aria-controls="radix-_R_9qbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
|
|
||
|
||
### Lesson Plans Detail
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/lesson-plans/new` | 200 | passed | - |
|
||
| PASS `/teacher/lesson-plans/o20j6es4xbrc1qtbsi33l8wc/edit` | 200 | passed | 错误: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<SidebarProvider sidebar={<AppSidebar>}>
|
||
<div className="flex h-scr...">
|
||
<aside>
|
||
<div className="flex-1 fle...">
|
||
<a>
|
||
...
|
||
<div className="flex items...">
|
||
<GlobalSearch>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" size="icon" className="relative t..." aria-label="通知" ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap round..."}
|
||
aria-label="通知"
|
||
type="button"
|
||
+ id="radix-_R_19ebn6lb_"
|
||
- id="radix-_R_55qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" className="relative s..." type="button" id="radix-_R_1..." ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-..."}
|
||
type="button"
|
||
+ id="radix-_R_1pebn6lb_"
|
||
- id="radix-_R_75qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
<main>
|
||
<AiAssistantWidget>
|
||
<Sheet open={false} onOpenChange={function bound dispatchSetState}>
|
||
<Dialog data-slot="sheet" open={false} onOpenChange={function bound dispatchSetState}>
|
||
<DialogProvider scope={undefined} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<SheetTrigger asChild={true}>
|
||
<DialogTrigger data-slot="sheet-trigger" asChild={true}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button type="button" size="icon" className="fixed bott..." aria-label="打开 AI 助手" ...>
|
||
<button
|
||
data-slot="sheet-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm f..."}
|
||
type="button"
|
||
aria-label="打开 AI 助手"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_2ebn6lb_"
|
||
- aria-controls="radix-_R_9qbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
; A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<Suspense fallback={<div>}>
|
||
<LessonPlanEditor planId="o20j6es4xb..." initialTitle="第一课 秋天" initialDoc={{edges:[...], ...}} ...>
|
||
<div className="flex flex-...">
|
||
<div className="flex items...">
|
||
<input>
|
||
<div>
|
||
<span>
|
||
<Button>
|
||
<Button>
|
||
<AlertDialog>
|
||
<Dialog __scopeDialog={{Dialog:[...]}} modal={true}>
|
||
<DialogProvider scope={{Dialog:[...]}} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<AlertDialogTrigger asChild={true}>
|
||
<DialogTrigger __scopeDialog={{Dialog:[...]}} asChild={true} ref={null}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button size="sm" disabled={false} type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<button
|
||
data-slot="button"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm f..."}
|
||
disabled={false}
|
||
type="button"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_cpbn5ritpesndubn6lb_"
|
||
- aria-controls="radix-_R_1j5esnebn5ritnqbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
...
|
||
|
|
||
| PASS `/teacher/lesson-plans/p54vt85kt9hk1h6yz64s27cf/edit` | 200 | passed | 错误: PageError: Switched to client rendering because the server rendering errored:
|
||
|
||
Failed to call `useTranslations` because the context from `NextIntlClientProvider` was not found.
|
||
|
||
This can happen because:
|
||
1) You i |
|
||
|
||
### Homework Detail
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/homework/assignments/create` | 200 | passed | - |
|
||
| PASS `/teacher/homework/assignments/hw_chinese_g1` | 200 | passed | 错误: A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
|
||
|
||
- A server/client branch `if (typeof window !== 'undefined')`.
|
||
- Variable input such as `Date.now()` or `Math.random()` which changes each time it's called.
|
||
- Date formatting in a user's locale which doesn't match the server.
|
||
- External changing data without sending a snapshot of it along with the HTML.
|
||
- Invalid HTML tag nesting.
|
||
|
||
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
|
||
|
||
%s%s https://react.dev/link/hydration-mismatch
|
||
|
||
...
|
||
<SidebarProvider sidebar={<AppSidebar>}>
|
||
<div className="flex h-scr...">
|
||
<aside>
|
||
<div className="flex-1 fle...">
|
||
<a>
|
||
...
|
||
<div className="flex items...">
|
||
<GlobalSearch>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" size="icon" className="relative t..." aria-label="通知" ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap round..."}
|
||
aria-label="通知"
|
||
type="button"
|
||
+ id="radix-_R_19ebn6lb_"
|
||
- id="radix-_R_55qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
<MenuAnchor asChild={true} __scopeMenu={{Menu:[...], ...}}>
|
||
<PopperAnchor __scopePopper={{Menu:[...], ...}} asChild={true} ref={null}>
|
||
<Primitive.div asChild={true} ref={function}>
|
||
<Primitive.div.Slot ref={function}>
|
||
<Primitive.div.SlotClone ref={function}>
|
||
<Primitive.button type="button" id="radix-_R_1..." aria-haspopup="menu" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Primitive.button.SlotClone type="button" id="radix-_R_1..." aria-haspopup="menu" ...>
|
||
<Button variant="ghost" className="relative s..." type="button" id="radix-_R_1..." ...>
|
||
<button
|
||
data-slot="dropdown-menu-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-..."}
|
||
type="button"
|
||
+ id="radix-_R_1pebn6lb_"
|
||
- id="radix-_R_75qbn6lb_"
|
||
aria-haspopup="menu"
|
||
aria-expanded={false}
|
||
aria-controls={undefined}
|
||
data-state="closed"
|
||
data-disabled={undefined}
|
||
disabled={false}
|
||
onPointerDown={function handleEvent}
|
||
onKeyDown={function handleEvent}
|
||
ref={function}
|
||
>
|
||
<main>
|
||
<AiAssistantWidget>
|
||
<Sheet open={false} onOpenChange={function bound dispatchSetState}>
|
||
<Dialog data-slot="sheet" open={false} onOpenChange={function bound dispatchSetState}>
|
||
<DialogProvider scope={undefined} triggerRef={{current:null}} contentRef={{current:null}} ...>
|
||
<SheetTrigger asChild={true}>
|
||
<DialogTrigger data-slot="sheet-trigger" asChild={true}>
|
||
<Primitive.button type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.Slot type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Primitive.button.SlotClone type="button" aria-haspopup="dialog" aria-expanded={false} ...>
|
||
<Button type="button" size="icon" className="fixed bott..." aria-label="打开 AI 助手" ...>
|
||
<button
|
||
data-slot="sheet-trigger"
|
||
className={"inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm f..."}
|
||
type="button"
|
||
aria-label="打开 AI 助手"
|
||
aria-haspopup="dialog"
|
||
aria-expanded={false}
|
||
+ aria-controls="radix-_R_2ebn6lb_"
|
||
- aria-controls="radix-_R_9qbn6lb_"
|
||
data-state="closed"
|
||
onClick={function handleEvent}
|
||
ref={function}
|
||
>
|
||
...
|
||
<br>警告: Error text: 0 / 3 |
|
||
|
||
### Exams Detail
|
||
|
||
| 页面 | HTTP状态 | 结果 | 备注 |
|
||
|------|----------|------|------|
|
||
| PASS `/teacher/exams/create` | 200 | passed | - |
|
||
|
||
---
|
||
|
||
## 三、失败页面详情
|
||
|
||
### FAIL `/teacher/schedule-changes`
|
||
|
||
- **分类**: Schedule Changes
|
||
- **HTTP状态**: 500
|
||
- **重定向**: http://localhost:3000/teacher/schedule-changes
|
||
- **错误信息**:
|
||
- HTTP 500 error
|
||
- Failed to load resource: the server responded with a status of 500 (Internal Server Error)
|
||
- %o
|
||
|
||
%s PermissionDeniedError: 权限不足:需要 schedule:adjust 权限。请联系管理员授权或切换账号后重试。
|
||
at requirePermission (about://React/Server/E:%5CDesktop%5CCICD%5C.next%5Cdev%5Cserver%5Cchunks%5Cssr%5C%5Broot-of-the-server%5D__20b59666._.js?49:3692:15)
|
||
at TeacherScheduleChangesPage (about://React/Server/E:%5CDesktop%5CCICD%5C.next%5Cdev%5Cserver%5Cchunks%5Cssr%5C%5Broot-of-the-server%5D__dd4f396b._.js?50:127:17)
|
||
at resolveErrorDev (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:1882:148)
|
||
at processFullStringRow (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2390:29)
|
||
at processFullBinaryRow (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2349:9)
|
||
at processBinaryChunk (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2459:98)
|
||
at progress (http://localhost:3000/_next/static/chunks/node_modules_next_dist_compiled_react-server-dom-turbopack_9212ccad._.js:2628:13) The above error occurred in the <TeacherScheduleChangesPage> component. It was handled by the <ErrorBoundaryHandler> error boundary.
|
||
- **截图**: E:\Desktop\CICD\scripts\..\bugs\screenshots\teacher_schedule-changes.png
|
||
|
||
---
|
||
|
||
*报告自动生成于 2026-06-23 18:27:12* |