Files
015/openspec/specs/webhook-body-field/spec.md

38 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# webhook-body-field Specification
## Purpose
TBD - created by archiving change add-webhook-body-and-fix-curl-import. Update Purpose after archive.
## Requirements
### Requirement: Webhook body 字段可在 UI 中配置
系统 SHALL 在 Webhook 高级设置面板中暴露一个 `body` textarea允许用户为每条 Webhook 条目输入原始请求体字符串。
#### Scenario: 用户输入 body 文本
- **WHEN** 用户展开某条 Webhook 的高级面板并在 body textarea 中输入文本
- **THEN** body 值以 `notify_webhooks[n].body` 的路径存储到表单中
#### Scenario: body 字段默认为空
- **WHEN** 用户通过"添加"按钮新增一条 Webhook 条目
- **THEN** `body` 默认值为空字符串
---
### Requirement: curl 导入自动填充 method、headers 和 body
系统 SHALL 解析粘贴到 Webhook URL 字段的 `curl` 命令,并自动将解析结果中的 `url``method``headers``body` 填入表单,同时展开高级面板。
#### Scenario: 将包含 headers 的有效 curl 命令粘贴到 URL 字段
- **WHEN** 用户在 URL 输入框中粘贴以 `curl ` 开头的字符串,且字段失去焦点
- **THEN** `url` 被设置为 `data.url.fullUrl``method` 被设置为 `data.method`(大写),`headers` 被转换为 `[string, string][]` 键值对数组,对应 Webhook 条目的高级面板被展开
#### Scenario: curl 命令包含 body
- **WHEN** 解析后的 curl 结果中包含非空的 `body` 字段
- **THEN** `body` 被写入 `notify_webhooks[n].body`
#### Scenario: curl 命令不包含 body如 GET 请求)
- **WHEN** 解析后的 curl 结果中没有 `body` 字段或其值为空
- **THEN** `notify_webhooks[n].body` 保持为空字符串(不被 undefined 覆盖)
#### Scenario: 解析失败或输入不是 curl 命令
- **WHEN** URL 字段值不以 `curl ` 开头,或 `parseCurl` 返回 `success: false`
- **THEN** 表单中所有字段保持不变