fix: show site presets and api key site options

This commit is contained in:
boos
2026-05-19 10:49:41 +08:00
parent 11144d0697
commit 27c2aca312
2 changed files with 27 additions and 2 deletions
+12 -2
View File
@@ -1,5 +1,5 @@
use crate::{ use crate::{
db::models::account::Account, db::models::{account::Account, site::Site},
error::{AppError, AppResult}, error::{AppError, AppResult},
AppState, AppState,
}; };
@@ -64,7 +64,17 @@ pub async fn list_accounts(
.await? .await?
}; };
Ok(Json(json!({ "data": accounts }))) let sites: Vec<Site> =
sqlx::query_as::<_, Site>("SELECT * FROM sites ORDER BY sort_order, name")
.fetch_all(&*state.db)
.await?;
Ok(Json(json!({
"data": accounts,
"accounts": accounts,
"sites": sites,
"generatedAt": chrono::Utc::now().to_rfc3339(),
})))
} }
/// POST /api/accounts /// POST /api/accounts
+15
View File
@@ -1,6 +1,7 @@
const presets = [ const presets = [
{ {
id: 'codingplan-openai', id: 'codingplan-openai',
label: '阿里云 Coding Plan (OpenAI)',
platform: 'openai', platform: 'openai',
defaultUrl: 'https://coding.dashscope.aliyuncs.com/v1', defaultUrl: 'https://coding.dashscope.aliyuncs.com/v1',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -9,6 +10,7 @@ const presets = [
}, },
{ {
id: 'codingplan-claude', id: 'codingplan-claude',
label: '阿里云 Coding Plan (Claude)',
platform: 'claude', platform: 'claude',
defaultUrl: 'https://coding.dashscope.aliyuncs.com/apps/anthropic', defaultUrl: 'https://coding.dashscope.aliyuncs.com/apps/anthropic',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -17,6 +19,7 @@ const presets = [
}, },
{ {
id: 'zhipu-coding-plan-openai', id: 'zhipu-coding-plan-openai',
label: '智谱清言 Coding Plan (OpenAI)',
platform: 'openai', platform: 'openai',
defaultUrl: 'https://open.bigmodel.cn/api/coding/paas/v4', defaultUrl: 'https://open.bigmodel.cn/api/coding/paas/v4',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -25,6 +28,7 @@ const presets = [
}, },
{ {
id: 'zhipu-coding-plan-claude', id: 'zhipu-coding-plan-claude',
label: '智谱清言 Coding Plan (Claude)',
platform: 'claude', platform: 'claude',
defaultUrl: 'https://open.bigmodel.cn/api/anthropic', defaultUrl: 'https://open.bigmodel.cn/api/anthropic',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -33,6 +37,7 @@ const presets = [
}, },
{ {
id: 'deepseek-openai', id: 'deepseek-openai',
label: 'DeepSeek (OpenAI)',
platform: 'openai', platform: 'openai',
defaultUrl: 'https://api.deepseek.com/v1', defaultUrl: 'https://api.deepseek.com/v1',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -41,6 +46,7 @@ const presets = [
}, },
{ {
id: 'deepseek-claude', id: 'deepseek-claude',
label: 'DeepSeek (Claude)',
platform: 'claude', platform: 'claude',
defaultUrl: 'https://api.deepseek.com/anthropic', defaultUrl: 'https://api.deepseek.com/anthropic',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -49,6 +55,7 @@ const presets = [
}, },
{ {
id: 'moonshot-openai', id: 'moonshot-openai',
label: 'Moonshot (OpenAI)',
platform: 'openai', platform: 'openai',
defaultUrl: 'https://api.moonshot.cn/v1', defaultUrl: 'https://api.moonshot.cn/v1',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -57,6 +64,7 @@ const presets = [
}, },
{ {
id: 'moonshot-claude', id: 'moonshot-claude',
label: 'Moonshot (Claude)',
platform: 'claude', platform: 'claude',
defaultUrl: 'https://api.moonshot.cn/anthropic', defaultUrl: 'https://api.moonshot.cn/anthropic',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -65,6 +73,7 @@ const presets = [
}, },
{ {
id: 'minimax-openai', id: 'minimax-openai',
label: 'MiniMax (OpenAI)',
platform: 'openai', platform: 'openai',
defaultUrl: 'https://api.minimaxi.com/v1', defaultUrl: 'https://api.minimaxi.com/v1',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -73,6 +82,7 @@ const presets = [
}, },
{ {
id: 'minimax-claude', id: 'minimax-claude',
label: 'MiniMax (Claude)',
platform: 'claude', platform: 'claude',
defaultUrl: 'https://api.minimaxi.com/anthropic', defaultUrl: 'https://api.minimaxi.com/anthropic',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -81,6 +91,7 @@ const presets = [
}, },
{ {
id: 'modelscope-openai', id: 'modelscope-openai',
label: 'ModelScope (OpenAI)',
platform: 'openai', platform: 'openai',
defaultUrl: 'https://api-inference.modelscope.cn/v1', defaultUrl: 'https://api-inference.modelscope.cn/v1',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -93,6 +104,7 @@ const presets = [
}, },
{ {
id: 'modelscope-claude', id: 'modelscope-claude',
label: 'ModelScope (Claude)',
platform: 'claude', platform: 'claude',
defaultUrl: 'https://api-inference.modelscope.cn', defaultUrl: 'https://api-inference.modelscope.cn',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -101,6 +113,7 @@ const presets = [
}, },
{ {
id: 'doubao-coding-openai', id: 'doubao-coding-openai',
label: '豆包 Coding Plan (OpenAI)',
platform: 'openai', platform: 'openai',
defaultUrl: 'https://ark.cn-beijing.volces.com/api/coding/v3', defaultUrl: 'https://ark.cn-beijing.volces.com/api/coding/v3',
initialSegment: 'apikey', initialSegment: 'apikey',
@@ -128,6 +141,8 @@ const rootReselect = [
{ rootPrefix: 'https://coding.dashscope.aliyuncs.com', id: 'codingplan-openai' }, { rootPrefix: 'https://coding.dashscope.aliyuncs.com', id: 'codingplan-openai' },
]; ];
export function getSiteInitializationPreset(id) { export function getSiteInitializationPreset(id) {
if (!id)
return undefined;
return presets.find((p) => p.id === id); return presets.find((p) => p.id === id);
} }
export function listSiteInitializationPresets() { export function listSiteInitializationPresets() {