mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-05-05 21:50:44 +08:00
test(admin): 增加messages调度表单状态转换测试
This commit is contained in:
72
frontend/src/views/admin/groupsMessagesDispatch.ts
Normal file
72
frontend/src/views/admin/groupsMessagesDispatch.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
import type { OpenAIMessagesDispatchModelConfig } from "@/types";
|
||||
|
||||
export interface MessagesDispatchMappingRow {
|
||||
claude_model: string;
|
||||
target_model: string;
|
||||
}
|
||||
|
||||
export interface MessagesDispatchFormState {
|
||||
allow_messages_dispatch: boolean;
|
||||
opus_mapped_model: string;
|
||||
sonnet_mapped_model: string;
|
||||
haiku_mapped_model: string;
|
||||
exact_model_mappings: MessagesDispatchMappingRow[];
|
||||
}
|
||||
|
||||
export function createDefaultMessagesDispatchFormState(): MessagesDispatchFormState {
|
||||
return {
|
||||
allow_messages_dispatch: false,
|
||||
opus_mapped_model: "gpt-5.4",
|
||||
sonnet_mapped_model: "gpt-5.3-codex",
|
||||
haiku_mapped_model: "gpt-5.4-mini",
|
||||
exact_model_mappings: [],
|
||||
};
|
||||
}
|
||||
|
||||
export function messagesDispatchConfigToFormState(
|
||||
config?: OpenAIMessagesDispatchModelConfig | null,
|
||||
): MessagesDispatchFormState {
|
||||
const defaults = createDefaultMessagesDispatchFormState();
|
||||
const exactMappings = Object.entries(config?.exact_model_mappings || {})
|
||||
.sort(([left], [right]) => left.localeCompare(right))
|
||||
.map(([claude_model, target_model]) => ({ claude_model, target_model }));
|
||||
|
||||
return {
|
||||
allow_messages_dispatch: false,
|
||||
opus_mapped_model:
|
||||
config?.opus_mapped_model?.trim() || defaults.opus_mapped_model,
|
||||
sonnet_mapped_model:
|
||||
config?.sonnet_mapped_model?.trim() || defaults.sonnet_mapped_model,
|
||||
haiku_mapped_model:
|
||||
config?.haiku_mapped_model?.trim() || defaults.haiku_mapped_model,
|
||||
exact_model_mappings: exactMappings,
|
||||
};
|
||||
}
|
||||
|
||||
export function messagesDispatchFormStateToConfig(
|
||||
state: MessagesDispatchFormState,
|
||||
): OpenAIMessagesDispatchModelConfig {
|
||||
const exactModelMappings = Object.fromEntries(
|
||||
state.exact_model_mappings
|
||||
.map((row) => [row.claude_model.trim(), row.target_model.trim()] as const)
|
||||
.filter(([claudeModel, targetModel]) => claudeModel && targetModel),
|
||||
);
|
||||
|
||||
return {
|
||||
opus_mapped_model: state.opus_mapped_model.trim(),
|
||||
sonnet_mapped_model: state.sonnet_mapped_model.trim(),
|
||||
haiku_mapped_model: state.haiku_mapped_model.trim(),
|
||||
exact_model_mappings: exactModelMappings,
|
||||
};
|
||||
}
|
||||
|
||||
export function resetMessagesDispatchFormState(
|
||||
target: MessagesDispatchFormState,
|
||||
): void {
|
||||
const defaults = createDefaultMessagesDispatchFormState();
|
||||
target.allow_messages_dispatch = defaults.allow_messages_dispatch;
|
||||
target.opus_mapped_model = defaults.opus_mapped_model;
|
||||
target.sonnet_mapped_model = defaults.sonnet_mapped_model;
|
||||
target.haiku_mapped_model = defaults.haiku_mapped_model;
|
||||
target.exact_model_mappings = [];
|
||||
}
|
||||
Reference in New Issue
Block a user