docs: 澄清卡片已回答显示修复实施计划
This commit is contained in:
@@ -0,0 +1,183 @@
|
||||
# 澄清卡片已回答显示修复实施计划
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** 修复澄清卡片提交后"已回答:xxx"显示英文 value 而非中文 label,以及已回答状态不显示 AI 问题的问题。
|
||||
|
||||
**Architecture:** 在 `ScriptView.vue` 的 `submitClarification` 函数中,通过 value 查找 `card.options` 对应的 label,用 label 显示(`card.answer` 和 `addResultMessage`),后端 payload 仍用 value。在 `card-answered` 模板中显示 AI 的问题(`msg.card?.question`)。
|
||||
|
||||
**Tech Stack:** UniApp Vue 3 `<script setup>` + mp-weixin 编译
|
||||
|
||||
---
|
||||
|
||||
### Task 1: 修改 submitClarification 用 label 显示
|
||||
|
||||
**Files:**
|
||||
- Modify: `mini-program/src/pages/main/ScriptView.vue`
|
||||
- 修改 `submitClarification` 函数(约 line 1746-1764)
|
||||
|
||||
- [ ] **Step 1: 修改 submitClarification**
|
||||
|
||||
打开 `mini-program/src/pages/main/ScriptView.vue`,定位到 `submitClarification` 函数(约 line 1746-1764)。
|
||||
|
||||
替换为:
|
||||
|
||||
```js
|
||||
const submitClarification = (answer) => {
|
||||
if (answeringClarification.value) return
|
||||
// 找最后一张未提交的卡片消息(mp-weixin 模板不支持内联箭头函数传 msg,改为自己查找)
|
||||
const card = [...resultMessages.value].reverse().find(m => m.kind === 'card' && !m.submitted)
|
||||
// 通过 value 查找选项的 label,用于前端显示;后端 payload 仍用 value(语义化)
|
||||
const option = card?.card?.options?.find(opt => opt.value === answer)
|
||||
const label = option?.label || answer
|
||||
if (card) {
|
||||
card.submitted = true
|
||||
card.answer = label // 显示用 label(中文)
|
||||
}
|
||||
addResultMessage({ role: 'user', kind: 'text', content: label })
|
||||
answeringClarification.value = true
|
||||
currentStreamTask.value = followupStream({
|
||||
sessionId: novelSessionId.value,
|
||||
action: 'answer_clarification',
|
||||
payload: { answer }, // 后端仍收 value
|
||||
onEvent: handleShortNovelEvent,
|
||||
onError: (errMsg) => markGenerationFailed(errMsg)
|
||||
})
|
||||
setTimeout(() => { answeringClarification.value = false }, 200)
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 提交**
|
||||
|
||||
```bash
|
||||
git add mini-program/src/pages/main/ScriptView.vue
|
||||
git commit -m "fix: 澄清卡片已回答用 label 显示,后端 payload 仍用 value"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 2: 修改 card-answered 模板显示 AI 的问题
|
||||
|
||||
**Files:**
|
||||
- Modify: `mini-program/src/pages/main/ScriptView.vue`
|
||||
- 修改 `card-answered` 模板(约 line 131-133)
|
||||
- 新增 `.card-question-text` 样式(在 `.card-answered` 样式附近)
|
||||
|
||||
- [ ] **Step 1: 修改 card-answered 模板**
|
||||
|
||||
定位到约 line 131-133:
|
||||
|
||||
```html
|
||||
<view v-else class="card-answered">
|
||||
<text>已回答:{{ msg.answer }}</text>
|
||||
</view>
|
||||
```
|
||||
|
||||
替换为:
|
||||
|
||||
```html
|
||||
<view v-else class="card-answered">
|
||||
<text v-if="msg.card?.question" class="card-question-text">{{ msg.card.question }}</text>
|
||||
<text>已回答:{{ msg.answer }}</text>
|
||||
</view>
|
||||
```
|
||||
|
||||
- [ ] **Step 2: 新增 .card-question-text 样式**
|
||||
|
||||
在 `.card-answered` 样式块附近(用 Grep 找 `.card-answered {` 位置),新增样式:
|
||||
|
||||
```css
|
||||
.card-question-text {
|
||||
color: #ffffff;
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
margin-bottom: 16rpx;
|
||||
line-height: 1.5;
|
||||
display: block;
|
||||
}
|
||||
```
|
||||
|
||||
- [ ] **Step 3: 提交**
|
||||
|
||||
```bash
|
||||
git add mini-program/src/pages/main/ScriptView.vue
|
||||
git commit -m "fix: 已回答状态显示 AI 的问题(question)"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 3: H5 浏览器验证
|
||||
|
||||
**Files:**
|
||||
- Test: `http://localhost:5180` (H5 开发服务器)
|
||||
|
||||
- [ ] **Step 1: 确认 H5 开发服务器运行中**
|
||||
|
||||
```bash
|
||||
python dev-services.py status
|
||||
```
|
||||
|
||||
如未运行:`python dev-services.py start mini-program`
|
||||
|
||||
- [ ] **Step 2: 浏览器打开页面并进入 chat 视图**
|
||||
|
||||
1. 打开 `http://localhost:5180`
|
||||
2. 登录(如未登录,用 123456 验证码)
|
||||
3. 点击「爽文生成」→ 输入内容 → 点击「发送」
|
||||
|
||||
- [ ] **Step 3: 验证澄清卡片提交后的显示**
|
||||
|
||||
等待澄清卡片出现:
|
||||
1. 选择一个选项(如"工作/学习上的事"),点击「提交」
|
||||
2. 确认:
|
||||
- ✅ 澄清卡片位置显示 AI 的问题(如"你想重写今天的什么经历?")
|
||||
- ✅ "已回答:"后面显示中文 label(如"工作/学习上的事"),而非英文 value(如"competition")
|
||||
- ✅ 下方用户气泡显示中文 label(如"工作/学习上的事")
|
||||
|
||||
- [ ] **Step 4: 检查浏览器 Console 无报错**
|
||||
|
||||
打开 DevTools → Console 面板,确认:
|
||||
- ✅ 无新增红色 ERROR(预先存在的 favicon 404、`uni.getRecorderManager not supported` 可忽略)
|
||||
|
||||
---
|
||||
|
||||
### Task 4: mp-weixin 编译验证
|
||||
|
||||
**Files:**
|
||||
- Build: `mini-program/unpackage/dist/build/mp-weixin/`
|
||||
|
||||
- [ ] **Step 1: 执行 mp-weixin 编译**
|
||||
|
||||
```bash
|
||||
cd mini-program
|
||||
npm run build:mp-weixin
|
||||
```
|
||||
|
||||
Expected: 编译成功,无 error 输出。
|
||||
|
||||
- [ ] **Step 2: 提交(如有微调)**
|
||||
|
||||
```bash
|
||||
git add mini-program/src/pages/main/ScriptView.vue
|
||||
git commit -m "style: mp-weixin 编译产物验证通过"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 5: 通知用户在微信开发者工具中验证
|
||||
|
||||
- [ ] **Step 1: 提示用户操作**
|
||||
|
||||
告知用户:
|
||||
|
||||
> mp-weixin 编译产物已更新。请在**微信开发者工具**中:
|
||||
> 1. 打开 `unpackage/dist/build/mp-weixin` 目录
|
||||
> 2. 点击「编译」重新编译
|
||||
> 3. 进入心愿实现页面,发送一条消息
|
||||
> 4. 等待澄清卡片出现,选择一个选项,点击「提交」
|
||||
> 5. 确认:
|
||||
> - 已回答状态显示 AI 的问题(如"你想重写今天的什么经历?")
|
||||
> - "已回答:"后面显示中文 label(如"工作/学习上的事"),而非英文 value
|
||||
> - 用户气泡显示中文 label
|
||||
>
|
||||
> 如有问题,截图反馈。
|
||||
Reference in New Issue
Block a user