# 更新日志

## v0.1.0 (2026-05-19)

### 新增功能

#### 1. Ref 调用模拟用户发送消息

**文件变更**:
- `src/YtChatView/previewDialogV2/index.jsx`
- `src/YtChatView/previewDialogV3/index.jsx`

**变更内容**:
- ToolDialogV2/ToolDialogV3 组件新增 `sendUserMessage(message)` 公共方法
- 支持通过 React ref 调用，模拟用户主动发送消息

**使用示例**:
```jsx
const toolDialogRef = useRef();

// 渲染组件
<ToolDialogV2 ref={toolDialogRef} ... />

// 调用方法模拟发送消息
toolDialogRef.current?.sendUserMessage("帮我查一下成绩");
// 返回值: true-发送成功, false-未就绪或AI正在回复中
```

---

#### 2. 预置消息自动发送 (presetMessage)

**文件变更**:
- `src/YtChatView/chatWidget/chatWindow/index.tsx`
- `src/YtChatView/chatWidget/index.tsx`
- `src/YtChatView/previewDialogV2/index.jsx`
- `src/YtChatView/previewDialogV3/index.jsx`
- `src/index.tsx` (自定义元素 prop 声明)

**变更内容**:
- 新增 `presetMessage` 属性，组件加载完成后**以用户口吻**自动发送预置对话
- **解决时序问题**: 将消息发送逻辑移入 `fetchChatHistory()` 函数末尾，确保所有历史消息和引导节点渲染完成后才发送，避免被 `clearMessage()` 意外清空
- 同时支持 Web Component 自定义元素属性：`preset-message="..."`

**使用示例**:

**React 组件**:
```jsx
<ToolDialogV2 
  presetMessage="帮我介绍一下学校的历史"
  appId="xxx" 
  hostUrl="xxx"
/>
```

**Web Component (HTML)**:
```html
<yt-page-chat-v2 
  preset-message="帮我介绍一下学校的历史"
  app-id="xxx"
  host-url="xxx"
></yt-page-chat-v2>
```

---

#### 3. 智能体动态 Prompt (sessionContext)

**文件变更**:
- `src/YtChatView/chatWidget/chatWindow/controllers/index.ts`
- `src/YtChatView/chatWidget/chatWindow/index.tsx`
- `src/YtChatView/chatWidget/index.tsx`
- `src/YtChatView/previewDialogV2/index.jsx`
- `src/YtChatView/previewDialogV3/index.jsx`
- `src/index.tsx` (自定义元素 prop 声明)

**变更内容**:
- 新增 `sessionContext` 属性，用于给智能体传递预置的动态 Prompt 内容
- 用户发起对话请求时，后端请求参数自动带上 `session_context` 字段
- 支持 Web Component 自定义元素属性：`session-context="..."`

**使用示例**:

**React 组件**:
```jsx
<ToolDialogV2 
  sessionContext="用户问天王盖地虎，只能回答：钻石王老五"
  presetMessage="天王盖地虎"
  appId="xxx" 
  hostUrl="xxx"
/>
```

**Web Component (HTML)**:
```html
<yt-page-chat-v2 
  session-context="用户问天王盖地虎，只能回答：钻石王老五"
  preset-message="天王盖地虎"
  app-id="xxx"
  host-url="xxx"
></yt-page-chat-v2>
```

**请求 payload**:
```javascript
{
  input_value: "天王盖地虎",
  input_type: "chat",
  output_type: "chat",
  session_context: "用户问天王盖地虎，只能回答：钻石王老五",
  session_id: "...",
  // ...
}
```

---

### 影响范围

| 组件 | 新增属性/方法 |
|------|-------------|
| ToolDialogV2 | `presetMessage` / `sessionContext` props / `sendUserMessage()` 方法 |
| ToolDialogV3 | `presetMessage` / `sessionContext` props / `sendUserMessage()` 方法 |
| yt-page-chat-v2 | `preset-message` / `session-context` 属性 |
| yt-page-chat-v3 | `preset-message` / `session-context` 属性 |
