feat(agent-platform): productize bot event route testing

This commit is contained in:
huanghuoguoguo
2026-07-11 10:44:50 +08:00
parent 3c6e87ab49
commit c59616fc89
17 changed files with 1313 additions and 376 deletions
+40 -3
View File
@@ -401,19 +401,53 @@ const enUS = {
discarded: 'Discarded',
failed: 'Failed',
not_matched: 'Not matched',
test_started: 'Testing',
},
routeStatusDetail: {
matched: 'This route matched the event.',
delivered: 'The processor received the event.',
discarded: 'The event was intentionally discarded.',
failed: 'The route could not finish.',
not_matched: 'No configured route matched the event.',
test_started: 'The saved route is running.',
},
routeFailure: {
binding_disabled: 'This route is disabled.',
event_pattern_mismatch: 'The event does not match this route.',
filters_mismatch: 'The sample data does not meet the route conditions.',
lower_priority: 'Another matching route has higher priority.',
route_not_found: 'No route matched this event.',
processor_incompatible:
'The selected processor cannot handle this event.',
processor_not_found: 'The selected processor is unavailable.',
processor_disabled: 'The selected processor is disabled.',
runner_failed: 'The Agent runner failed while processing the event.',
delivery_failed: 'The processor finished, but delivery failed.',
},
routeTestAction: 'Run saved route',
routeTestRunning: 'Running…',
routeTestFailed: 'Failed to run the saved route. Try again later.',
routeTestDispatched:
'The saved route ran successfully. {{count}} platform actions were blocked.',
routeTestSideEffectWarning:
'Running the saved route executes its processor. Platform messaging actions are blocked, but tools and external services may still have side effects.',
dryRunTitle: 'Test event route',
dryRunDescription:
'Choose an event and provide a sample payload to see which processor the current route setup will use.',
'Preview the current form without running a processor, or run the saved route to validate the live configuration.',
dryRunEventType: 'Event type',
dryRunPayload: 'Sample payload JSON',
dryRunSampleReady: 'Sample event is ready',
dryRunSampleDescription:
'LangBot prepared example data for {{event}}. Most route tests can use it as-is.',
dryRunEditPayload: 'Edit advanced data',
dryRunHidePayload: 'Hide advanced data',
dryRunPayload: 'Advanced event data (JSON)',
dryRunPayloadHint:
'Use simple fields such as message_text, chat_type, and chat_id to test conditions.',
dryRunPayloadJsonError: 'Enter valid JSON.',
dryRunPayloadObjectError: 'Payload must be a JSON object.',
dryRunNeedsSavedBot: 'Save the bot before testing routes.',
dryRunFailed: 'Route test failed. Try again later.',
dryRunAction: 'Run test',
dryRunAction: 'Preview route',
dryRunRunning: 'Testing…',
dryRunMatched: 'Route matched',
dryRunNotMatched: 'No route matched',
@@ -423,6 +457,9 @@ const enUS = {
dryRunRuleIndex: 'Route {{index}}',
dryRunNoRule: 'No matched rule',
dryRunDiagnostics: 'Diagnostic steps',
dryRunDiagnosticSelected: '{{route}} was selected.',
dryRunDiagnosticMatched: '{{route}} matched. {{reason}}',
dryRunDiagnosticSkipped: '{{route}} was skipped. {{reason}}',
eventCustom: 'Custom event',
eventWildcard: 'All events',
eventNamespaceWildcard: '{{namespace}}.*',
+41 -3
View File
@@ -408,12 +408,47 @@ const jaJP = {
discarded: '破棄済み',
failed: '失敗',
not_matched: '未一致',
test_started: 'テスト中',
},
routeStatusDetail: {
matched: 'このルートがイベントに一致しました。',
delivered: 'プロセッサーがイベントを受信しました。',
discarded: '設定に従ってイベントを破棄しました。',
failed: 'ルートを完了できませんでした。',
not_matched: '設定済みルートに一致しませんでした。',
test_started: '保存済みルートを実行しています。',
},
routeFailure: {
binding_disabled: 'このルートは無効です。',
event_pattern_mismatch: 'イベントがこのルートに一致しません。',
filters_mismatch: 'サンプルデータがルート条件を満たしていません。',
lower_priority: '別の一致ルートの優先度が高く設定されています。',
route_not_found: 'このイベントに一致するルートがありません。',
processor_incompatible:
'選択したプロセッサーはこのイベントを処理できません。',
processor_not_found: '選択したプロセッサーを利用できません。',
processor_disabled: '選択したプロセッサーは無効です。',
runner_failed: 'Agent Runner がイベント処理中に失敗しました。',
delivery_failed: '処理は完了しましたが、結果の配信に失敗しました。',
},
routeTestAction: '保存済みルートを実行',
routeTestRunning: '実行中…',
routeTestFailed:
'保存済みルートの実行に失敗しました。後でもう一度お試しください。',
routeTestDispatched:
'保存済みルートを実行しました。{{count}} 件のプラットフォーム操作を抑制しました。',
routeTestSideEffectWarning:
'保存済みルートを実行するとプロセッサーが動作します。プラットフォームのメッセージ操作は抑制されますが、ツールや外部サービスには副作用が生じる場合があります。',
dryRunTitle: 'イベントルートをテスト',
dryRunDescription:
'イベントとサンプルペイロードを指定し、現在のルート設定でどのプロセッサーに送られるか確認します。',
'プロセッサーを実行せずに現在のフォームをプレビューするか、保存済みルートを実行して設定を検証します。',
dryRunEventType: 'イベントタイプ',
dryRunPayload: 'サンプルペイロード JSON',
dryRunSampleReady: 'サンプルイベントを準備しました',
dryRunSampleDescription:
'LangBot が「{{event}}」用のサンプルデータを準備しました。通常はそのままテストできます。',
dryRunEditPayload: '詳細データを編集',
dryRunHidePayload: '詳細データを閉じる',
dryRunPayload: '詳細イベントデータ(JSON',
dryRunPayloadHint:
'message_text、chat_type、chat_id などの簡単なフィールドで条件をテストできます。',
dryRunPayloadJsonError: '有効な JSON を入力してください。',
@@ -421,7 +456,7 @@ const jaJP = {
'ペイロードは JSON オブジェクトである必要があります。',
dryRunNeedsSavedBot: 'ルートをテストする前にボットを保存してください。',
dryRunFailed: 'ルートテストに失敗しました。後でもう一度お試しください。',
dryRunAction: 'テスト実行',
dryRunAction: 'ルートをプレビュー',
dryRunRunning: 'テスト中…',
dryRunMatched: 'ルートに一致しました',
dryRunNotMatched: '一致するルートはありません',
@@ -431,6 +466,9 @@ const jaJP = {
dryRunRuleIndex: 'ルート {{index}}',
dryRunNoRule: '一致したルールなし',
dryRunDiagnostics: '診断ステップ',
dryRunDiagnosticSelected: '{{route}}を選択しました。',
dryRunDiagnosticMatched: '{{route}}が一致しました。{{reason}}',
dryRunDiagnosticSkipped: '{{route}}をスキップしました。{{reason}}',
eventCustom: 'カスタムイベント',
eventWildcard: 'すべてのイベント',
eventNamespaceWildcard: '{{namespace}}.*',
+38 -3
View File
@@ -386,19 +386,51 @@ const zhHans = {
discarded: '已丢弃',
failed: '失败',
not_matched: '未命中',
test_started: '测试中',
},
routeStatusDetail: {
matched: '此路由已命中事件。',
delivered: '处理器已收到事件。',
discarded: '此事件已按路由配置丢弃。',
failed: '此路由未能完成。',
not_matched: '没有已配置路由命中此事件。',
test_started: '正在运行已保存路由。',
},
routeFailure: {
binding_disabled: '此路由已禁用。',
event_pattern_mismatch: '事件与此路由不匹配。',
filters_mismatch: '示例数据不满足路由条件。',
lower_priority: '另一条命中路由的优先级更高。',
route_not_found: '没有路由命中此事件。',
processor_incompatible: '所选处理器无法处理此事件。',
processor_not_found: '所选处理器不可用。',
processor_disabled: '所选处理器已禁用。',
runner_failed: 'Agent Runner 处理事件时失败。',
delivery_failed: '处理器已完成,但结果投递失败。',
},
routeTestAction: '运行已保存路由',
routeTestRunning: '运行中…',
routeTestFailed: '运行已保存路由失败,请稍后重试。',
routeTestDispatched: '已保存路由运行成功,{{count}} 个平台操作已被阻止。',
routeTestSideEffectWarning:
'运行已保存路由会执行处理器。平台消息操作会被阻止,但工具和外部服务仍可能产生副作用。',
dryRunTitle: '测试事件路由',
dryRunDescription:
'选择一个事件并提供示例载荷,检查当前路由配置会命中哪个处理器。',
'可以先预览当前表单而不运行处理器,也可以运行已保存路由来验证线上配置。',
dryRunEventType: '事件类型',
dryRunPayload: '示例载荷 JSON',
dryRunSampleReady: '示例事件已准备好',
dryRunSampleDescription:
'LangBot 已为“{{event}}”准备示例数据,大多数路由测试可直接使用。',
dryRunEditPayload: '编辑高级数据',
dryRunHidePayload: '收起高级数据',
dryRunPayload: '高级事件数据(JSON',
dryRunPayloadHint:
'可填写 message_text、chat_type、chat_id 等简单字段,用于匹配触发条件。',
dryRunPayloadJsonError: '请输入合法 JSON。',
dryRunPayloadObjectError: '载荷必须是 JSON 对象。',
dryRunNeedsSavedBot: '请先保存机器人后再测试路由。',
dryRunFailed: '路由测试失败,请稍后重试。',
dryRunAction: '开始测试',
dryRunAction: '预览路由',
dryRunRunning: '测试中…',
dryRunMatched: '已命中路由',
dryRunNotMatched: '未命中路由',
@@ -408,6 +440,9 @@ const zhHans = {
dryRunRuleIndex: '第 {{index}} 条路由',
dryRunNoRule: '无命中规则',
dryRunDiagnostics: '诊断步骤',
dryRunDiagnosticSelected: '已选择{{route}}。',
dryRunDiagnosticMatched: '{{route}}已命中。{{reason}}',
dryRunDiagnosticSkipped: '{{route}}已跳过。{{reason}}',
eventCustom: '自定义事件',
eventWildcard: '全部事件',
eventNamespaceWildcard: '{{namespace}}.*',