{
  "test_date": "2026-06-22 19:55:53",
  "test_target": "设置和个人信息模块 (Settings & Profile)",
  "base_url": "http://localhost:3000",
  "summary": {
    "total": 108,
    "passed": 107,
    "failed": 0,
    "warnings": 1
  },
  "roles": {
    "admin": {
      "label": "管理员",
      "categories": {
        "Profile 页面": {
          "tests": [
            {
              "name": "页面加载",
              "status": "passed",
              "details": "HTTP 200",
              "errors": []
            },
            {
              "name": "个人信息卡片",
              "status": "passed",
              "details": "所有字段显示正常",
              "errors": []
            },
            {
              "name": "账户信息卡片",
              "status": "passed",
              "details": "所有字段显示正常",
              "errors": []
            },
            {
              "name": "头像上传组件",
              "status": "passed",
              "details": "组件渲染正常",
              "errors": []
            },
            {
              "name": "角色概览",
              "status": "passed",
              "details": "admin 角色无专属概览，跳过",
              "errors": []
            },
            {
              "name": "编辑资料链接",
              "status": "passed",
              "details": "链接指向 /settings",
              "errors": []
            }
          ],
          "passed": 6,
          "failed": 0,
          "warnings": 0
        },
        "Settings 页面": {
          "tests": [
            {
              "name": "页面加载",
              "status": "passed",
              "details": "HTTP 200",
              "errors": []
            },
            {
              "name": "标签页显示",
              "status": "passed",
              "details": "所有标签页显示正常",
              "errors": []
            }
          ],
          "passed": 2,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 通用标签页": {
          "tests": [
            {
              "name": "邮箱字段禁用",
              "status": "passed",
              "details": "邮箱字段已禁用",
              "errors": []
            },
            {
              "name": "个人资料表单显示",
              "status": "passed",
              "details": "表单字段完整",
              "errors": []
            },
            {
              "name": "个人资料表单提交",
              "status": "passed",
              "details": "保存成功",
              "errors": []
            },
            {
              "name": "角色快捷链接",
              "status": "passed",
              "details": "管理员无快捷链接（符合预期）",
              "errors": []
            }
          ],
          "passed": 4,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 通知标签页": {
          "tests": [
            {
              "name": "保存按钮 dirty 检测",
              "status": "passed",
              "details": "初始状态保存按钮已禁用",
              "errors": []
            },
            {
              "name": "通知偏好显示",
              "status": "passed",
              "details": "所有区块显示正常",
              "errors": []
            },
            {
              "name": "切换通知开关",
              "status": "passed",
              "details": "开关切换成功，保存按钮启用",
              "errors": []
            }
          ],
          "passed": 3,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 外观标签页": {
          "tests": [
            {
              "name": "外观偏好显示",
              "status": "passed",
              "details": "主题和语言切换显示正常",
              "errors": []
            },
            {
              "name": "主题切换",
              "status": "passed",
              "details": "深色主题切换成功",
              "errors": []
            }
          ],
          "passed": 2,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 安全标签页": {
          "tests": [
            {
              "name": "安全标签页显示",
              "status": "passed",
              "details": "所有区块显示正常",
              "errors": []
            },
            {
              "name": "2FA 开关禁用",
              "status": "passed",
              "details": "2FA 开关已禁用（'即将推出' 状态）",
              "errors": []
            },
            {
              "name": "密码修改验证",
              "status": "passed",
              "details": "错误密码触发失败提示",
              "errors": []
            },
            {
              "name": "密码强度指示器",
              "status": "passed",
              "details": "强度指示器工作正常",
              "errors": []
            },
            {
              "name": "登出其他会话按钮",
              "status": "passed",
              "details": "按钮显示正常",
              "errors": []
            }
          ],
          "passed": 5,
          "failed": 0,
          "warnings": 0
        },
        "Settings - AI 标签页": {
          "tests": [
            {
              "name": "AI 标签页显示",
              "status": "passed",
              "details": "管理员可见 AI 服务商配置",
              "errors": []
            }
          ],
          "passed": 1,
          "failed": 0,
          "warnings": 0
        },
        "Admin Settings 页面": {
          "tests": [
            {
              "name": "页面加载",
              "status": "passed",
              "details": "HTTP 200",
              "errors": []
            },
            {
              "name": "卡片显示",
              "status": "passed",
              "details": "4 个卡片及所有字段显示正常",
              "errors": []
            },
            {
              "name": "dirty 检测",
              "status": "passed",
              "details": "dirty 检测和重置功能正常",
              "errors": []
            },
            {
              "name": "保存和重置",
              "status": "warning",
              "details": "未检测到 toast",
              "errors": []
            }
          ],
          "passed": 3,
          "failed": 0,
          "warnings": 1
        }
      }
    },
    "teacher": {
      "label": "教师",
      "categories": {
        "Profile 页面": {
          "tests": [
            {
              "name": "页面加载",
              "status": "passed",
              "details": "HTTP 200",
              "errors": []
            },
            {
              "name": "个人信息卡片",
              "status": "passed",
              "details": "所有字段显示正常",
              "errors": []
            },
            {
              "name": "账户信息卡片",
              "status": "passed",
              "details": "所有字段显示正常",
              "errors": []
            },
            {
              "name": "头像上传组件",
              "status": "passed",
              "details": "组件渲染正常",
              "errors": []
            },
            {
              "name": "教师概览",
              "status": "passed",
              "details": "教师概览区块显示",
              "errors": []
            },
            {
              "name": "编辑资料链接",
              "status": "passed",
              "details": "链接指向 /settings",
              "errors": []
            }
          ],
          "passed": 6,
          "failed": 0,
          "warnings": 0
        },
        "Settings 页面": {
          "tests": [
            {
              "name": "页面加载",
              "status": "passed",
              "details": "HTTP 200",
              "errors": []
            },
            {
              "name": "标签页显示",
              "status": "passed",
              "details": "所有标签页显示正常",
              "errors": []
            }
          ],
          "passed": 2,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 通用标签页": {
          "tests": [
            {
              "name": "邮箱字段禁用",
              "status": "passed",
              "details": "邮箱字段已禁用",
              "errors": []
            },
            {
              "name": "个人资料表单显示",
              "status": "passed",
              "details": "表单字段完整",
              "errors": []
            },
            {
              "name": "个人资料表单提交",
              "status": "passed",
              "details": "保存成功",
              "errors": []
            },
            {
              "name": "角色快捷链接",
              "status": "passed",
              "details": "教师快捷链接显示",
              "errors": []
            }
          ],
          "passed": 4,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 通知标签页": {
          "tests": [
            {
              "name": "保存按钮 dirty 检测",
              "status": "passed",
              "details": "初始状态保存按钮已禁用",
              "errors": []
            },
            {
              "name": "通知偏好显示",
              "status": "passed",
              "details": "所有区块显示正常",
              "errors": []
            },
            {
              "name": "切换通知开关",
              "status": "passed",
              "details": "开关切换成功，保存按钮启用",
              "errors": []
            }
          ],
          "passed": 3,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 外观标签页": {
          "tests": [
            {
              "name": "外观偏好显示",
              "status": "passed",
              "details": "主题和语言切换显示正常",
              "errors": []
            },
            {
              "name": "主题切换",
              "status": "passed",
              "details": "深色主题切换成功",
              "errors": []
            }
          ],
          "passed": 2,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 安全标签页": {
          "tests": [
            {
              "name": "安全标签页显示",
              "status": "passed",
              "details": "所有区块显示正常",
              "errors": []
            },
            {
              "name": "2FA 开关禁用",
              "status": "passed",
              "details": "2FA 开关已禁用（'即将推出' 状态）",
              "errors": []
            },
            {
              "name": "密码修改验证",
              "status": "passed",
              "details": "错误密码触发失败提示",
              "errors": []
            },
            {
              "name": "密码强度指示器",
              "status": "passed",
              "details": "强度指示器工作正常",
              "errors": []
            },
            {
              "name": "登出其他会话按钮",
              "status": "passed",
              "details": "按钮显示正常",
              "errors": []
            }
          ],
          "passed": 5,
          "failed": 0,
          "warnings": 0
        },
        "Settings - AI 标签页": {
          "tests": [
            {
              "name": "AI 标签页权限",
              "status": "passed",
              "details": "teacher 角色无法访问 AI 标签页（符合预期）",
              "errors": []
            }
          ],
          "passed": 1,
          "failed": 0,
          "warnings": 0
        },
        "Admin Settings 页面": {
          "tests": [
            {
              "name": "权限控制",
              "status": "passed",
              "details": "teacher 角色被拒绝访问",
              "errors": []
            },
            {
              "name": "卡片显示",
              "status": "passed",
              "details": "teacher 角色跳过",
              "errors": []
            },
            {
              "name": "dirty 检测",
              "status": "passed",
              "details": "teacher 角色跳过",
              "errors": []
            },
            {
              "name": "保存和重置",
              "status": "passed",
              "details": "teacher 角色跳过",
              "errors": []
            }
          ],
          "passed": 4,
          "failed": 0,
          "warnings": 0
        }
      }
    },
    "student": {
      "label": "学生",
      "categories": {
        "Profile 页面": {
          "tests": [
            {
              "name": "页面加载",
              "status": "passed",
              "details": "HTTP 200",
              "errors": []
            },
            {
              "name": "个人信息卡片",
              "status": "passed",
              "details": "所有字段显示正常",
              "errors": []
            },
            {
              "name": "账户信息卡片",
              "status": "passed",
              "details": "所有字段显示正常",
              "errors": []
            },
            {
              "name": "头像上传组件",
              "status": "passed",
              "details": "组件渲染正常",
              "errors": []
            },
            {
              "name": "学生概览",
              "status": "passed",
              "details": "学生概览区块显示",
              "errors": []
            },
            {
              "name": "编辑资料链接",
              "status": "passed",
              "details": "链接指向 /settings",
              "errors": []
            }
          ],
          "passed": 6,
          "failed": 0,
          "warnings": 0
        },
        "Settings 页面": {
          "tests": [
            {
              "name": "页面加载",
              "status": "passed",
              "details": "HTTP 200",
              "errors": []
            },
            {
              "name": "标签页显示",
              "status": "passed",
              "details": "所有标签页显示正常",
              "errors": []
            }
          ],
          "passed": 2,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 通用标签页": {
          "tests": [
            {
              "name": "邮箱字段禁用",
              "status": "passed",
              "details": "邮箱字段已禁用",
              "errors": []
            },
            {
              "name": "个人资料表单显示",
              "status": "passed",
              "details": "表单字段完整",
              "errors": []
            },
            {
              "name": "个人资料表单提交",
              "status": "passed",
              "details": "保存成功",
              "errors": []
            },
            {
              "name": "角色快捷链接",
              "status": "passed",
              "details": "学生快捷链接显示",
              "errors": []
            }
          ],
          "passed": 4,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 通知标签页": {
          "tests": [
            {
              "name": "保存按钮 dirty 检测",
              "status": "passed",
              "details": "初始状态保存按钮已禁用",
              "errors": []
            },
            {
              "name": "通知偏好显示",
              "status": "passed",
              "details": "所有区块显示正常",
              "errors": []
            },
            {
              "name": "切换通知开关",
              "status": "passed",
              "details": "开关切换成功，保存按钮启用",
              "errors": []
            }
          ],
          "passed": 3,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 外观标签页": {
          "tests": [
            {
              "name": "外观偏好显示",
              "status": "passed",
              "details": "主题和语言切换显示正常",
              "errors": []
            },
            {
              "name": "主题切换",
              "status": "passed",
              "details": "深色主题切换成功",
              "errors": []
            }
          ],
          "passed": 2,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 安全标签页": {
          "tests": [
            {
              "name": "安全标签页显示",
              "status": "passed",
              "details": "所有区块显示正常",
              "errors": []
            },
            {
              "name": "2FA 开关禁用",
              "status": "passed",
              "details": "2FA 开关已禁用（'即将推出' 状态）",
              "errors": []
            },
            {
              "name": "密码修改验证",
              "status": "passed",
              "details": "错误密码触发失败提示",
              "errors": []
            },
            {
              "name": "密码强度指示器",
              "status": "passed",
              "details": "强度指示器工作正常",
              "errors": []
            },
            {
              "name": "登出其他会话按钮",
              "status": "passed",
              "details": "按钮显示正常",
              "errors": []
            }
          ],
          "passed": 5,
          "failed": 0,
          "warnings": 0
        },
        "Settings - AI 标签页": {
          "tests": [
            {
              "name": "AI 标签页权限",
              "status": "passed",
              "details": "student 角色无法访问 AI 标签页（符合预期）",
              "errors": []
            }
          ],
          "passed": 1,
          "failed": 0,
          "warnings": 0
        },
        "Admin Settings 页面": {
          "tests": [
            {
              "name": "权限控制",
              "status": "passed",
              "details": "student 角色被拒绝访问",
              "errors": []
            },
            {
              "name": "卡片显示",
              "status": "passed",
              "details": "student 角色跳过",
              "errors": []
            },
            {
              "name": "dirty 检测",
              "status": "passed",
              "details": "student 角色跳过",
              "errors": []
            },
            {
              "name": "保存和重置",
              "status": "passed",
              "details": "student 角色跳过",
              "errors": []
            }
          ],
          "passed": 4,
          "failed": 0,
          "warnings": 0
        }
      }
    },
    "parent": {
      "label": "家长",
      "categories": {
        "Profile 页面": {
          "tests": [
            {
              "name": "页面加载",
              "status": "passed",
              "details": "HTTP 200",
              "errors": []
            },
            {
              "name": "个人信息卡片",
              "status": "passed",
              "details": "所有字段显示正常",
              "errors": []
            },
            {
              "name": "账户信息卡片",
              "status": "passed",
              "details": "所有字段显示正常",
              "errors": []
            },
            {
              "name": "头像上传组件",
              "status": "passed",
              "details": "组件渲染正常",
              "errors": []
            },
            {
              "name": "角色概览",
              "status": "passed",
              "details": "parent 角色无专属概览，跳过",
              "errors": []
            },
            {
              "name": "编辑资料链接",
              "status": "passed",
              "details": "链接指向 /settings",
              "errors": []
            }
          ],
          "passed": 6,
          "failed": 0,
          "warnings": 0
        },
        "Settings 页面": {
          "tests": [
            {
              "name": "页面加载",
              "status": "passed",
              "details": "HTTP 200",
              "errors": []
            },
            {
              "name": "标签页显示",
              "status": "passed",
              "details": "所有标签页显示正常",
              "errors": []
            }
          ],
          "passed": 2,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 通用标签页": {
          "tests": [
            {
              "name": "邮箱字段禁用",
              "status": "passed",
              "details": "邮箱字段已禁用",
              "errors": []
            },
            {
              "name": "个人资料表单显示",
              "status": "passed",
              "details": "表单字段完整",
              "errors": []
            },
            {
              "name": "个人资料表单提交",
              "status": "passed",
              "details": "保存成功",
              "errors": []
            },
            {
              "name": "角色快捷链接",
              "status": "passed",
              "details": "家长快捷链接显示",
              "errors": []
            }
          ],
          "passed": 4,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 通知标签页": {
          "tests": [
            {
              "name": "保存按钮 dirty 检测",
              "status": "passed",
              "details": "初始状态保存按钮已禁用",
              "errors": []
            },
            {
              "name": "通知偏好显示",
              "status": "passed",
              "details": "所有区块显示正常",
              "errors": []
            },
            {
              "name": "切换通知开关",
              "status": "passed",
              "details": "开关切换成功，保存按钮启用",
              "errors": []
            }
          ],
          "passed": 3,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 外观标签页": {
          "tests": [
            {
              "name": "外观偏好显示",
              "status": "passed",
              "details": "主题和语言切换显示正常",
              "errors": []
            },
            {
              "name": "主题切换",
              "status": "passed",
              "details": "深色主题切换成功",
              "errors": []
            }
          ],
          "passed": 2,
          "failed": 0,
          "warnings": 0
        },
        "Settings - 安全标签页": {
          "tests": [
            {
              "name": "安全标签页显示",
              "status": "passed",
              "details": "所有区块显示正常",
              "errors": []
            },
            {
              "name": "2FA 开关禁用",
              "status": "passed",
              "details": "2FA 开关已禁用（'即将推出' 状态）",
              "errors": []
            },
            {
              "name": "密码修改验证",
              "status": "passed",
              "details": "错误密码触发失败提示",
              "errors": []
            },
            {
              "name": "密码强度指示器",
              "status": "passed",
              "details": "强度指示器工作正常",
              "errors": []
            },
            {
              "name": "登出其他会话按钮",
              "status": "passed",
              "details": "按钮显示正常",
              "errors": []
            }
          ],
          "passed": 5,
          "failed": 0,
          "warnings": 0
        },
        "Settings - AI 标签页": {
          "tests": [
            {
              "name": "AI 标签页权限",
              "status": "passed",
              "details": "parent 角色无法访问 AI 标签页（符合预期）",
              "errors": []
            }
          ],
          "passed": 1,
          "failed": 0,
          "warnings": 0
        },
        "Admin Settings 页面": {
          "tests": [
            {
              "name": "权限控制",
              "status": "passed",
              "details": "parent 角色被拒绝访问",
              "errors": []
            },
            {
              "name": "卡片显示",
              "status": "passed",
              "details": "parent 角色跳过",
              "errors": []
            },
            {
              "name": "dirty 检测",
              "status": "passed",
              "details": "parent 角色跳过",
              "errors": []
            },
            {
              "name": "保存和重置",
              "status": "passed",
              "details": "parent 角色跳过",
              "errors": []
            }
          ],
          "passed": 4,
          "failed": 0,
          "warnings": 0
        }
      }
    }
  },
  "failures": []
}