From 219f6ae83a4a12ea155ff86551af439e4c862e82 Mon Sep 17 00:00:00 2001 From: LoveChengke Date: Sat, 12 Sep 2026 13:57:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(desktop+web+server):=20ClassIsland=20?= =?UTF-8?q?=E9=A3=8E=E6=A0=BC=20UI=E3=80=81=E7=81=B5=E5=8A=A8=E5=B2=9B?= =?UTF-8?q?=E5=8A=A8=E7=94=BB/=E4=BA=A4=E4=BA=92=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E3=80=81=E4=BD=9C=E4=B8=9A=E4=B8=8A=E5=B2=9B=E4=B8=8E"?= =?UTF-8?q?=E5=8F=AB=E4=BA=BA"=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 灵动岛修复与动画优化(用户反馈) - **收回不再出现"方框"闪烁**:卡片改为**固定逻辑尺寸 + 顶部居中锚定**, 窗口只负责露出/裁切透明区域。此前卡片随窗口拉伸,形变过程中会看到被拉扁的圆角方块, 胶囊里的铃铛/文字还会被垂直居中而"从上跳到下";两条问题同源,现已消除。 冒烟用 15 次采样断言卡片尺寸恒为固定值(`396x308` / `260x38`),一旦出现中间值即失败。 - **点击屏幕任意位置收回**:展开态临时 `setFocusable(true)` 并取焦,点到别处即失焦 → 自动回缩为胶囊; 收起后立即释放可聚焦性。断言覆盖 `focusable=true → 失焦后 mode=pill、focusable=false`。 - 动画继续打磨:危险/叫人形态改为**内部光晕**(卡片四周再留 4px 透明边,彻底避免窗口边界裁切出硬边)、 尖角与圆角统一、形态尺寸各异(胶囊 268×44 / 详情 404×316 / 紧急 424×344 / 叫人 440×360)。 ## 灵动岛"标为已读"真正同步通知中心 - 新增链路:灵动岛 `mark-read` → 主进程 `setMarkReadHandler` → 主窗口渲染进程 → `notificationApi.markRead` + 刷新 store(未读红点即时减少)。 - 真机链路断言:点击"标为已读"后 `read=false → true`、未读数 `1 → 0`(此前只从灵动岛队列移除)。 ## 作业发布也上岛 - `homework:new` → 灵动岛 `kind=homework`:胶囊显示"新作业"(青蓝描边 + 书本图标), 展开显示作业说明与"截止时间:…"。 ## 新增"叫人"功能 - 服务端:新模块 `modules/calls`(`POST /api/calls`)——校验班级可写 + 学生属于该班, 落库一条 HIGH 级通知(进通知中心、可用已读状态),广播 `notification:new` 到班级房间, 并定向 `call:new` 给被叫学生。 - 共享层:`CALL_QUICK_PHRASES`(8 条快捷短语)、`buildCallTitle()`("请 XXX 同学找 XXX 老师",老师名已含"老师"不重复)、 `ServerToClientEvents['call:new']`、`CreateCallRequest`。 - Web 管理端:学生管理列表新增 **叫人** 按钮 → 弹窗显示对象、快捷短语(点选/取消)、自定义消息(优先),发送即通知。 - 客户端:`call:new` → 灵动岛 `kind=call`,**上课时段也立即展开**(老师正在等这名学生), 琥珀金卡片 +"叫人"徽标 +"收到"按钮,90 秒后自动收起。 ## 客户端界面改为 ClassIsland 同款 Fluent 风格 - 主题令牌:Mica 浅底 `#f3f3f3`、亚克力卡片 `rgba(255,255,255,.7)` + `backdrop-filter`、 强调色 `#0F6CBD`、半透明描边、卡片 8px / 控件 4px 圆角、极轻阴影。 - Element Plus 变量整体对齐(`--el-color-primary`、圆角、表头/行分隔、滚动条等)。 - 侧边导航改为 Fluent NavigationView 观感:白色半透明底、选中项强调色淡底 + 左侧 3px 强调条; 品牌标改为强调色渐变圆角方块。附客户端五个页面实拍(`docs/screenshots/client/`)。 ## 验证 - `pnpm verify:e2e` **68/68**(新增 6 项叫人:201 + 标题模板、自定义消息优先、上课时段允许、学生 403、通知中心可见、清理) - `pnpm verify:desktop` **33/33**(新增:卡片固定尺寸、点击任意处收回、标为已读同步、作业上岛、叫人上课中立即展开、真实通知链路) - `pnpm verify:web` **16/16**(新增叫人入口:弹窗、8 条快捷短语、自定义输入、短语可选中) - `pnpm lint` / `format:check` / `typecheck` 全部通过;服务端安装包已重打并安装验证 --- README.md | 145 ++++++---- docs/screenshots/client/01-schedule.png | Bin 0 -> 174747 bytes docs/screenshots/client/02-homeworks.png | Bin 0 -> 289318 bytes docs/screenshots/client/03-notifications.png | Bin 0 -> 268313 bytes docs/screenshots/client/04-grades.png | Bin 0 -> 215884 bytes docs/screenshots/client/05-settings.png | Bin 0 -> 235515 bytes .../desktop-client/src/island/IslandApp.vue | 245 +++++++++++++++-- packages/desktop-client/src/main/index.ts | 5 + packages/desktop-client/src/main/island.ts | 105 +++++-- packages/desktop-client/src/main/smoke.ts | 234 +++++++++++++++- packages/desktop-client/src/preload/index.ts | 4 + packages/desktop-client/src/renderer/App.vue | 5 +- .../src/renderer/cache/self-test.ts | 106 ++++++++ .../src/renderer/island/bridge.ts | 60 ++++ .../src/renderer/layouts/ClientLayout.vue | 70 +++-- .../src/renderer/stores/realtime.ts | 17 +- .../src/renderer/styles/index.css | 257 ++++++++++++++++-- .../desktop-client/src/types/desktop.d.ts | 23 ++ packages/server/scripts/verify-e2e.mjs | 73 ++++- .../server/src/modules/calls/calls.module.ts | 25 ++ .../server/src/modules/calls/calls.schemas.ts | 23 ++ .../server/src/modules/calls/calls.service.ts | 60 ++++ packages/server/src/modules/registry.ts | 2 + packages/shared/src/constants.ts | 27 +- packages/shared/src/types.ts | 31 ++- packages/web-admin/src/api/index.ts | 8 + packages/web-admin/src/views/StudentsView.vue | 134 ++++++++- scripts/ui-smoke/main.cjs | 52 +++- 28 files changed, 1555 insertions(+), 156 deletions(-) create mode 100644 docs/screenshots/client/01-schedule.png create mode 100644 docs/screenshots/client/02-homeworks.png create mode 100644 docs/screenshots/client/03-notifications.png create mode 100644 docs/screenshots/client/04-grades.png create mode 100644 docs/screenshots/client/05-settings.png create mode 100644 packages/server/src/modules/calls/calls.module.ts create mode 100644 packages/server/src/modules/calls/calls.schemas.ts create mode 100644 packages/server/src/modules/calls/calls.service.ts diff --git a/README.md b/README.md index 05a6f99..fc50ca9 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ | 1 | pnpm monorepo 脚手架、TypeScript / ESLint / Prettier / 环境变量 | ✅ 已完成 | | 2 | 后端:Prisma schema + 迁移 + 种子数据 + JWT 认证 + RBAC + 模块化 REST API + Socket.IO | ✅ 已完成 | | 3 | Web 管理端:登录、主布局、仪表盘、班级/学生/课表/作业/通知/成绩页面、Axios 封装、实时提示 | ✅ 已完成 | -| 4 | EXE 客户端:Electron 主进程/preload/渲染进程、登录、课表/作业/通知/成绩/设置、实时推送、IndexedDB 离线缓存 | ✅ 已完成(冒烟验证 26/26) | +| 4 | EXE 客户端:Electron 主进程/preload/渲染进程、登录、课表/作业/通知/成绩/设置、实时推送、IndexedDB 离线缓存 | ✅ 已完成(冒烟验证 33/33) | | 5 | 三端联调脚本、打包命令、完整 README | ✅ 已完成(三套安装包 + 两套 UI 回归测试) | | 6 | 测试账号与种子数据说明 | ✅ 已完成(见下文) | | 7 | 生产化:服务端安装程序(内置 Node)、Web 端 PWA 可安装、Docker + Nginx 部署、生产加固与运维文档 | ✅ 已完成(见 [`docs/production.md`](docs/production.md)) | @@ -171,9 +171,9 @@ pnpm verify:desktop ```bash # 另开一个终端先启动后端:pnpm dev:server -pnpm verify:e2e # 后端 + REST + Socket.IO + RBAC + 上课时段拦截:62 项 -pnpm verify:web # Web 管理端真实点击(含手机小屏适配、上课时段紧急通知全屏警告):15 项 -pnpm verify:desktop # Electron 客户端(含灵动岛与联网集成):26 项 +pnpm verify:e2e # 后端 + REST + Socket.IO + RBAC + 上课时段拦截 + 叫人:68 项 +pnpm verify:web # Web 管理端真实点击(含手机小屏适配、叫人入口、紧急通知全屏警告):16 项 +pnpm verify:desktop # Electron 客户端(含灵动岛动画/收回/已读/作业/叫人、真实链路):33 项 ``` 后端脚本验证**实时推送时延、作业完成、成绩下发、权限隔离、上课时段紧急通知拦截**等 62 项, @@ -202,30 +202,30 @@ pnpm verify:desktop # Electron 客户端(含灵动岛与联网集成) ## 常用命令 -| 命令 | 说明 | -| ------------------------------------------- | ------------------------------------------------------------------------------ | -| `pnpm dev` | 并行启动 shared(tsc watch) + 后端 + Web 端 | -| `pnpm dev:server` / `pnpm dev:web` | 只启动后端 / 只启动 Web 端 | -| `pnpm dev:desktop` | 启动 EXE 客户端开发模式(Vite 5174 + Electron,热更新) | -| `pnpm build` | 构建 shared + 后端 + Web 端 + EXE 客户端 | -| `pnpm build:desktop` | 仅构建 EXE 客户端(esbuild 主进程/preload + Vite 渲染进程) | -| `pnpm icons` | 生成应用图标(PNG/ICO,用 Electron 渲染 SVG) | -| **`pnpm dist:server`** | **打包服务端 + Web 管理端**(免安装目录 + NSIS 安装程序,内置 Node) | -| `pnpm dist:dir` | 打包客户端免安装目录 `release/win-unpacked`(含可执行文件,最快) | -| `pnpm dist:win` | 打包客户端 nsis 安装包 + portable 单文件 EXE | -| `pnpm dist:all` | 服务端安装程序 + 客户端安装程序一起打 | -| `pnpm verify:e2e` | 后端端到端验收(62 项,需服务端已启动) | -| `pnpm verify:web` | Web 管理端 UI 真实点击测试(Electron 驱动,15 项,含手机小屏适配) | -| `pnpm verify:desktop` | EXE 客户端冒烟验证(26 项,含灵动岛行为/像素级截图校验、侧边栏点击与离线回退) | -| `pnpm typecheck` | 全仓库类型检查(含 `vue-tsc`) | -| `pnpm lint` / `pnpm lint:fix` | ESLint 检查 / 自动修复 | -| `pnpm format` / `pnpm format:check` | Prettier 格式化 / 检查 | -| `pnpm db:generate` | 生成 Prisma Client(输出到 `packages/server/src/generated/prisma`) | -| `pnpm db:migrate` | 创建并应用迁移 | -| `pnpm db:seed` | 写入种子数据 | -| `pnpm db:reset` | 重置数据库并重新执行 seed | -| `pnpm db:studio` | 打开 Prisma Studio | -| `pnpm db:switch:mysql` / `db:switch:sqlite` | 切换数据库 provider | +| 命令 | 说明 | +| ------------------------------------------- | ---------------------------------------------------------------------------- | +| `pnpm dev` | 并行启动 shared(tsc watch) + 后端 + Web 端 | +| `pnpm dev:server` / `pnpm dev:web` | 只启动后端 / 只启动 Web 端 | +| `pnpm dev:desktop` | 启动 EXE 客户端开发模式(Vite 5174 + Electron,热更新) | +| `pnpm build` | 构建 shared + 后端 + Web 端 + EXE 客户端 | +| `pnpm build:desktop` | 仅构建 EXE 客户端(esbuild 主进程/preload + Vite 渲染进程) | +| `pnpm icons` | 生成应用图标(PNG/ICO,用 Electron 渲染 SVG) | +| **`pnpm dist:server`** | **打包服务端 + Web 管理端**(免安装目录 + NSIS 安装程序,内置 Node) | +| `pnpm dist:dir` | 打包客户端免安装目录 `release/win-unpacked`(含可执行文件,最快) | +| `pnpm dist:win` | 打包客户端 nsis 安装包 + portable 单文件 EXE | +| `pnpm dist:all` | 服务端安装程序 + 客户端安装程序一起打 | +| `pnpm verify:e2e` | 后端端到端验收(68 项,需服务端已启动) | +| `pnpm verify:web` | Web 管理端 UI 真实点击测试(Electron 驱动,16 项,含手机小屏适配与叫人入口) | +| `pnpm verify:desktop` | EXE 客户端冒烟验证(33 项,含灵动岛动画/收回/已读/作业/叫人、像素级校验) | +| `pnpm typecheck` | 全仓库类型检查(含 `vue-tsc`) | +| `pnpm lint` / `pnpm lint:fix` | ESLint 检查 / 自动修复 | +| `pnpm format` / `pnpm format:check` | Prettier 格式化 / 检查 | +| `pnpm db:generate` | 生成 Prisma Client(输出到 `packages/server/src/generated/prisma`) | +| `pnpm db:migrate` | 创建并应用迁移 | +| `pnpm db:seed` | 写入种子数据 | +| `pnpm db:reset` | 重置数据库并重新执行 seed | +| `pnpm db:studio` | 打开 Prisma Studio | +| `pnpm db:switch:mysql` / `db:switch:sqlite` | 切换数据库 provider | ## Web 管理端(含手机小屏适配) @@ -261,7 +261,7 @@ pnpm verify:desktop # Electron 客户端(含灵动岛与联网集成) 实现位置:`src/composables/useResponsive.ts`(断点 + resize 监听)、`src/layouts/AdminLayout.vue`(抽屉/顶栏)、 `src/styles/index.css`(全局响应式规则)、各视图表格卡片加 `.table-card`。 -`pnpm verify:web` 的 15 项里,后 7 项专门验证手机端(Electron 真实点击 + 真实尺寸窗口): +`pnpm verify:web` 的 16 项里,最后 8 项专门验证手机端与叫人入口(Electron 真实点击 + 真实尺寸窗口): | 校验项 | 实测结果 | | -------------------------------------- | -------------------------------------------------------------------- | @@ -311,17 +311,22 @@ pnpm verify:desktop # Electron 客户端(含灵动岛与联网集成) 客户端有一个独立于主窗口的**灵动岛**:一个无边框、透明、置顶、不占任务栏的窄条窗口, 常驻桌面**中上方**(屏幕工作区顶部居中,`y = workArea.y + 8`)。它是"消息到达"的第一现场: -| 场景 | 灵动岛行为 | -| -------------------------- | ---------------------------------------------------------------------------------------------------------- | -| 收到通知(非上课时段) | **直接出现胶囊**(无"上岛"入场动画):`新消息 · 共 N 条` + 发送人 + `点击查看`,15 秒后自动收起 | -| 点击胶囊 | 展开为**详情卡**(弹簧形变 + 内容弹入):标题、内容、时间、`打开应用 / 标为已读 / 知道了`,20 秒后收起 | -| 点击卡片空白处 | 回缩为**胶囊**(不直接消失,仍可再次点开) | -| 点击右上角收起按钮 | 同上:回缩为胶囊 | -| 上课时间段收到普通通知 | **完全不显示**(窗口直接隐藏,不打扰课堂)并进入待发队列;下课后自动弹出详情(14 秒)→ 收起为胶囊(25 秒) | -| 上课时间段收到**紧急**通知 | **无论是否上课立刻展开**显示详情(带内部红色呼吸光晕与"紧急"角标,无需点击),45 秒后收起 | -| 上课时间段内的任何点击 | 一律不显示(不会展开、也不会回缩出胶囊),只有紧急通知能出现在屏幕上 | -| 多条约谈 | 队列按时间排序,紧急通知优先插播;卡片底部提示"还有 N 条通知" | -| 退出/断开 | 主窗口退出时灵动岛一并关闭;上课状态来自 `GET /api/schedules/current`(10 秒心跳 + 下课时长定时器) | +| 场景 | 灵动岛行为 | +| -------------------------- | ----------------------------------------------------------------------------------------------------------------- | +| 收到通知(非上课时段) | **直接出现胶囊**(无"上岛"入场动画):`新消息 · 共 N 条` + 发送人 + `点击查看`,15 秒后自动收起 | +| 点击胶囊 | 展开为**详情卡**(弹簧形变 + 内容弹入):标题、内容、时间、`打开应用 / 标为已读 / 知道了`,20 秒后收起 | +| 点击卡片空白处 | 回缩为**胶囊**(不直接消失,仍可再次点开) | +| **点击屏幕任意位置** | 同样回缩为胶囊:展开时窗口临时可聚焦,点到别处即失焦收起(WinUI 同款"点击外部关闭") | +| **点"标为已读"** | 通知中心同步标记已读、未读红点立即减少(此前只从灵动岛队列移除、列表仍显示未读) | +| **新作业发布** | 也上岛:胶囊显示"新作业"(青蓝描边 + 书本图标),展开可见"截止时间:…" | +| **叫人(老师点名)** | **上课时段也立即展开**:琥珀金卡片、"叫人"徽标、"请 XXX 同学找 XXX 老师"、按钮为"收到" | +| 卡片形变 | 卡片是**固定尺寸、顶部居中锚定**的,窗口只负责露出/裁切透明区域 —— 收回时不会出现被拉伸的"方框",图标也不会上下跳 | +| 点击右上角收起按钮 | 同上:回缩为胶囊 | +| 上课时间段收到普通通知 | **完全不显示**(窗口直接隐藏,不打扰课堂)并进入待发队列;下课后自动弹出详情(14 秒)→ 收起为胶囊(25 秒) | +| 上课时间段收到**紧急**通知 | **无论是否上课立刻展开**显示详情(带内部红色呼吸光晕与"紧急"角标,无需点击),45 秒后收起 | +| 上课时间段内的任何点击 | 一律不显示(不会展开、也不会回缩出胶囊),只有紧急通知能出现在屏幕上 | +| 多条约谈 | 队列按时间排序,紧急通知优先插播;卡片底部提示"还有 N 条通知" | +| 退出/断开 | 主窗口退出时灵动岛一并关闭;上课状态来自 `GET /api/schedules/current`(10 秒心跳 + 下课时长定时器) | - 动画:窗口尺寸用逐帧缓动实现"形变"(胶囊 → 详情/紧急为 340ms `easeOutBack` **弹簧回弹**, 收起为 260ms `easeOutCubic`),胶囊出现**不做动画**直接显示; @@ -348,6 +353,28 @@ pnpm verify:desktop # Electron 客户端(含灵动岛与联网集成) > 截图路径可用 `ISLAND_SHOTS_DIR` 覆盖(默认 `.cache/island-shots/`); > 归档目录里的图就是打包后 EXE 跑自动化验证时产出的同一份文件。 +### 界面风格(ClassIsland 同款 Fluent) + +客户端整体视觉对齐 ClassIsland 的 Fluent / WinUI 观感: + +- 浅色 Mica 底(`#f3f3f3`)+ **半透明亚克力卡片**(`rgba(255,255,255,.7)` + `backdrop-filter: blur(20px)`) +- 强调色 `#0F6CBD`(悬停 `#115EA3`);选中导航项 = 强调色淡底 + **左侧 3px 强调条** +- 圆角统一:卡片 8px / 控件 4px;描边用半透明黑(`rgba(0,0,0,.06)`)代替灰线;阴影极轻 +- 字体 `Segoe UI Variable / 微软雅黑 UI`;表格表头无底色、行分隔为 1px 细线;滚动条改为细圆角 +- Element Plus 变量(`--el-color-primary`、`--el-border-radius-base` 等)整体对齐上述规范 + +实拍(`docs/screenshots/client/`): + +| 页面 | 截图 | +| ---- | ----------------------------------------------------------- | +| 课表 | ![客户端课表](docs/screenshots/client/01-schedule.png) | +| 作业 | ![客户端作业](docs/screenshots/client/02-homeworks.png) | +| 通知 | ![客户端通知](docs/screenshots/client/03-notifications.png) | +| 设置 | ![客户端设置](docs/screenshots/client/05-settings.png) | + +> 后续可继续深化:课表改为 ClassIsland 那种"垂直时间轴 + 当前课高亮卡片"(现为周视图表格)、 +> 迷你悬浮课表窗口、上课/下课提醒动画。 + ### 离线缓存与自动同步 ``` @@ -417,6 +444,22 @@ pnpm dist:win # nsis 安装包 + portable 单文件(需联网下载 NSIS 并对尺寸、宽高比、绘制内容(不透明像素/颜色种类)、紧急态红色像素与外溢红光做断言。 冒烟进程使用独立 userData(`ELECTRON_SMOKE_PROFILE`),因此**用户开着客户端也能跑验证**。 +## 叫人(老师点名让学生过来) + +老师在 **Web 管理端 → 学生管理 → 叫人** 选中学生,配合**快捷短语**或**自定义消息**发送; +学生端桌面**立即浮出**灵动岛卡片,显示「请 XXX 同学找 XXX 老师」+ 具体事由,按钮为「收到」。 + +| 位置 | 行为 | +| ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 服务端 | `POST /api/calls`(教师/管理员)→ 落库一条 HIGH 级通知(进学生通知中心、可用已读状态) + 广播 `notification:new`(班级房间)与 `call:new`(定向到被叫学生 `user:{id}`) | +| 快捷短语 | `CALL_QUICK_PHRASES`(共享常量):请到办公室/讲台/实验室/门卫处找我、请带上作业本/试卷找我、请到教室门口等我、请马上来一趟;点击选中,再点取消 | +| 自定义消息 | 输入框内容优先于快捷短语(最长 200 字),例如"带上昨天的数学作业到办公室" | +| 客户端 | `call:new` → 灵动岛 `kind=call`,**无视上课时段立即展开**(老师正在等这名学生),90 秒后自动收起 | +| 权限 | 学生调用被拒 403;教师只能叫自己班级的学生(跨班/不在本班返回 400/403) | + +`verify:e2e` 覆盖 6 项(201 + 标题模板、自定义消息优先、上课时段允许、学生 403、学生通知中心可见且未读、清理); +`verify:web` 覆盖弹窗与短语可选中;`verify:desktop` 覆盖"上课中也立即展开 + 徽标/按钮文案"。 + ## 上课时段策略(紧急通知二次确认) "上课时段"由课表实时判定:`GET /api/schedules/current?classId=` 返回 @@ -579,7 +622,11 @@ pnpm db:migrate && pnpm db:seed | 断网后客户端可查看缓存数据 | ✅ | 客户端冒烟:`断网时回退到本地缓存 → fromCache=true items=1`;离线横幅 + 缓存统计页可用 | | 权限隔离:学生不能访问其他班级数据 | ✅ | 10 项越权断言全部 403/401(学生跨班/跨班作业/跨班课表、教师跨班发布、未登录访问…) | | 上课时段发布紧急通知必须二次确认 | ✅ | 服务端 409 `URGENT_DURING_CLASS`(`confirmDuringClass` 后 201);Web 端全屏警告 + 3 秒倒计时 | -| 客户端灵动岛:上课隐藏 / 下课弹出 / 紧急立即展开 | ✅ | `verify:desktop` 四种状态断言 + 截图(`.cache/island-shots/`) | +| 客户端灵动岛:上课隐藏 / 下课弹出 / 紧急立即展开 | ✅ | `verify:desktop` 状态断言 + 像素级截图(`docs/screenshots/island/`) | +| 灵动岛:收回无"方框"闪烁 / 点击屏幕任意处收回 | ✅ | 采样卡片尺寸恒为固定值(396×308、260×38)+ 失焦自动收回 | +| 灵动岛"标为已读"同步通知中心 | ✅ | 真实链路:点击后 `read=false → true`、未读数 `1 → 0` | +| 作业发布也上岛("新作业"胶囊 + 截止时间) | ✅ | `kind=homework` + 展开显示"截止时间:…" | +| 叫人(老师点名 → 学生灵动岛立即跳出) | ✅ | `verify:e2e` 6 项 + `verify:desktop` 上课中也立即展开(徽标"叫人"、按钮"收到") | | 能成功打包 Windows EXE | ✅ | `班级小助手-0.1.0-x64-setup.exe` / `-portable.exe` / `win-unpacked/*.exe`(见下表) | | 提供完整 README(启动、构建、打包、默认账号) | ✅ | 本文档含快速开始、命令表、API、WebSocket、RBAC、模块化、MySQL 切换、打包与常见问题 | @@ -594,14 +641,14 @@ pnpm db:migrate && pnpm db:seed 当前实测: -| 验证 | 结果 | -| ------------------------------------------------------------------------------- | ----------------------------------- | -| `pnpm verify:e2e`(开发环境与**安装后的生产实例**各跑一次) | **62/62** ✅ | -| `pnpm verify:web`(Web 管理端真实点击 + 手机小屏适配 + 上课时段紧急通知 + PWA) | **15/15** ✅ | -| `pnpm verify:desktop`(客户端冒烟 + 灵动岛行为 + 像素级截图校验 + 离线回退) | **26/26** ✅ | -| `pnpm typecheck` / `pnpm lint` / `pnpm format:check` | 全部通过 ✅ | -| 安装程序完整生命周期(静默安装 → 启停脚本 → 卸载) | 通过 ✅ | -| Docker / Nginx 部署样例 | 文件已提供,本机无 Docker 未实测 ⚠️ | +| 验证 | 结果 | +| ---------------------------------------------------------------------------------- | ----------------------------------- | +| `pnpm verify:e2e`(开发环境与**安装后的生产实例**各跑一次) | **68/68** ✅ | +| `pnpm verify:web`(Web 管理端真实点击 + 手机小屏适配 + 叫人入口 + 紧急通知 + PWA) | **16/16** ✅ | +| `pnpm verify:desktop`(客户端冒烟 + 灵动岛动画/收回/已读/作业/叫人 + 像素级校验) | **33/33** ✅ | +| `pnpm typecheck` / `pnpm lint` / `pnpm format:check` | 全部通过 ✅ | +| 安装程序完整生命周期(静默安装 → 启停脚本 → 卸载) | 通过 ✅ | +| Docker / Nginx 部署样例 | 文件已提供,本机无 Docker 未实测 ⚠️ | ## 常见问题(本机环境已知坑) diff --git a/docs/screenshots/client/01-schedule.png b/docs/screenshots/client/01-schedule.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d432bc73611ba2778dc94ace06b19a85e8ac09 GIT binary patch literal 174747 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 z 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