feat(ai): 修改模式自动锁定目标区域 + SystemPrompt模式语义强化

- handleAIGenerate开头增加自动修正目标区域逻辑:修改模式开启且未选区域时,自动选择文档中第一个AI区域
- systemPrompt明确标注'当前处于【修改模式】/【对话模式】',并细化字段要求
- diffModal的targetId改为使用actualTargetId,确保确认注入时使用实际修正后的区域ID
This commit is contained in:
2026-04-19 04:02:05 +08:00
parent c1d2438d2b
commit 9f73d8595c
5 changed files with 203 additions and 4 deletions

View File

@@ -0,0 +1,29 @@
# 需求分析
## 时间戳
2026-04-19 03:59
## 需求来源
用户希望 AI 辅助撰写功能实现两个明确的场景:
- **场景 A修改模式**:勾选「允许修改正文」→ AI 自动修改当前选定的 AI 可编辑区域 → 弹出 diff 对比弹窗(左侧原稿、右侧可二次编辑的 AI 稿)→ 用户可确认或放弃
- **场景 B纯对话模式**:取消勾选「允许修改正文」→ AI 只回复聊天内容,不修改编辑器
## 当前状态评估
从上一次修改后,当前代码已基本实现两个场景的核心逻辑:
1. `systemPrompt` 条件为 `aiModifyEnabled`(已解绑 targetRegionEl
2. 接收逻辑为 `if (responseJson.updatedHtml && aiModifyEnabled)`,然后分支判断 targetRegionEl
3. `diffModal` 已实现左右分栏:左侧原稿只读,右侧 AI 稿可编辑contentEditable
## 剩余问题
### 问题 1修改模式开启但未选区域时AI 找不到修改目标
`aiTargetRegion` 默认值为 `'none'`。用户勾选「允许修改正文」后,如果未在下拉框中手动选择具体区域,`targetRegionEl``null`prompt 中不会包含目标区域源码,导致 AI 虽然返回了 `updatedHtml`,但可能不是用户期望的修改位置。
### 问题 2systemPrompt 文案可进一步优化
当前 systemPrompt 对修改模式和纯对话模式的区分可以更加明确,让大模型更清楚知道是否应该生成 HTML。
## 约束条件
- 自动修正目标区域时,若下拉框原本为 `'none'`,应同步更新 UI 状态(`setAiTargetRegion`
- `diffModal``targetId` 应使用实际修正后的区域 ID
- 保持现有 diff 弹窗交互不变(左原稿右可编辑稿)