初始化项目
This commit is contained in:
76
CommunicationRecords/项目评审会议记录.md
Normal file
76
CommunicationRecords/项目评审会议记录.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# 项目评审会议记录 (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]** 消息撤回功能。
|
||||
Reference in New Issue
Block a user