35 Commits

Author SHA1 Message Date
b850830f3f 美化样式 2026-03-16 08:54:03 +08:00
85ea1396bb ```
feat(popup): 移除画板功能并调整弹窗尺寸

- 删除了画板菜单项及相关功能代码
- 移除了画板相关的导入和函数定义
- 将弹窗默认项目数从3调整为2,减小弹窗高度
- 更新了弹窗尺寸计算逻辑以适应新的项目数量
```
2026-03-15 21:03:34 +08:00
2da9c45b61 feat(websocket): 添加投屏实际声网UID支持
- 在MeetingRedisService中扩展setScreenSharing方法以支持screenShareActualUid参数
- 更新RoomState类型定义以包含screenShareActualUid字段
- 修改MeetingWebSocketGateway以传递screenShareActualUid数据
- 扩展MeetingJoinRoomSuccessData接口以包含screenShareActualUid
- 在学生端组件中移除计算逻辑并直接使用后端返回的screenShareActualUid
- 更新投屏开始和结束事件处理以正确设置screenShareActualUid状态
- 完善房间加入时的screenShareActualUid数据初始化逻辑
2026-03-15 21:01:51 +08:00
a49e027613 feat(meeting): 实现投屏用户UID计算和显示优化
- 添加calculateScreenActualUid函数用于计算投屏实际声网UID
- 新增screenShareActualUid计算属性获取投屏实际UID
- 优化teacherPreferredPrimaryUid逻辑优先使用投屏实际UID
- 更新secondaryUid计算逻辑适配投屏实际UID判断
- 修改小窗标题显示逻辑使用实际投屏UID判断
- 调整isPrimaryScreenSharing计算方式匹配实际投屏UID
- 添加投屏开始和结束的消息日志记录功能
2026-03-15 20:42:55 +08:00
d070314118 refactor(window): 优化悬浮列表窗口的创建和关闭逻辑
- 简化 close_float_list_window 命令的返回值处理
- 清理 create_float_list_window_impl 中的多余空行
- 修复悬浮列表组件中全员静音状态的变量引用
- 移除样式文件中的多余空行
- 更新教师端会议页面中组件卸载生命周期为 onBeforeUnmount
- 在会议结束时确保关闭悬浮列表窗口
- 简化 Vite 配置中 VueDevTools 的配置选项
2026-03-15 18:33:33 +08:00
bfaad97f61 feat(websocket): 优化投屏状态管理并新增全员禁麦功能
- 重构 Redis 投屏状态存储,统一使用 screenShareOwnerUid 字段
- 移除冗余的 screenShareUid 字段,简化房间状态数据结构
- 新增 client_mute_all_students 消息类型支持全员禁麦功能
- 实现创建者权限验证的全员禁麦逻辑,排除老师角色用户
- 优化 Tauri 桌面应用悬浮窗创建接口,支持状态参数传递
- 添加悬浮窗关闭功能及教师端静音状态同步机制
- 修复学生端界面中投屏状态变量命名不一致问题
- 统一按钮样式规范,提升界面组件一致性
2026-03-15 18:21:15 +08:00
cddb2d65a4 style(floating-list): 更新静音状态下的文字样式
- 为全员静音和老师静音菜单项添加动态文字颜色类
- 添加CSS过渡效果使颜色变化更平滑
- 设置静音状态下文字为红色并加重字体粗细
- 实现静音状态的文字视觉反馈效果
2026-03-15 16:34:02 +08:00
95eccdb4c3 refactor(floating-list): 重构浮动列表界面并优化交互体验
- 重构拖拽手柄样式,使用新的渐变条形设计替代原有灰色线条
- 添加图标包装器容器,统一管理菜单项图标的显示和交互
- 集成动态图标切换功能,根据静音状态显示不同图标(音量高/静音)
- 更新麦克风图标为更直观的麦克风/禁用麦克风图标
- 替换控制台图标为显示器图标,提高功能识别度
- 实现静音状态响应式更新,通过 isMuted 和 isTeacherMuted 状态追踪
- 调整菜单项点击逻辑,支持静音/取消静音双向切换
- 优化菜单项样式,添加悬停缩放效果和背景过渡动画
- 改进图标容器样式,增加圆角背景和阴影效果
- 调整文字颜色和阴影,提升在半透明背景下的可读性
- 重新组织CSS类结构,提高代码可维护性和复用性
2026-03-15 16:33:07 +08:00
b262cfac14 ```
refactor(meeting): 优化悬浮窗交互和会议控制功能

- 移除废弃的环境配置模块文件
- 简化悬浮球组件的折叠逻辑,移除复杂的窗口位置计算
- 将静态图片图标替换为动态图标组件,提升视觉效果
- 重构悬浮列表窗口的大小调整逻辑,实现折叠展开平滑过渡
- 优化教师端全员静音功能,使用displayUsers替代studentUsers
- 调整会议控制事件处理函数的调用方式,提升响应性能
- 添加窗口边界检测,确保折叠展开时窗口始终可见
```
2026-03-15 13:45:56 +08:00
a3b31f0ff9 refactor(tauri): 移除持久化存储和HTTP插件优化应用架构
- 移除了 tauri-plugin-persisted-scope 和 tauri-plugin-http 插件依赖
- 从桌面功能权限中移除了文件系统和HTTP访问权限
- 删除了相关的存储键常量定义
- 修改悬浮列表窗口创建逻辑,移除页面类型参数和动态计算功能
- 主窗口配置调整为非透明背景并设置白色背景色
- 移除了前端悬浮列表中互动课堂和智评会议相关功能组件
- 更新Cargo.lock移除相关依赖包确保构建一致性
2026-03-15 11:32:31 +08:00
f795de3292 refactor(window): 移除会议窗口相关功能
- 删除会议窗口创建相关的常量定义
- 移除 create_meeting_window 模块及其命令注册
- 从窗口命令模块中移除会议窗口创建函数
- 删除前端调用会议窗口创建的 API 接口
- 清理画板窗口和实时字幕窗口的占位代码
2026-03-15 10:02:32 +08:00
50532079cf fix(meeting): 优化会议房间学生列表排序和视频播放逻辑
- 重构学生列表排序逻辑,使用更高效的 map 映射和数组排序方法
- 移除冗余的用户遍历和映射操作,提升性能
- 在会议开始时确保获取学生信息列表,添加明确的注释标识
- 改进声网视频播放逻辑,实现立即播放和重试机制
- 添加视频播放失败时的重试逻辑,最多重试10次间隔100ms
- 增强视频播放错误处理和调试信息输出
2026-03-14 22:54:39 +08:00
525281e3f8 feat(meeting): 实现学生排序功能并优化Redis存储
- 将Redis中的学生排序存储从长ID改为短ID
- 在监控端按studentListForSort顺序重新排列学生列表
- 添加新加入学生的处理逻辑
- 实现WebSocket消息处理学生排序变更事件
- 更新类型定义支持学生排序变更数据结构
- 优化Redis服务注释说明短ID存储格式
2026-03-14 22:35:30 +08:00
5873cda8f5 feat(meeting): 优化会议室页面体验并完善音视频功能
- 添加房间加入加载状态提示界面
- 实现学生ID到姓名的映射显示功能
- 优化音视频订阅处理逻辑增强稳定性
- 统一教师端和监控端的加载状态管理
- 完善学生列表获取和排序机制
- 修复用户发布事件处理中的潜在错误
2026-03-14 22:17:20 +08:00
0e88826a9c refactor(meeting): 将学生ID从长ID改为短ID以优化性能
- 修改SaveStudentOrderDto中的studentLongIds字段为studentShortIds
- 更新MeetingController中保存和传输的学生ID参数名称
- 重构MeetingRedisService中setStudentOrder方法参数为studentShortIds
- 调整WebSocket通信中的学生ID字段名称一致性
- 在前端API调用中使用studentShortIds替代studentLongIds
- 添加监控端对学生排序变更事件的处理逻辑
- 更新学生排序对话框中使用的ID映射方式
2026-03-14 21:28:56 +08:00
bc5fa9a366 feat(meeting): 添加学生排序功能和黑名单用户DTO
- 在MeetingController中添加BlacklistUserDto导入并移除内联定义
- 将BlacklistUserDto移动到meeting.dto.ts文件中并添加数据验证装饰器
- 在SaveStudentOrderDto中添加@IsNotEmpty和@IsArray验证规则
- 创建saveStudentOrderAxios API函数用于保存学生排序
- 更新MeetingRoomTeacher组件以处理新的API响应格式
- 使用vue-slicksort库替换原生拖拽实现学生排序功能
- 修改StudentSortDialog组件使用SlickList和SlickItem组件
- 通过API调用保存排序结果并添加成功提示
- 调整样式以适配新的排序组件结构
2026-03-14 21:09:09 +08:00
d0c8ff4e47 refactor(meeting): 优化学生详情查询接口并修复数据库字段映射
- 将返回类型从 StudentListResponseDto 改为直接返回 StudentDetailResponseDto 数组
- 移除不必要的包装对象,简化数据结构
- 修复数据库表 meeting_user 中的字段名映射,统一使用下划线命名规范
- 更新 SQL 查询中的字段引用以匹配正确的数据库列名
- 简化服务层的数据处理逻辑,提高查询效率
2026-03-14 18:19:08 +08:00
3686bf1c1f feat(meeting): 添加学生列表排序功能
- 实现学生列表拖拽排序并保存到 Redis
- 添加 WebSocket 消息类型支持学生排序变更
- 在教师端界面添加学生列表排序按钮和对话框
- 修改数据传输方式以支持排序信息同步
- 更新 API 接口以传递房间 ID 获取排序数据
- 添加 Redis 存储学生排序顺序的功能
2026-03-14 18:11:31 +08:00
ff6dde5f4d feat(meeting): 添加通过作业ID查询学生详细信息功能
- 在MeetingController中新增getStudentDetails方法,支持通过作业ID查询学生信息
- 添加StudentDetailResponseDto和StudentListResponseDto数据传输对象
- 实现getStudentDetailsByHomeworkId服务方法,支持长短ID映射和自动分配
- 优化SQL查询逻辑,支持批量插入缺失的短ID
- 添加相应的API文档注解和参数验证
2026-03-14 14:52:18 +08:00
b04877be8d chore(lint): 禁用 TypeScript 类型构成排序规则
- 添加 '@typescript-eslint/sort-type-constituents': 'off' 配置
- 允许类型定义中的成员按需排列而不强制排序
- 避免因类型排序导致的代码风格冲突
2026-03-14 14:25:53 +08:00
36ae77d9f0 refactor(entities): 移除多个实体类定义
- 移除了 IcrBookarticle 实体类及其数据库表结构定义
- 移除了 IcrBookassigntask 实体类及其数据库表结构定义
- 移除了 IcrBookcatalog 实体类及其数据库表结构定义
- 移除了 IcrBookcategory 实体类及其数据库表结构定义
- 移除了 IcrBookpage 实体类及其数据库表结构定义
- 移除了 IcrBookpagearea 实体类及其数据库表结构定义
- 移除了 IcrBookpagequestion 实体类及其数据库表结构定义
- 移除了 IcrBooks 实体类及其数据库表结构定义
- 移除了 IcrClasscourse 实体类及其数据库表结构定义
- 移除了 IcrClassdatacollect 实体类及其数据库表结构定义
- 移除了 IcrClassrelationtemplate 实体类及其数据库表结构定义
- 移除了 IcrClassrelationtemplatedetail 实体类及其数据库表结构定义
- 移除了 IcrClassroomansweringresult 实体类及其数据库表结构定义
- 移除了 IcrClassroomcourse 实体类及其数据库表结构定义
- 移除了 IcrClassroomcourseplan 实体类及其数据库表结构定义
- 移除了 IcrClassroomcoursequestion 实体类及其数据库表结构定义
- 移除了 IcrClassroomquestion 实体类及其数据库表结构定义
- 移除了 IcrClassroomquestionpackage 实体类及其数据库表结构定义
- 移除了 IcrClassroomquestionpackageitem 实体类及其数据库表结构定义
2026-03-14 14:24:39 +08:00
0150dc3ccb feat(database): 配置 MikroORM 实体生成器处理 bigint 类型
- 导入 EntityMetadata 和 Platform 类型定义
- 添加 entityGenerator 配置选项
- 实现 onProcessedMetadata 回调函数
- 将数据库 bigint 类型转换为 TypeScript number 类型
- 保留原始列类型信息用于数据库操作
2026-03-14 14:24:09 +08:00
c59a3c798d refactor(entities): 更新 mikro-orm 配置文件位置和命令参数
- 将 mikro-orm.config.ts 移动到 src 目录下
- 更新 generate-entities 命令的配置文件路径参数
- 移除废弃的 migrate 和 mikro-orm 命令脚本
- 修改 tsconfig.json 中的 include 配置以包含新的配置文件位置
2026-03-14 13:20:00 +08:00
bd97919256 feat(entities): 集成 MikroORM 并配置实体文件规则
- 添加 MikroORM CLI 和实体生成器依赖包
- 配置 ESLint 规则以适配 MikroORM 生成的实体文件
- 添加 mikro-orm 和 generate-entities 命令脚本
- 更新 pnpm 锁定文件包含新依赖项
- 移除手动创建的 meeting-user 实体文件,改用 ORM 自动生成
2026-03-14 13:02:51 +08:00
b4ef771a39 fix(meeting): 修复会议室学生网格布局计算逻辑
- 修正 gridRows 和 gridCols 计算函数的命名与逻辑错误
- 调整学生人数与网格行列数的对应关系
- 添加 16:9 宽高比设置以统一视频显示比例
- 优化控制台日志输出的代码格式
- 修复加入会议时对已存在用户的处理逻辑
2026-03-14 12:29:12 +08:00
f5963f3203 fix(meeting): 解决学生端加入会议时已存在用户视频未播放问题
- 加入会议后检查已存在的远程用户列表
- 为已存在的每个用户调用视频播放确保函数
- 添加调试日志显示已存在用户的 UID 信息
- 确保主次视频窗口及所有远程用户视频正常播放
2026-03-14 11:23:09 +08:00
726a8026be fix(meeting): 解决会议房间学生端事件监听器内存泄漏问题
- 在离开房间时移除 socket 的 message 事件监听器
- 添加声网客户端事件监听器的清理逻辑
- 确保在房间切换和组件卸载时完全清理所有事件监听器
- 避免重复创建声网客户端实例时保留旧监听器
- 修复了可能造成内存泄漏的事件监听器残留问题
2026-03-14 11:19:11 +08:00
1c64968b5e chore(deps): 更新项目依赖包版本
- 升级 webpack-cli 从 6.0.1 到 7.0.0 版本
- 更新 @discoveryjs/json-ext 从 0.6.3 到 1.0.0 版本
- 升级 commander 从 12.1.0 到 14.0.3 版本
- 更新 stylelint-order 从 8.0.0 到 8.1.0 版本
- 升级 vite-plugin-vue-devtools 从 8.0.7 到 8.1.0 版本
- 更新 @vue/devtools-core 从 8.0.7 到 8.1.0 版本
- 升级 @vue/devtools-kit 和 @vue/devtools-shared 到 8.1.0 版本
- 更新 @vue/shared 从 3.5.29 到 3.5.30 版本
- 优化会议房间学生端视频播放逻辑,添加 nextTick 等待 DOM 更新
- 重构声网会议初始化逻辑,清理旧客户端监听器防止重复注册
- 修改远程视频播放策略,移除自动播放改为业务层手动控制
2026-03-14 11:11:36 +08:00
69fa8df1ad fix(meeting-room): 修复本地视频未正确播放的问题并改进控制栏样式
修复本地视频流在特定条件下未正确渲染到播放器元素的问题,通过添加 ensureLocalVideoPlaying 函数并在 selfWindowUid 变化时调用。
同时重构控制栏样式,将其改为绝对定位并更新颜色、间距和悬停效果,以提升视觉一致性和用户体验。
2026-03-13 18:02:33 +08:00
3ac83f1b94 feat(meeting): 支持房间结束时间管理及投屏双流模式
- 新增房间结束时间字段,支持老师端设置和续期
- 实现投屏双流模式,老师可同时展示摄像头和屏幕共享
- 学生端支持切换主画面显示摄像头或投屏内容
- 优化屏幕共享实现,使用独立声网客户端避免轨道冲突
- 增加设备冲突检测逻辑,区分教室端、监控端和学生端入口
2026-03-13 17:45:51 +08:00
d09d3645ea feat: 支持监控端进入并优化登录态验证
- 允许教师从加入页面选择进入监控端或课堂端
- 修改登录态验证逻辑,仅检查 Redis 中是否存在 token 而非严格相等,以支持同一账号多端登录
- 监控端默认不发布本地音视频轨道,但可通过配置动态启用
- 优化 WebSocket 鉴权失败处理,自动跳转登录页
2026-03-13 14:45:01 +08:00
bd31d23bda feat(meeting): 新增学生端和监控端会议页面
- 在路由中新增学生端和监控端页面路由
- 修改加入会议逻辑,根据角色跳转到不同页面
- 新增监控端页面,支持多学生画面宫格布局
- 新增学生端页面,支持主画面显示和本地视频小窗拖拽
- 扩展 useAgoraMeeting hook 支持禁用本地音视频轨道
- 更新悬浮列表窗口的会议和字幕创建函数参数
- 添加课程和评讲信息的存储常量
2026-03-13 13:08:30 +08:00
745dc0e8fa feat: 新增浮动列表窗口和弹出窗口功能
添加浮动列表窗口,支持拖拽、吸附和折叠功能,包含课程互动和辅导工具菜单
新增弹出窗口,提供主窗口、画板和退出等快捷操作
优化窗口创建逻辑,添加日志记录和焦点设置
2026-03-13 11:32:05 +08:00
3d215110fa chore: 添加图标图片资源
添加用于界面交互的返回、非全屏和全屏图标图片。
2026-03-13 11:05:00 +08:00
78af453fe1 chore: 初始化项目基础结构和资源文件
- 添加项目图标文件(app-icon.png、各平台图标)
- 配置开发环境文件(.env、.nvmrc、.npmrc)
- 添加静态资源文件(背景图片、字体、音频)
- 初始化Tauri后端结构(build.rs、main.rs、模块文件)
- 配置前端项目结构(TypeScript、Vue组件、样式)
- 添加Node.js API服务基础结构
- 配置构建和开发工具(vite、prettier、gitignore)
2026-03-13 10:03:05 +08:00