Add automated fix workflow for AI nutritionist page
- Create .fixes/ directory structure for tracking repairs - Add FIX-001 to FIX-009 repair tasks based on Cursor review - Add automation scripts (start-fix.sh, complete-fix.sh) - Update HEARTBEAT.md with repair checklist - Create AUTOMATION_PLAN.md with workflow documentation Fixes address: - Remove fake initial data - Add clear chat button - Split oversized component - Optimize multi-image upload - Fix scroll behavior - Remove dead code - Extract hardcoded config
This commit is contained in:
42
msh_single_uniapp/.fixes/PROGRESS.md
Normal file
42
msh_single_uniapp/.fixes/PROGRESS.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# MSH 前端修复进度追踪
|
||||
|
||||
**最后更新**: 2026-02-28
|
||||
**总任务数**: 9
|
||||
**待处理**: 9
|
||||
**进行中**: 0
|
||||
**已完成**: 0
|
||||
|
||||
---
|
||||
|
||||
## 任务清单
|
||||
|
||||
### 高优先级
|
||||
- [ ] FIX-001: 移除初始假数据
|
||||
- [ ] FIX-002: 添加清空对话按钮
|
||||
- [ ] FIX-003: 拆分单文件组件
|
||||
|
||||
### 中优先级
|
||||
- [ ] FIX-004: 多图合并为一轮对话
|
||||
- [ ] FIX-005: 消息列表使用稳定 key
|
||||
- [ ] FIX-008: 提取硬编码配置
|
||||
|
||||
### 低优先级
|
||||
- [ ] FIX-006: 优化滚动到底部实现
|
||||
- [ ] FIX-007: 删除废弃方法
|
||||
- [ ] FIX-009: H5 语音输入降级优化
|
||||
|
||||
---
|
||||
|
||||
## 完成记录
|
||||
|
||||
| 日期 | 任务ID | 备注 |
|
||||
|------|--------|------|
|
||||
| - | - | 暂无 |
|
||||
|
||||
---
|
||||
|
||||
## 下一步行动
|
||||
|
||||
1. 启动 FIX-001: 移除初始假数据(最简单,低风险)
|
||||
2. 完成后启动 FIX-002: 添加清空对话按钮
|
||||
3. 最后处理 FIX-003: 组件拆分(工作量大)
|
||||
51
msh_single_uniapp/.fixes/backlog/FIX-001-remove-fake-data.md
Normal file
51
msh_single_uniapp/.fixes/backlog/FIX-001-remove-fake-data.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# FIX-001: 移除初始假数据
|
||||
|
||||
**状态**: 待开始
|
||||
**创建时间**: 2026-02-28
|
||||
**优先级**: 高
|
||||
**负责人**: msh-agent
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
当前 `ai-nutritionist.vue` 页面 `data()` 中 `messageList` 数组包含两条写死的示例消息(用户问香蕉、AI回答),用户首次进入会误以为有历史对话记录。
|
||||
|
||||
### 当前行为
|
||||
页面加载后自动显示两条假对话消息。
|
||||
|
||||
### 预期行为
|
||||
首次进入时 `messageList` 为空,仅显示欢迎语(欢迎语固定在模板中)。
|
||||
|
||||
---
|
||||
|
||||
## 修复方案
|
||||
|
||||
**方案A(推荐)**:将 `messageList` 初始值设为空数组 `[]`,保留欢迎语在模板中的展示。
|
||||
|
||||
---
|
||||
|
||||
## 实施步骤
|
||||
|
||||
- [ ] 1. 备份原文件
|
||||
- [ ] 2. 修改 `data()` 中 `messageList: []`
|
||||
- [ ] 3. 本地 H5 测试
|
||||
- [ ] 4. 微信小程序测试
|
||||
- [ ] 5. 提交代码
|
||||
|
||||
---
|
||||
|
||||
## 文件变更
|
||||
|
||||
修改 `pages/tool/ai-nutritionist.vue` 第 115-128 行:
|
||||
|
||||
```javascript
|
||||
// 修改前
|
||||
messageList: [
|
||||
{ role: 'user', content: '我今天想吃香蕉,可以吗?', type: 'text' },
|
||||
{ role: 'ai', content: '香蕉含钾量较高...', type: 'text' }
|
||||
]
|
||||
|
||||
// 修改后
|
||||
messageList: []
|
||||
```
|
||||
@@ -0,0 +1,32 @@
|
||||
# FIX-002: 添加清空对话按钮
|
||||
|
||||
**状态**: 待开始
|
||||
**创建时间**: 2026-02-28
|
||||
**优先级**: 中
|
||||
**负责人**: msh-agent
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
`clearChat()` 方法已实现(清空消息列表和会话ID),但在模板中没有对应的触发按钮,用户无法清空对话。
|
||||
|
||||
### 预期行为
|
||||
在页面顶部导航栏或输入区域提供"清空对话"按钮。
|
||||
|
||||
---
|
||||
|
||||
## 修复方案
|
||||
|
||||
在 `promo-banner` 右侧添加清空按钮图标,绑定 `@click="clearChat"`。
|
||||
|
||||
---
|
||||
|
||||
## 实施步骤
|
||||
|
||||
- [ ] 1. 备份原文件
|
||||
- [ ] 2. 在 `promo-banner` 区域添加清空按钮
|
||||
- [ ] 3. 绑定 `@click="clearChat"`
|
||||
- [ ] 4. 添加样式
|
||||
- [ ] 5. 测试确认对话框
|
||||
- [ ] 6. 多端测试
|
||||
32
msh_single_uniapp/.fixes/backlog/FIX-003-split-components.md
Normal file
32
msh_single_uniapp/.fixes/backlog/FIX-003-split-components.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# FIX-003: 拆分单文件组件
|
||||
|
||||
**状态**: 待开始
|
||||
**创建时间**: 2026-02-28
|
||||
**优先级**: 高
|
||||
**负责人**: msh-agent
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
`ai-nutritionist.vue` 单文件超过 550 行,包含聊天、语音、图片、状态管理等多个功能模块,可维护性差。
|
||||
|
||||
---
|
||||
|
||||
## 修复方案
|
||||
|
||||
拆分为以下组件:
|
||||
- `components/ai-chat/ChatMessage.vue` - 消息气泡
|
||||
- `components/ai-chat/ChatInput.vue` - 输入框
|
||||
- `components/ai-chat/VoiceRecorder.vue` - 语音录制
|
||||
- `components/ai-chat/ImageUploader.vue` - 图片上传
|
||||
|
||||
---
|
||||
|
||||
## 实施步骤
|
||||
|
||||
- [ ] 1. 备份原文件
|
||||
- [ ] 2. 创建 `components/ai-chat/` 目录
|
||||
- [ ] 3. 逐个提取组件
|
||||
- [ ] 4. 在主文件引入组件
|
||||
- [ ] 5. 测试所有功能正常
|
||||
@@ -0,0 +1,18 @@
|
||||
# FIX-004: 多图合并为一轮对话
|
||||
|
||||
**状态**: 待开始
|
||||
**创建时间**: 2026-02-28
|
||||
**优先级**: 中
|
||||
**负责人**: msh-agent
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
当前多图时每张单独一轮 Coze 对话,AI 回复会一条条出现,且无法把"多图+一句说明"作为同一上下文。
|
||||
|
||||
---
|
||||
|
||||
## 修复方案
|
||||
|
||||
若 Coze 支持,一次 `additionalMessages` 里带多条(文本+多图),减少轮次、统一上下文。
|
||||
18
msh_single_uniapp/.fixes/backlog/FIX-005-stable-key.md
Normal file
18
msh_single_uniapp/.fixes/backlog/FIX-005-stable-key.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# FIX-005: 消息列表使用稳定 key
|
||||
|
||||
**状态**: 待开始
|
||||
**创建时间**: 2026-02-28
|
||||
**优先级**: 中
|
||||
**负责人**: msh-agent
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
`:key="index"` 在列表中间增删时可能影响复用与动画,建议改为稳定 id。
|
||||
|
||||
---
|
||||
|
||||
## 修复方案
|
||||
|
||||
为每条消息生成唯一 id(如 uuid 或服务端 id),用 `:key="msg.id"`。
|
||||
18
msh_single_uniapp/.fixes/backlog/FIX-006-scroll-optimize.md
Normal file
18
msh_single_uniapp/.fixes/backlog/FIX-006-scroll-optimize.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# FIX-006: 优化滚动到底部实现
|
||||
|
||||
**状态**: 待开始
|
||||
**创建时间**: 2026-02-28
|
||||
**优先级**: 低
|
||||
**负责人**: msh-agent
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
`scrollToBottom` 使用 99998/99999 magic number,在部分机型上可能不生效。
|
||||
|
||||
---
|
||||
|
||||
## 修复方案
|
||||
|
||||
改为:先设一个很大的数触底,再在 `@scroll` 里记录实际 scrollTop,下次用 `lastScrollTop + 1` 等小步进触发一次滚动。
|
||||
12
msh_single_uniapp/.fixes/backlog/FIX-007-remove-dead-code.md
Normal file
12
msh_single_uniapp/.fixes/backlog/FIX-007-remove-dead-code.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# FIX-007: 删除废弃方法
|
||||
|
||||
**状态**: 待开始
|
||||
**创建时间**: 2026-02-28
|
||||
**优先级**: 低
|
||||
**负责人**: msh-agent
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
`sendImageMessage` 方法注释"已废弃,逻辑合并到 sendMessage",建议删除该方法,避免误导。
|
||||
26
msh_single_uniapp/.fixes/backlog/FIX-008-extract-config.md
Normal file
26
msh_single_uniapp/.fixes/backlog/FIX-008-extract-config.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# FIX-008: 提取硬编码配置
|
||||
|
||||
**状态**: 待开始
|
||||
**创建时间**: 2026-02-28
|
||||
**优先级**: 中
|
||||
**负责人**: msh-agent
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
`botId`、轮询次数(60/30)、轮询间隔(1000/2000)、最大录音 60s 等硬编码,建议提到 `data` 或单独 config。
|
||||
|
||||
---
|
||||
|
||||
## 修复方案
|
||||
|
||||
创建配置对象集中管理:
|
||||
```javascript
|
||||
const CHAT_CONFIG = {
|
||||
botId: '7591133240535449654',
|
||||
maxPollAttempts: 60,
|
||||
pollInterval: 1000,
|
||||
maxRecordDuration: 60
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,18 @@
|
||||
# FIX-009: H5 语音输入降级优化
|
||||
|
||||
**状态**: 待开始
|
||||
**创建时间**: 2026-02-28
|
||||
**优先级**: 低
|
||||
**负责人**: msh-agent
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
H5 环境仅提示"暂不支持语音输入",可考虑集成 Web Speech API 作为降级方案。
|
||||
|
||||
---
|
||||
|
||||
## 修复方案
|
||||
|
||||
使用 Web Speech API (webkitSpeechRecognition) 作为 H5 环境的语音输入方案。
|
||||
33
msh_single_uniapp/.fixes/scripts/complete-fix.sh
Executable file
33
msh_single_uniapp/.fixes/scripts/complete-fix.sh
Executable file
@@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
# 完成修复任务脚本
|
||||
|
||||
FIX_ID=$1
|
||||
if [ -z "$FIX_ID" ]; then
|
||||
echo "Usage: complete-fix.sh FIX-XXX"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查任务是否在进行中
|
||||
if [ ! -d ".fixes/in-progress/$FIX_ID" ]; then
|
||||
echo "❌ 任务 $FIX_ID 不在 in-progress 中"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 更新状态
|
||||
sed -i '' 's/状态.*$/状态: 已完成/' ".fixes/in-progress/$FIX_ID/README.md"
|
||||
sed -i '' "s/完成时间.*$/完成时间: $(date +%Y-%m-%d)/" ".fixes/in-progress/$FIX_ID/README.md"
|
||||
|
||||
# 移动到 completed
|
||||
mv ".fixes/in-progress/$FIX_ID" ".fixes/completed/"
|
||||
|
||||
# 更新进度日志
|
||||
echo "$(date +%Y-%m-%d) - $FIX_ID completed" >> .fixes/PROGRESS.md
|
||||
|
||||
# 删除备份文件(确认已完成)
|
||||
if [ -f "pages/tool/ai-nutritionist.vue.backup" ]; then
|
||||
rm "pages/tool/ai-nutritionist.vue.backup"
|
||||
echo "🗑️ 已清理备份文件"
|
||||
fi
|
||||
|
||||
echo "✅ 任务 $FIX_ID 已完成"
|
||||
echo "📁 已移动到 .fixes/completed/$FIX_ID/"
|
||||
37
msh_single_uniapp/.fixes/scripts/start-fix.sh
Executable file
37
msh_single_uniapp/.fixes/scripts/start-fix.sh
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
# 开始修复任务脚本
|
||||
|
||||
FIX_ID=$1
|
||||
if [ -z "$FIX_ID" ]; then
|
||||
echo "Usage: start-fix.sh FIX-XXX"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查任务是否存在
|
||||
if [ ! -f ".fixes/backlog/$FIX_ID.md" ]; then
|
||||
echo "❌ 任务 $FIX_ID 不存在于 backlog"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 创建任务工作目录
|
||||
mkdir -p ".fixes/in-progress/$FIX_ID"
|
||||
|
||||
# 复制任务文件
|
||||
cp ".fixes/backlog/$FIX_ID.md" ".fixes/in-progress/$FIX_ID/README.md"
|
||||
|
||||
# 更新状态
|
||||
sed -i '' 's/状态.*$/状态: 进行中/' ".fixes/in-progress/$FIX_ID/README.md"
|
||||
|
||||
# 备份原文件
|
||||
if [ -f "pages/tool/ai-nutritionist.vue" ]; then
|
||||
cp pages/tool/ai-nutritionist.vue "pages/tool/ai-nutritionist.vue.backup"
|
||||
echo "✅ 已备份原文件"
|
||||
fi
|
||||
|
||||
echo "✅ 任务 $FIX_ID 已启动"
|
||||
echo "📁 工作目录: .fixes/in-progress/$FIX_ID/"
|
||||
echo ""
|
||||
echo "下一步:"
|
||||
echo "1. 阅读 .fixes/in-progress/$FIX_ID/README.md"
|
||||
echo "2. 创建测试用例"
|
||||
echo "3. 实施修改"
|
||||
85
msh_single_uniapp/.fixes/templates/FIX_TEMPLATE.md
Normal file
85
msh_single_uniapp/.fixes/templates/FIX_TEMPLATE.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# FIX-XXX: 任务标题
|
||||
|
||||
**状态**: 进行中
|
||||
**创建时间**: YYYY-MM-DD
|
||||
**优先级**: 高/中/低
|
||||
**负责人**: msh-agent
|
||||
|
||||
---
|
||||
|
||||
## 问题描述
|
||||
|
||||
详细描述要修复的问题...
|
||||
|
||||
### 当前行为
|
||||
...
|
||||
|
||||
### 预期行为
|
||||
...
|
||||
|
||||
### 影响范围
|
||||
...
|
||||
|
||||
---
|
||||
|
||||
## 修复方案
|
||||
|
||||
### 方案A(推荐)
|
||||
...
|
||||
|
||||
### 方案B
|
||||
...
|
||||
|
||||
---
|
||||
|
||||
## 实施步骤
|
||||
|
||||
- [ ] 1. 备份原文件
|
||||
- [ ] 2. 创建测试用例
|
||||
- [ ] 3. 实施修改
|
||||
- [ ] 4. 本地测试
|
||||
- [ ] 5. 多端测试(微信小程序/H5/App)
|
||||
- [ ] 6. 代码审查
|
||||
- [ ] 7. 合并到主文件
|
||||
- [ ] 8. 更新文档
|
||||
|
||||
---
|
||||
|
||||
## 文件变更
|
||||
|
||||
### 新增文件
|
||||
- `components/xxx.vue`
|
||||
- `utils/xxx.js`
|
||||
|
||||
### 修改文件
|
||||
- `pages/tool/ai-nutritionist.vue` (行号 X-X)
|
||||
|
||||
---
|
||||
|
||||
## 测试记录
|
||||
|
||||
### 测试环境
|
||||
- 平台: 微信小程序 / H5 / App
|
||||
- 设备: iPhone / Android / 浏览器
|
||||
|
||||
### 测试结果
|
||||
| 测试项 | 结果 | 备注 |
|
||||
|--------|------|------|
|
||||
| 功能测试 | ⬜ | |
|
||||
| 边界测试 | ⬜ | |
|
||||
| 性能测试 | ⬜ | |
|
||||
|
||||
---
|
||||
|
||||
## 回滚计划
|
||||
|
||||
如需回滚:
|
||||
```bash
|
||||
cp pages/tool/ai-nutritionist.vue.backup pages/tool/ai-nutritionist.vue
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 备注
|
||||
|
||||
...
|
||||
Reference in New Issue
Block a user