mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-05-05 21:50:44 +08:00
feat(channel-monitor): apply template via subset picker; CC 2.1.114 baseline doc
Apply flow: - POST /admin/channel-monitor-templates/:id/apply now requires monitor_ids (non-empty array). Service applies the template only to the selected subset, gated by AND template_id = :id (so users can't sneak in unrelated monitor IDs). - New GET /admin/channel-monitor-templates/:id/monitors returns the associated monitor briefs (id/name/provider/enabled) for the picker. - ApplyToMonitors signature gains monitorIDs []int64; empty list returns ErrChannelMonitorTemplateApplyEmpty. Frontend: - New MonitorTemplateApplyPickerDialog.vue: list of associated monitors with checkboxes (default all checked), 全选 / 全不选 shortcuts, live selected/total count. Submit calls apply(id, ids). - MonitorTemplateManagerDialog replaces the old ConfirmDialog flow with the picker; onApplied refetches the list to refresh associated counts. i18n: applyPicker* + common.selectAll keys. chore: bump version to 0.1.114.33 The CC 2.1.114 (sdk-cli) UA / APIKeyBetaHeader / JSON metadata.user_id baseline (already verified working via the in-process apply on prod template id=1) is documented in internal/pkg/claude/constants.go and is what the seed template in the manager UI should follow.
This commit is contained in:
@@ -51,6 +51,17 @@ export interface ApplyResponse {
|
||||
affected: number
|
||||
}
|
||||
|
||||
export interface AssociatedMonitorBrief {
|
||||
id: number
|
||||
name: string
|
||||
provider: Provider
|
||||
enabled: boolean
|
||||
}
|
||||
|
||||
export interface AssociatedMonitorsResponse {
|
||||
items: AssociatedMonitorBrief[]
|
||||
}
|
||||
|
||||
export async function list(params: ListParams = {}): Promise<ListResponse> {
|
||||
const { data } = await apiClient.get<ListResponse>('/admin/channel-monitor-templates', {
|
||||
params,
|
||||
@@ -86,12 +97,24 @@ export async function del(id: number): Promise<void> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the template to all associated monitors (overwrite snapshot fields).
|
||||
* Returns count of affected monitors.
|
||||
* Apply the template to the specified associated monitors (overwrite snapshot fields).
|
||||
* monitorIds must be a non-empty subset of the template's associated monitors.
|
||||
* Returns count of actually affected monitors.
|
||||
*/
|
||||
export async function apply(id: number): Promise<ApplyResponse> {
|
||||
export async function apply(id: number, monitorIds: number[]): Promise<ApplyResponse> {
|
||||
const { data } = await apiClient.post<ApplyResponse>(
|
||||
`/admin/channel-monitor-templates/${id}/apply`,
|
||||
{ monitor_ids: monitorIds },
|
||||
)
|
||||
return data
|
||||
}
|
||||
|
||||
/**
|
||||
* List monitors currently associated to this template (used by apply picker).
|
||||
*/
|
||||
export async function listAssociatedMonitors(id: number): Promise<AssociatedMonitorsResponse> {
|
||||
const { data } = await apiClient.get<AssociatedMonitorsResponse>(
|
||||
`/admin/channel-monitor-templates/${id}/monitors`,
|
||||
)
|
||||
return data
|
||||
}
|
||||
@@ -103,6 +126,7 @@ export const channelMonitorTemplateAPI = {
|
||||
update,
|
||||
del,
|
||||
apply,
|
||||
listAssociatedMonitors,
|
||||
}
|
||||
|
||||
export default channelMonitorTemplateAPI
|
||||
|
||||
Reference in New Issue
Block a user