Files
Wx_WxCheck_Prod/CommunicationRecords/项目评审会议记录.md
2025-12-11 15:37:54 +08:00

5.1 KiB
Raw Permalink Blame History

项目评审会议记录 (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 自动切换环境。
  • 数据一致性与分页:

    • 分页逻辑脆弱: 前端计算页码的逻辑是 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 (必须修复)

  1. [Dev] 提取 API URL 到配置文件。
  2. [Dev] 修复“乐观更新”问题:添加消息发送状态(发送中/失败),并在上传失败时给予用户反馈。
  3. [Dev] 处理 onHide 生命周期,确保切后台时停止录音。

优先级 P1 (建议优化)

  1. [UX] 优化语音录制的 UI 反馈(上滑取消的视觉提示)。
  2. [Dev] 优化分页逻辑,由后端支持或前端改为更稳健的游标方式。
  3. [QA] 进行弱网环境下的发送测试,验证位置获取超时对发送的影响。

优先级 P2 (未来规划)

  1. [Feature] 增加语音转文字后的“编辑”功能(目前是识别完直接发送,用户无法修改错别字)。
  2. [Feature] 消息撤回功能。