# 健康应用需求记录文档 > 本文档记录了项目开发过程中用户提出的所有需求和功能相关提示词,按时间顺序整理。 --- ## 一、平台兼容性需求 ### 1.1 RN 转 Web 开发 > 当前的 APP 使用了 rn 进行开发,但是目前无法接上真机设备,需要把 rn 先转成 react h5 进行开发,后续再转到设备 **解决方案**:使用 Expo Web (`expo start --web`) 在浏览器中运行 React Native 应用 ### 1.2 Web 端兼容问题 > expo start --web 好像在浏览器上有些兼容问题,比如当前 rn APP 的登录页,错误弹窗一直无法显示 **解决方案**:创建自定义 `AlertProvider` 组件,使用 `react-native-paper` 的 `Snackbar` 和 `Dialog` 替代原生 `Alert` --- ## 二、API 接口对接需求 ### 2.1 真实接口对接 > 下面继续完成真实接口的对接,首先是对话记录的管理,和"我的"页面上未完成的功能,很多数据都没有接入真实数据 ### 2.2 统一响应格式 > 要和后端约定一个统一的响应格式,这个响应格式不匹配问题已经出现了两次,第一次是 token 获取不到 **解决方案**: - 创建统一的 `ApiResponse` 类型 - 处理 `snake_case`(后端)与 `camelCase`(前端)的命名转换 --- ## 三、对话功能需求 ### 3.1 历史对话持久化 > 历史对话,每次刷新页面都会丢失 > 还是没有,使用后端存储,这样可以避免本地存储的兼容问题 **解决方案**:移除本地缓存,完全依赖后端存储对话记录 ### 3.2 对话删除功能 > 历史对话里的删除功能,点击无响应,应该是先要弹出确认弹窗,然后执行记录删除 > 点击删除,记录弹窗不关闭,确认弹窗被遮挡 **解决方案**:使用 `setTimeout` 在关闭记录弹窗后再显示确认弹窗 ### 3.3 问答页面 UI 调整 > 问答页面的 新建悬浮窗 移除,右上的历史按钮 改成 "对话管理" **修改内容**: - 移除右下角 "新建对话" FAB 悬浮按钮 - 右上角按钮文字从 "历史" 改为 "对话管理" - 弹窗标题从 "历史对话" 改为 "对话管理" --- ## 四、用户中心需求 ### 4.1 用户信息编辑 > 我的 页面,用户信息编辑功能点击无效 > 点击保存显示失败,你应该测试完功能再交付 **解决方案**: - 实现 `handleOpenEdit` 和 `handleSaveProfile` 方法 - 修复 `authStore.updateProfile` 处理后端返回 `data: null` 的情况 ### 4.2 首页欢迎语 > 首页欢迎词语,现在显示的是健康达人,应该显示的是用户的昵称 **解决方案**:修改 `HomeScreen.tsx`,动态显示 `user?.nickname` --- ## 五、健康档案需求 ### 5.1 健康档案编辑功能 > 我的->健康档案里的信息只有显示,没有编辑功能,在上一个测试文件中添加健康档案的功能测试,并且添加编辑功能 **实现内容**: - 基础信息编辑(9 个字段) - 生活习惯编辑(10 个字段) - 病史记录添加 - 家族病史添加 - 过敏记录添加 ### 5.2 健康档案保存问题 > 健康档案测试->每一项可填写或可选择内容都需要进行相关测试,特别是基础信息填写,并且填写保存后查看是否正确保存,现在有些功能并不能正确保存 **问题根因**: 1. 后端返回嵌套结构,前端解析错误 2. 字段命名不一致(`medical_history` vs `medical_histories`) 3. 后端添加操作返回 `data: null`,前端判断失败 **解决方案**:修复 `healthStore.ts` 的数据解析和成功判断逻辑 ### 5.3 病史记录删除 > 健康档案里的病史记录,长按删除显示失败,修复后添加到测试 **问题根因**:GORM 的 `ID` 字段没有 `json` 标签,序列化为大写 `ID`,前端获取不到正确的 id **解决方案**:修改后端模型,显式定义 `ID` 字段并添加 `json:"id"` 标签 --- ## 六、体质分析需求 ### 6.1 体质结果显示问题 > 体质页面,显示已完成体测,但是体质判断结果没显示,点击计入也是白屏,请测试并修复 **问题根因**: - `constitutionDescriptions[result.primaryType]` 访问 undefined - 问题选项格式转换错误 - 后端返回数据结构与前端期望不匹配 **解决方案**: - 添加防御性检查 - 修复数据格式转换 - 完善 `submitAnswers` 和 `fetchResult` 的数据处理 --- ## 七、自动化测试需求 ### 7.1 引入自动化测试 > 还是不行,你应该可以自己进行测试,使用 PLAYWRIGHT MCP,而不是让我重复测试 ### 7.2 体质分析测试 > 建立测试脚本,进行体质分析功能的测试 ### 7.3 保留测试脚本 > 测试脚本不要删除,整理出一个测试脚本使用文档 ### 7.4 "我的"页面测试 > 编写测试脚本,对 "我的" 页面上的功能进行完成测试,有错误或者未完成的,进行修复。完成测试和修复,整理测试使用文档 ### 7.5 健康档案完整测试 > 脚本需要先进行健康档案的测试,再到用药和治疗记录 > 1.在我的观测中,简况管理测试后的测试界面一直卡在图片这里闪烁,2,健康管理测试,只是测试了页面上的卡片是否存在,没有测试具体编辑和保存功能,添加具体功能测试 **测试脚本**: - `tests/constitution.test.js` - 体质分析测试 - `tests/profile.test.js` - "我的"页面测试 - `tests/health-profile-complete.test.js` - 健康档案完整测试 --- ## 八、开发规范需求 ### 8.1 前端自动化测试规范 > 前端进行功能更新和修改后,使用 PLAYWRIGHT MCP 进行自动化测试 **已添加到 AGENTS.md 开发规范** --- ## 需求统计 | 类别 | 数量 | | ---------- | ------ | | 平台兼容性 | 2 | | API 接口 | 2 | | 对话功能 | 3 | | 用户中心 | 2 | | 健康档案 | 3 | | 体质分析 | 1 | | 自动化测试 | 5 | | 开发规范 | 1 | | **总计** | **19** | --- ## 附:原始需求记录(按时间顺序) 1. 当前的 APP 使用了 rn 进行开发,但是目前无法接上真机设备,需要把 rn 先转成 react h5 进行开发,后续再转到设备 2. expo start --web 好像在浏览器上有些兼容问题,比如当前 rn APP 的登录页,错误弹窗一直无法显示 3. 弹窗已经显示,可以继续使用这种方式 4. 下面继续完成真实接口的对接,首先是对话记录的管理,和"我的"页面上未完成的功能,很多数据都没有接入真实数据 5. 历史对话,每次刷新页面都会丢失 6. 还是没有,使用后端存储,这样可以避免本地存储的兼容问题 7. 还是没有历史对话 8. 要和后端约定一个统一的响应格式,这个响应格式不匹配问题已经出现了两次,第一次是 token 获取不到 9. 历史对话里的删除功能,点击无响应,应该是先要弹出确认弹窗,然后执行记录删除 10. 点击删除,记录弹窗不关闭,确认弹窗被遮挡 11. 还是不行,你应该可以自己进行测试,使用 PLAYWRIGHT MCP,而不是让我重复测试 12. 我的 页面,用户信息编辑功能点击无效 13. 点击保存显示失败,你应该测试完功能再交付 14. 首页欢迎词语,现在显示的是健康达人,应该显示的是用户的昵称 15. 建立测试脚本,进行体质分析功能的测试 16. http://localhost:8081/ 当前访问项目为白屏 17. 体质页面,显示已完成体测,但是体质判断结果没显示,点击计入也是白屏,请测试并修复 18. 测试脚本不要删除,整理出一个测试脚本使用文档 19. 编写测试脚本,对 "我的" 页面上的功能进行完成测试,有错误或者未完成的,进行修复。完成测试和修复,整理测试使用文档 20. 我的->健康档案里的信息只有显示,没有编辑功能,在上一个测试文件中添加健康档案的功能测试,并且添加编辑功能 21. 脚本需要先进行健康档案的测试,再到用药和治疗记录 22. 在我的观测中,简况管理测试后的测试界面一直卡在图片这里闪烁;健康管理测试只是测试了页面上的卡片是否存在,没有测试具体编辑和保存功能,添加具体功能测试 23. 健康档案测试->每一项可填写或可选择内容都需要进行相关测试,特别是基础信息填写,并且填写保存后查看是否正确保存,现在有些功能并不能正确保存 24. 问答页面的 新建悬浮窗 移除,右上的历史按钮 改成 "对话管理" 25. 健康档案里的病史记录,长按删除显示失败,修复后添加到测试 --- _文档最后更新:2026-02-02_