5.1 KiB
5.1 KiB
项目评审会议记录 (Project Review Meeting Minutes)
日期: 2025年12月1日 参与人: 产品经理 (PM), 后端开发 (Backend), 测试工程师 (QA) 主题: 现有功能评审与迭代建议
1. 产品经理 (PM) 评审
观点: 核心功能闭环已完成,但用户体验 (UX) 细节有待打磨。
-
UI/交互体验:
- 语音交互: 目前“上滑取消”的阈值是固定的 (
diff > 100),用户没有视觉反馈。建议增加一个“松开手指取消发送”的视觉提示区域(类似微信的红色区域),让用户明确知道现在的状态是“录音中”还是“即将取消”。 - 消息类型: 界面上有
qsendText(Type 1) 和gsendText(Type 2) 两种发送逻辑,对应“私有”和“全局”。这对用户来说可能比较晦涩。建议在 UI 上明确区分,例如使用不同的按钮颜色或图标,或者通过 Tab 切换当前发送模式,而不是并列两个按钮(如果目前是并列的话)。 - 加载状态: 下拉刷新时的
pullText变化(“下拉刷新” -> “释放立即刷新”)是好的,但建议增加更平滑的动画过渡。
- 语音交互: 目前“上滑取消”的阈值是固定的 (
-
业务逻辑:
- 位置信息: 每次发送消息都强制获取位置 (
wx.getLocation)。如果用户在室内 GPS 信号弱,会导致发送延迟或失败吗?- 建议: 位置获取改为异步或非阻塞,或者允许用户在设置中关闭“发送位置”功能,除非这是核心考勤业务必须的。
- 位置信息: 每次发送消息都强制获取位置 (
2. 后端开发 (Backend) 评审
观点: 代码结构尚可,但配置管理和数据一致性存在风险。
-
配置管理:
- 硬编码 URL: API 地址
https://wx-xcx-check.blv-oa.com:4433直接写死在chat.js中。- 风险: 切换测试/生产环境非常麻烦。
- 建议: 提取到单独的
config.js文件中,根据wx.getAccountInfoSync().miniProgram.envVersion自动切换环境。
- 硬编码 URL: API 地址
-
数据一致性与分页:
- 分页逻辑脆弱: 前端计算页码的逻辑是
Math.floor(oldli.length / 20) + 1。- 风险: 如果在用户浏览期间,有新消息产生(或者删除了消息),基于数量的分页会导致数据重复或遗漏。
- 建议: 建议改为基于
last_id(游标分页) 或时间戳分页,这样更稳定。
- 时间格式化: 前端自己处理
formatTime并替换T为空格。建议后端直接返回标准格式,或者前端使用dayjs等库统一处理,避免手动字符串操作带来的潜在 Bug。
- 分页逻辑脆弱: 前端计算页码的逻辑是
-
网络层:
- 乐观更新风险:
qsendText中先pushMsg(渲染) 再upload(上传)。- 风险: 如果
upload失败(断网、服务器错误),用户界面上显示消息已发送,但实际上服务器没收到。 - 建议: 消息对象应增加
status字段 (sending,success,failed)。发送失败应显示红色感叹号,并支持点击重发。
- 风险: 如果
- 乐观更新风险:
3. 测试工程师 (QA) 评审
观点: 异常处理覆盖不足,存在边界情况 Bug。
-
语音功能边界测试:
- 中断测试: 在录音过程中,如果接到来电、闹钟响铃或切出小程序,
manager.onStop是否会正常触发?目前onUnload做了停止,但onHide(切后台) 似乎没有处理,可能导致后台继续录音或状态卡死。 - 短语音: 代码中
cost < 350毫秒会被丢弃。这个阈值是否合理?用户快速点击可能会被误判为录音失败。建议给用户一个 "说话时间太短" 的 Toast 提示(目前代码里有onError处理-30003,但手动停止的逻辑里直接 return 了,没有提示)。
- 中断测试: 在录音过程中,如果接到来电、闹钟响铃或切出小程序,
-
权限流程:
- 拒绝后重试:
authorize.js封装得不错。但如果用户在系统层面(手机设置)关闭了微信的麦克风权限,wx.authorize会直接失败。需要确保fail回调里的引导文案足够清晰。
- 拒绝后重试:
-
兼容性:
- 屏幕适配:
GetmyScrollhight使用了boundingClientRect。在不同机型(特别是带刘海屏/灵动岛的 iPhone)上,底部安全区 (safe-area-inset-bottom) 是否处理得当?建议检查 CSS 中是否有padding-bottom: env(safe-area-inset-bottom)。
- 屏幕适配:
4. 迭代计划 (Action Items)
优先级 P0 (必须修复)
- [Dev] 提取 API URL 到配置文件。
- [Dev] 修复“乐观更新”问题:添加消息发送状态(发送中/失败),并在上传失败时给予用户反馈。
- [Dev] 处理
onHide生命周期,确保切后台时停止录音。
优先级 P1 (建议优化)
- [UX] 优化语音录制的 UI 反馈(上滑取消的视觉提示)。
- [Dev] 优化分页逻辑,由后端支持或前端改为更稳健的游标方式。
- [QA] 进行弱网环境下的发送测试,验证位置获取超时对发送的影响。
优先级 P2 (未来规划)
- [Feature] 增加语音转文字后的“编辑”功能(目前是识别完直接发送,用户无法修改错别字)。
- [Feature] 消息撤回功能。