Skip to content

Latest commit

 

History

History
108 lines (77 loc) · 13.1 KB

verification.md

File metadata and controls

108 lines (77 loc) · 13.1 KB

验证记录

以下区分本地自动化验收与生产环境基础检查。界面显示名为「数学学习工作台」,知识点可输入后保存为可选项;课后反馈使用固定开头和三个栏目。下文保留各次验收记录,真实模型生成的措辞仍需老师结合课堂情况核对。

扁平控件与学生选中态(2026-10-22)

  • 按确认的方案统一为扁平风格。在共用主题 src/theme.tsx 中关闭普通、主要及危险按钮的底部阴影,焦点颜色独立保留;主操作使用所选主题色填充,辅助操作使用白底描边,危险操作维持警示色。
  • 学生列表始终使用文本按钮,通过 aria-pressed 表达选中状态。共用样式 src/styles.css 提供主题浅色背景、深色姓名和年级、左侧 3px 色条,以及悬浮和按下底色;颜色继续由 interactionPalette 计算,不在页面复制配色。
  • 学生行移除重复的行内布局,长姓名和年级可换行。键盘焦点边框画在行内,避免被列表滚动容器裁掉。
  • 19 项前端测试、4 项公开构建边界测试及 TypeScript 生产构建通过。6 种主题的 188 项交互对比检查通过,覆盖浅绿、白、黑、黄、蓝、紫。
  • 浏览器记录 88 项样式及布局检查:各页面和弹窗的主次按钮、危险确认、悬浮和按下无底部阴影;学生可通过点击和键盘切换,始终只有一个选中项;相邻筛选控件高度一致。检查 1440、1024、768、390、320px,以及 720px / 2 倍像素密度的放大等效布局,长内容无页面横向溢出。
  • 已检查实际截图,无运行时错误、组件警告或未拦截外网请求。验收使用合成资料和模拟接口,没有读取或修改真实教学记录。

自定义主题交互状态(2026-10-22)

  • 将所选填充色与可读的文字、边框和浅色背景分开计算。实心主按钮常态保留用户选择的 HEX,悬浮及按下采用同色系变化,并固定使用与三个底色均有足够对比的文字色。
  • 统一覆盖按钮、链接、导航、输入框、下拉框、日期、数字输入、复选框、分页及分段选择的交互配色。选中学生的年级不再通过整体透明度减弱;危险操作继续使用红色,并单独设置可读的按下底色。禁用按钮维持禁用配色。
  • 19 项前端测试通过。配色测试覆盖 216 种 RGB 网格颜色、预设和浅色样本:实心状态文字对比至少 4.5:1,浅色背景上的强调文字至少 4.5:1,实心按钮外边界至少 3:1。
  • 在实际生产构建中测量 6 个主题的 188 项渲染状态,包括浅绿、白、黑、黄、蓝、紫;测得文字/勾选标记最小对比约 5.02:1,交互边框/焦点约 4.88:1。检查包含悬浮、按下、键盘聚焦、选中和禁用态,390/320px 无横向溢出。没有运行时异常、组件警告或未拦截的外网请求;测试使用合成记录及模拟接口。

中文界面与知识点选项(2026-10-22)

  • 登录页、侧栏、移动菜单、页脚和浏览器标题改为中文;保留 AI、Word、PDF 等通用术语。侧栏标题限定宽度,长文字不会进入面包屑区域;未知英文服务错误显示中文提示。
  • 输入知识点名称后按回车,或点击下拉中的保存选项,即在云端保存并选中。新知识点使用当前学生的年级和「未分类」章节,后续可在知识目录编辑;已有知识点不再因已关联而被隐藏。
  • 选择已有掌握记录的知识点会带出原状态和备注,按选择时版本更新原记录。创建、删除和恢复选项均沿用原有 RLS,重复创建遇到唯一约束时读取已有项,删除与恢复检查版本。
  • 「管理选项」和知识目录支持删除选项,实际操作为移出可选目录,保留掌握记录、课堂和固定月报。再次输入同年级的同名知识点会恢复原 ID;没有执行物理删除或新增数据库表。
  • 18 项前端测试通过,包含 7 项知识点 API 行为测试和中文错误提示测试;另有 4 项公开构建边界测试。TypeScript 与生产构建通过。
  • 7 组浏览器流程通过,使用合成记录及模拟接口。1440、1024、768、390、320px 下无标题重叠或页面横向溢出,覆盖已有项复用、新建持久化、取消/删除/恢复、刷新后重选、失败保留输入和重试、保存期间新增学生不改变记录归属,以及手机空目录创建和删除。没有运行时错误、组件警告或未拦截外网请求;唯一的 503 日志是刻意模拟的保存失败。
  • 只读取云端表权限与约束元数据,确认知识点表启用 RLS,仅本人可读写,并具有防重复唯一约束。验收没有读写真实教学记录。

课后反馈重新设计(2026-10-21)

  • 每次生成只使用本节课已保存的字段,现有反馈及旧浏览器传入的草稿都不会影响模型依据。模型不接收学生姓名、档案备注、长期目标或既有反馈;称呼和日期由服务端从已授权记录生成。
  • 19 项 AI 逻辑测试、13 项请求处理测试和 10 项前端测试通过。覆盖固定开头、付老师署名、日期和三个栏目、逐条编号、计划先于作业、空项略过、整栏待补充、源字段全空时拒绝补造、条件及否定保留、旧草稿忽略、非法结构和超长内容拒绝,以及分数与提分承诺的限制。
  • 6 组浏览器流程通过,使用生产构建、模拟账户和合成教学记录。覆盖零散表单保存、查看原始字段、生成不自动保存、重新整理前保护未保存文字、再次整理以课堂记录为准、失败保留编辑稿、复制、手动保存及重开恢复;1440px、390px、320px 无横向溢出,没有运行时错误或组件警告。
  • TypeScript、Vite 生产构建、公开配置与凭证扫描及公开文件边界检查通过;文件边界另有 4 项测试。浏览器流程中唯一的 502 日志来自刻意模拟的模型失败,没有未拦截的外网请求。
  • ai-assistant v10 ACTIVE。正确来源的 OPTIONS 返回 204,缺少登录和伪造 JWT 返回 401,其他来源返回 403。保持函数内身份验证、本人白名单、用户 JWT 与 RLS;没有修改数据库结构或真实教学记录。
  • 模型响应使用测试替身,以上流程不代表本次已实际调用 DeepSeek 或豆包。真实模型输出仍需在使用时核对。
检查 结果
前端自动化测试 10 项通过
SQL 测试 80 项通过
AI 逻辑与反馈格式测试 19 项通过
AI 请求处理测试 13 项通过
Deno 类型检查 通过
完整依赖安全审计 生产与开发依赖各严重级别均为 0

浏览器检查

浏览器测试使用本地网站和模拟请求,覆盖 Auth、REST、AI 接口与实时连接;没有调用真实 Supabase 或模型服务。Ant Design 改版重新检查了五个视图在 1440px、390px 和 320px 宽度下的布局,整页没有横向溢出;宽表格在卡片内部滚动。

本次 Ant Design 改版的两套浏览器操作验收共通过 16 组、240 次模拟请求,覆盖学生/知识目录/掌握情况/课堂的增改与归档恢复、必填及日期校验、并发版本冲突恢复、反馈编辑复制与重复保存、两种月报生成方式、固定快照导出及断网恢复。没有未拦截的外网请求、运行时异常或 Ant Design 弃用警告;错误路径测试中出现的资源加载失败对应刻意模拟的 502 和断网。页面与表单按需加载。

  • 登录前不显示业务内容;缺少所有者授权时不读取业务表。
  • 学生年级必填;课堂知识点版本在勾选时固定,刷新后不会漂移,冲突会阻止覆盖。
  • 课后反馈可编辑和重复保存,保存反馈不会重复修改掌握情况。
  • 学生、课堂、知识目录、掌握状态与月报筛选正常。
  • 月报保存后只读;实际下载的 Word 和打印内容使用报告快照,不受后续档案或课堂修改影响。
  • 已查看桌面及 320px、390px 手机截图;未发现页面横向溢出,长课堂表单和月报导出按钮可访问。
  • 打印样式另以三页中文 PDF 检查,长段落跨页、页边距及文字完整性正常。Word 已验证原生 OOXML 结构;本地缺少文档渲染器,未完成 Word 独立视觉渲染。

浏览器 QA 使用的临时数据、截图、Word/PDF 与真实密钥均未纳入源码。

课堂删除的本地验收(2026-10-16)

以下检查使用临时内存 Postgres 与本地模拟接口,没有读取、创建或删除真实教学数据。删除功能与主题、反馈润色一同发布,后端已应用 lesson-deletion.sql。

  • SQL/RLS 检查由 53 项增加至 80 项:覆盖增量脚本重复执行、匿名与非本人拒绝、跨归属拒绝、必需版本、过期确认、删除失败事务回滚、课堂及反馈移除、当前掌握判断保留、只解除相关来源、旧编辑无法恢复已删除记录、旧月报快照不变与新月报排除已删除课堂。
  • 10 组浏览器操作通过,共 202 次模拟请求:覆盖打开和取消确认、重复点击仅一次请求、正确携带打开时版本、删除成功刷新列表及概览、版本冲突后重新确认、另一设备已删除、断网重试、操作成功但读取失败、末页页码调整、实际模拟 DELETE 通知自动刷新,以及 390px/320px 手机入口和弹窗。
  • 已查看桌面及两种手机宽度截图;删除操作在固定操作列可直接找到,弹窗无横向溢出。没有运行时异常、组件警告或未拦截的外网请求;资源失败日志均来自刻意模拟的 409、404 与断网。
  • TypeScript、10 项前端测试和 Vite 构建通过。托管项目的删除 RPC、仅本人删除策略、匿名禁止调用、月报禁止删除与空 search_path 已核验,安全 advisor 未新增问题;真实删除及两设备同步仍需本人账户验收。

主题色与反馈润色验收(历史版本)

  • 7 组浏览器操作、63 次模拟请求通过:预设和 HEX 自选色、缩写与错误输入、刷新记忆、跨标签同步、真实色盘键盘选色、恢复默认、全站强调色、警示色保留、极浅及极深颜色、损坏或无法保存偏好,以及 390px/320px 手机界面。
  • 反馈润色检查覆盖当前草稿传递、空白草稿使用课堂事实、失败保留已有文字、继续编辑和复制、只在手动保存时写入,以及手机端流程。没有运行时异常、组件警告或未拦截的外网请求。
  • AI 纯逻辑 19 项及请求处理 13 项通过:自由段落和换行原样返回,不追加称呼、日期、标题、固定段数或缺失观察;草稿最多 12000 字,中文上限可完整传输,请求仍限制在 64 KiB;成绩分数和提分承诺继续拒绝,数学分数、公式、页码、题号与耗时正常保留。
  • ai-assistant 已更新为 v9 ACTIVE,保持服务端身份验证、本人白名单、用户 JWT 与 RLS;新接口仍只返回待审核草稿,不自动保存或发送反馈。

生产环境基础检查

  • 数据库结构、RLS 策略及实时发布配置已验证。
  • 匿名 REST 请求返回 401。
  • AI Edge Function 部署状态为 ACTIVE。
  • AI 函数正确来源的 OPTIONS 请求返回 204;缺少登录、伪造 JWT 均返回 401,不允许的来源返回 403。
  • 唯一已确认的非匿名账户已绑定工作台所有者;此记录不包含账户标识或邮箱。
  • 已核验公开注册关闭、匿名登录关闭。

此前版本的课后反馈使用自然文本润色,已由 2026-10-21 的固定开头与分栏整理方案替代。各次回归使用模拟模型输出,不代表真实模型调用。

错误提示回归覆盖已损坏的中文消息按稳定错误码显示,以及未知乱码的通用提示;润色提示要求保持事实,有必要时仅作待核实的可能性分析。模拟接口检查确认 DeepSeek 请求开启 JSON Output,豆包请求不携带该平台参数。

安全顾问对 private.ai_usage 的 RLS 无策略 INFO 提示对应内部表启用 RLS 默认拒绝,且已撤销普通客户端访问权限;这是刻意的 deny-all 设计,表仍受保护。

性能顾问当前仅有 10 项 unused_index INFO,对应新空库尚无使用记录的索引。

leaked_password_protection WARN 仍存在:当前免费方案未提供泄漏密码保护。官方说明与处理方式见密码强度和泄漏密码保护。此项未标记为已修复。

网页验收待办

以下项目需要本人账户及模型 Secrets 配置完成后验证:

  1. 本人真实登录,创建或修改自己的学生与课堂记录,并检查退出后无法访问。
  2. 在两台设备同时登录,验证真实实时同步及并发修改冲突提示。
  3. 使用真实模型生成课后反馈、学情建议和月报,核对生成内容、审核保存及导出结果。

模拟测试通过和 Edge Function 部署成功,不代表以上真实使用流程已经完成验收。