feat(channel-monitor): preserve upstream error body
Monitor:
- callProvider now returns both textPath-extracted text and raw body;
runCheckForModel uses rawBody on non-2xx so history.message stops being
"upstream HTTP 503: " with empty body (gjson textPath produces "" for
error responses like {"error":{"message":"No available accounts..."}})
- truncateForErrorBody collapses whitespace then caps at 300 bytes
(monitorErrorBodySnippetMaxBytes); final truncateMessage still enforces
the 500-byte DB column cap
Frontend:
- MonitorFormDialog: primary_model input text color and ModelTagInput tags
now both track form.provider (via new getPlatformTextClass + existing
getPlatformTagClass with platform prop).
(cherry-picked from 1d3b0418; dropped gateway_handler logging改动,不在本 PR 范围)
This commit is contained in:
@@ -60,13 +60,21 @@
|
||||
|
||||
<div>
|
||||
<label class="input-label">{{ t('admin.channelMonitor.form.primaryModel') }} <span class="text-red-500">*</span></label>
|
||||
<input v-model="form.primary_model" type="text" required class="input" :placeholder="t('admin.channelMonitor.form.primaryModelPlaceholder')" />
|
||||
<input
|
||||
v-model="form.primary_model"
|
||||
type="text"
|
||||
required
|
||||
class="input font-medium"
|
||||
:class="getPlatformTextClass(form.provider)"
|
||||
:placeholder="t('admin.channelMonitor.form.primaryModelPlaceholder')"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="input-label">{{ t('admin.channelMonitor.form.extraModels') }}</label>
|
||||
<ModelTagInput
|
||||
:models="form.extra_models"
|
||||
:platform="form.provider"
|
||||
:placeholder="t('admin.channelMonitor.form.extraModelsPlaceholder')"
|
||||
@update:models="form.extra_models = $event"
|
||||
/>
|
||||
@@ -137,6 +145,7 @@ import type { ApiKey } from '@/types'
|
||||
import BaseDialog from '@/components/common/BaseDialog.vue'
|
||||
import Toggle from '@/components/common/Toggle.vue'
|
||||
import ModelTagInput from '@/components/admin/channel/ModelTagInput.vue'
|
||||
import { getPlatformTextClass } from '@/components/admin/channel/types'
|
||||
import MonitorKeyPickerDialog from '@/components/admin/monitor/MonitorKeyPickerDialog.vue'
|
||||
import ProviderIcon from '@/components/user/monitor/ProviderIcon.vue'
|
||||
import { useChannelMonitorFormat } from '@/composables/useChannelMonitorFormat'
|
||||
|
||||
Reference in New Issue
Block a user