This commit is contained in:
yumoqing 2025-11-19 10:44:49 +08:00
parent 9e8ea7ba15
commit 2c82a71cb8
3 changed files with 307 additions and 0 deletions

75
docs/ai/audio.md Normal file
View File

@ -0,0 +1,75 @@
以下是根据你提供的源码,为其中定义的三个控件编写的符合要求的 **Markdown 格式控件文档**。每个控件均按照“一级标题为控件名称”、“包含控件功能、类型、父类”,以及“二级标题:初始化参数、主要事件”的格式编写。
---
# AudioPlayer
**控件功能**:用于播放音频文件,支持本地 URL 或流式加载,具备播放、暂停、自动播放、播放队列和状态检测等功能。
**类型**:普通控件
**父类控件**`bricks.JsWidget`
## 初始化参数
| 参数名 | 类型 | 说明 |
|----------|--------|------|
| `url` | String | 音频资源的 URL 地址,可选。构造时传入则立即加载。 |
| `autoplay`| Boolean| 是否在音频可播放后自动开始播放,默认为 `false`。 |
## 主要事件
| 事件名 | 触发条件 |
|--------|---------|
| `ended` | 当前音频播放结束且播放列表为空时触发。 |
---
# AudioRecorder
**控件功能**:实现音频录制功能,基于浏览器麦克风权限进行 WAV 格式录音,提供开始/停止录音、实时时间显示、录音上传和下载功能。依赖第三方库 Recorder.jsWAV 格式)。
**类型**:容器控件(继承自 HBox包含按钮与文本
**父类控件**`bricks.HBox`
## 初始化参数
| 参数名 | 类型 | 说明 |
|-------------|--------|------|
| `upload_url` | String | 录音结束后自动上传的目标 URL 地址,可选。 |
| `start_icon` | String | 开始录音按钮显示的 SVG 图标路径,默认使用内置资源。 |
| `stop_icon` | String | 停止录音按钮显示的 SVG 图标路径,默认使用内置资源。 |
| `icon_rate` | Number | SVG 图标缩放比例,传递给内部 `Svg` 控件。 |
## 主要事件
| 事件名 | 触发条件 |
|----------------|---------|
| `record_started` | 用户点击开始录音,麦克风授权成功后触发。 |
| `record_ended` | 用户停止录音,生成 blob 数据后触发,携带 `{data, url, duration}` 参数。 |
| `uploaded` | 成功上传录音文件到服务器后触发,携带服务器返回结果。 |
> ⚠️ 注意:需引入外部库 [Recorder.js](https://gitee.com/xiangyuecn/Recorder) 支持录音功能。
---
# TextedAudioPlayer
**控件功能**:结合音频播放与文本展示的复合控件,适用于语音朗读+字幕同步场景。支持从流式响应中逐段加载音频与对应文本,并自动顺序播放。
**类型**:容器控件(垂直布局 VBox
**父类控件**`bricks.VBox`
## 初始化参数
无独立初始化参数,内部自动创建子控件:
- `AudioPlayer` 实例用于播放音频。
- `Text` 实例用于显示对应文本内容。
- `VScrollPanel` 提供文本区域滚动能力。
## 主要事件
无直接对外暴露的自定义事件。其行为由内部 `AudioPlayer``ended` 事件驱动,自动调用 `playnext()` 播放下一段内容。
> 内部通过 `set_stream_urls(response)` 接收流式 JSON 数据,每项应包含 `audio`Base64 编码音频)、`text`(对应文字)、`done`(是否结束)字段。
---
> ✅ 所有控件均已通过 `bricks.Factory.register` 注册,可在模板或配置中通过字符串名称实例化。

122
docs/ai/form.md Normal file
View File

@ -0,0 +1,122 @@
以下是根据你提供的源码中定义的控件,按照要求编写的 **Markdown 格式控件文档**。每个控件均以一级标题命名,并包含其功能、类型、父类,以及“初始化参数”和“主要事件”两个二级标题。
---
# InlineForm
**控件功能**:用于在行内嵌入一个可提交的表单,支持字段输入、验证及工具栏操作(提交、重置、取消)。适用于需要轻量级表单嵌入的场景。
**类型**:普通控件
**父类控件**`bricks.FormBase`
## 初始化参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `fields` | Array | 表单字段配置数组,每个字段对象包含 name、label、uitype 等信息。 |
| `height` | String | 可选,默认为 `"100%"`,设置控件高度。 |
| `width` | String | 可选,默认为 `"100%"`,设置控件宽度。 |
| `overflow` | String | 可选,默认为 `"auto"`,控制内容溢出时的显示方式。 |
> 注意:所有选项通过 `opts` 传入构造函数。
## 主要事件
| 事件名 | 触发条件 | 回调参数 |
|--------|----------|---------|
| `submit(data)` | 用户点击“提交”按钮后,数据通过校验时触发。 | `data`: FormData 对象或普通对象,包含表单数据。 |
| `submited(resp)` | 提交请求完成后(无论成功或失败)触发。 | `resp`: 响应对象,可通过 `await resp.json()` 获取返回内容。 |
| `cancel` | 用户点击“取消”按钮时触发。 | 无参数。 |
| `reset` | 用户点击“重置”按钮时触发。 | 无参数。 |
| 自定义命令事件 | 当工具栏添加了自定义按钮且设置了 `action` 或名称时触发。 | `event.params` 包含按钮信息。 |
---
# Form
**控件功能**:完整的表单容器控件,支持标题、描述、多字段布局、文本与非文本字段分离、自动构建工具栏,并可配置提交 URL 和方法。适合独立页面或弹窗中的完整表单使用。
**类型**:容器控件
**父类控件**`bricks.FormBase`
## 初始化参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `title` | String | 可选,表单标题,显示为大号文字。 |
| `description` | String | 可选,表单描述信息,显示在标题下方。 |
| `fields` | Array | 必填,字段配置列表,结构同 InlineForm。 |
| `submit_url` | String | 可选,表单提交的目标 URL若提供则自动发起 HTTP 请求。 |
| `method` | String | 可选HTTP 方法,默认为 `'POST'`。 |
| `notoolbar` | Boolean | 可选,默认 `false`,是否隐藏默认工具栏(提交/重置/取消)。 |
| `toolbar` | Object | 可选,扩展或替换默认工具栏配置。结构 `{ tools: [...] }`。 |
| `input_layout` | String | 可选,输入框布局方式,支持 `"VBox"`(垂直)或 `"HBox"`(水平),默认 `"VBox"`。 |
| `dataurl` | String | (预留)可能用于加载初始数据的接口地址(当前未直接使用)。 |
## 主要事件
| 事件名 | 触发条件 | 回调参数 |
|--------|----------|---------|
| `submit(data)` | 表单提交前,验证通过后触发。可用于拦截或预处理数据。 | `data`: 提交的数据对象或 FormData。 |
| `submited(resp)` | 向 `submit_url` 发送请求完成后触发。 | `resp`: Response 对象,可用于处理响应结果。 |
| `cancel` | 用户点击“取消”按钮时触发。 | 无参数。 |
| `reset` | 用户点击“重置”按钮时触发。 | 无参数。 |
| 自定义事件 | 工具栏中自定义按钮被点击且定义了 `action` 或事件名时触发。 | `event.params` 包含按钮元数据。 |
---
# FormBody
**控件功能**`Form` 内部使用的主体内容区域,负责渲染所有非文本字段(通过 `FieldGroup`)和文本字段(只读展示),是实际输入区域的承载容器。
**类型**:容器控件
**父类控件**`bricks.VScrollPanel`
## 初始化参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `form` | Object | 所属的表单实例用于访问字段定义、name_inputs 等状态。 |
| `opts` | Object | 配置项,会自动设置 `width: '100%'`, `height: '100%'`。 |
> 注:此控件通常不由开发者直接创建,而是由 `Form` 构造过程中内部实例化。
## 主要事件
该控件本身不对外派发事件,但作为容器继承了 `VScrollPanel` 的滚动相关能力,主要用于视觉呈现。
- 不主动触发业务事件。
- 其子控件(如输入框)的变化会影响父级 `Form` 的状态。
---
# FieldGroup
**控件功能**:辅助类,用于递归构建表单中的字段组(支持嵌套 group 结构将字段按布局规则组织成动态列DynamicColumn和输入框容器VBox/HBox
**类型**:普通控件(逻辑组件)
**父类控件**:无(基础类)
## 初始化参数
| 参数名 | 类型 | 说明 |
|--------|------|------|
| `opts` | Object | 目前未实际使用,保留扩展性。 |
> 注:该类不是 UI 控件,不直接渲染 DOM仅作为构建逻辑模块存在。
## 主要事件
该类无事件机制,仅为同步方法调用服务:
- `build_fields(form, parent, fields)`:核心方法,递归生成字段 UI 并挂载到指定父容器。
---
> ✅ **说明总结**
>
> - `InlineForm``Form` 是用户可直接使用的表单控件;
> - `FormBody``FieldGroup` 是内部实现组件,一般无需单独文档化使用;
> - 所有表单控件共享统一的数据收集、验证和提交流程;
> - 支持文件类字段file/audio/video自动识别需使用 `FormData`
> - 工具栏支持高度定制化扩展。
---
如需进一步生成 API 文档或导出 JSON Schema 模板,请告知。

110
docs/ai/recorder.md Normal file
View File

@ -0,0 +1,110 @@
```markdown
# SysCamera
**控件功能**: 用于通过系统摄像头拍摄静态照片,支持实时预览并可在拍照后将图片以 `data URL``File` 对象形式返回。
**类型**: 普通控件
**父类控件**: `bricks.SysVideoRecorder`
## 初始化参数
- 无显式自定义初始化参数(继承自父类 `MediaRecorder`)。
- 实际使用时需在创建实例时传入 `widgetid` 等可能被父类使用的选项(但本类未直接使用)。
## 主要事件
- **`shot`**
触发时机:用户点击录制按钮进行拍照后触发。
回调数据:
```js
{
url: string, // 图片的 data URL可用于 `<img>` 显示
file: File // 文件对象,可用于上传或保存
}
```
---
# WidgetRecorder
**控件功能**: 录制页面中指定 widget`<video>``<audio>` 元素)的媒体流内容,支持音频或视频录制。
**类型**: 普通控件
**父类控件**: `bricks.MediaRecorder`
## 初始化参数
- `widgetid` *(String)*: 要录制的 widget 的唯一标识 ID用于通过 `bricks.getWidgetById()` 获取对应 DOM 元素。
## 主要事件
- **`record_started`**
触发时机:开始录制时触发。
回调数据:无。
- **`record_end`**
触发时机:正常停止录制后触发。
回调数据:
```js
{
url: string, // 媒体文件的 object URL可用于播放
file: File // 生成的文件对象wav 音频或 mp4 视频)
}
```
---
# SysAudioRecorder
**控件功能**: 使用系统麦克风录制音频,支持将 WebM 格式音频自动转换为 WAV 格式输出,适用于需要高质量音频采集的场景。
**类型**: 普通控件
**父类控件**: `bricks.MediaRecorder`
## 初始化参数
- 无额外初始化参数,所有配置由内部逻辑设定。
## 主要事件
- **`record_started`**
触发时机:麦克风开启并开始录音时触发。
回调数据:无。
- **`record_end`**
触发时机:录音正常结束且完成格式转换后触发。
回调数据:
```js
{
url: string, // 转换后的 WAV 文件的 object URL
file: File // WAV 格式的 File 对象(便于上传或处理)
}
```
---
# SysVideoRecorder
**控件功能**: 使用系统摄像头和麦克风录制音视频,支持实时视频预览,并在录制结束后输出 MP4 视频文件。
**类型**: 普通控件
**父类控件**: `bricks.MediaRecorder`
## 初始化参数
- 无额外初始化参数,使用默认媒体设备权限请求(包含音视频)。
## 主要事件
- **`record_started`**
触发时机:成功获取摄像头/麦克风流并启动录制时触发。
回调数据:无。
- **`record_end`**
触发时机:录制停止并生成视频文件后触发。
回调数据:
```js
{
url: string, // 视频文件的 object URL
file: File // MP4 格式的 File 对象
}
```
---
```