fix: remove remaining Sora references from frontend
The previous Sora removal missed several frontend references, causing TypeScript build errors for sora_client_enabled and a missing SoraView.vue import. Clean up all remaining Sora code from types, router, sidebar, settings, store, and accounts API.
This commit is contained in:
@@ -568,28 +568,6 @@ export async function refreshOpenAIToken(
|
|||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Validate Sora session token and exchange to access token
|
|
||||||
* @param sessionToken - Sora session token
|
|
||||||
* @param proxyId - Optional proxy ID
|
|
||||||
* @param endpoint - API endpoint path
|
|
||||||
* @returns Token information including access_token
|
|
||||||
*/
|
|
||||||
export async function validateSoraSessionToken(
|
|
||||||
sessionToken: string,
|
|
||||||
proxyId?: number | null,
|
|
||||||
endpoint: string = '/admin/sora/st2at'
|
|
||||||
): Promise<Record<string, unknown>> {
|
|
||||||
const payload: { session_token: string; proxy_id?: number } = {
|
|
||||||
session_token: sessionToken
|
|
||||||
}
|
|
||||||
if (proxyId) {
|
|
||||||
payload.proxy_id = proxyId
|
|
||||||
}
|
|
||||||
const { data } = await apiClient.post<Record<string, unknown>>(endpoint, payload)
|
|
||||||
return data
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Batch operation result type
|
* Batch operation result type
|
||||||
*/
|
*/
|
||||||
@@ -663,7 +641,6 @@ export const accountsAPI = {
|
|||||||
generateAuthUrl,
|
generateAuthUrl,
|
||||||
exchangeCode,
|
exchangeCode,
|
||||||
refreshOpenAIToken,
|
refreshOpenAIToken,
|
||||||
validateSoraSessionToken,
|
|
||||||
batchCreate,
|
batchCreate,
|
||||||
batchUpdateCredentials,
|
batchUpdateCredentials,
|
||||||
bulkUpdate,
|
bulkUpdate,
|
||||||
|
|||||||
@@ -467,21 +467,6 @@ const ChevronDoubleLeftIcon = {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const SoraIcon = {
|
|
||||||
render: () =>
|
|
||||||
h(
|
|
||||||
'svg',
|
|
||||||
{ fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor', 'stroke-width': '1.5' },
|
|
||||||
[
|
|
||||||
h('path', {
|
|
||||||
'stroke-linecap': 'round',
|
|
||||||
'stroke-linejoin': 'round',
|
|
||||||
d: 'M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09z'
|
|
||||||
})
|
|
||||||
]
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
const ChevronDoubleRightIcon = {
|
const ChevronDoubleRightIcon = {
|
||||||
render: () =>
|
render: () =>
|
||||||
h(
|
h(
|
||||||
@@ -504,9 +489,6 @@ const userNavItems = computed((): NavItem[] => {
|
|||||||
{ path: '/keys', label: t('nav.apiKeys'), icon: KeyIcon },
|
{ path: '/keys', label: t('nav.apiKeys'), icon: KeyIcon },
|
||||||
{ path: '/usage', label: t('nav.usage'), icon: ChartIcon, hideInSimpleMode: true },
|
{ path: '/usage', label: t('nav.usage'), icon: ChartIcon, hideInSimpleMode: true },
|
||||||
{ path: '/subscriptions', label: t('nav.mySubscriptions'), icon: CreditCardIcon, hideInSimpleMode: true },
|
{ path: '/subscriptions', label: t('nav.mySubscriptions'), icon: CreditCardIcon, hideInSimpleMode: true },
|
||||||
...(appStore.cachedPublicSettings?.sora_client_enabled
|
|
||||||
? [{ path: '/sora', label: t('nav.sora'), icon: SoraIcon }]
|
|
||||||
: []),
|
|
||||||
...(appStore.cachedPublicSettings?.purchase_subscription_enabled
|
...(appStore.cachedPublicSettings?.purchase_subscription_enabled
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
@@ -535,9 +517,6 @@ const personalNavItems = computed((): NavItem[] => {
|
|||||||
{ path: '/keys', label: t('nav.apiKeys'), icon: KeyIcon },
|
{ path: '/keys', label: t('nav.apiKeys'), icon: KeyIcon },
|
||||||
{ path: '/usage', label: t('nav.usage'), icon: ChartIcon, hideInSimpleMode: true },
|
{ path: '/usage', label: t('nav.usage'), icon: ChartIcon, hideInSimpleMode: true },
|
||||||
{ path: '/subscriptions', label: t('nav.mySubscriptions'), icon: CreditCardIcon, hideInSimpleMode: true },
|
{ path: '/subscriptions', label: t('nav.mySubscriptions'), icon: CreditCardIcon, hideInSimpleMode: true },
|
||||||
...(appStore.cachedPublicSettings?.sora_client_enabled
|
|
||||||
? [{ path: '/sora', label: t('nav.sora'), icon: SoraIcon }]
|
|
||||||
: []),
|
|
||||||
...(appStore.cachedPublicSettings?.purchase_subscription_enabled
|
...(appStore.cachedPublicSettings?.purchase_subscription_enabled
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -201,18 +201,6 @@ const routes: RouteRecordRaw[] = [
|
|||||||
descriptionKey: 'purchase.description'
|
descriptionKey: 'purchase.description'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
path: '/sora',
|
|
||||||
name: 'Sora',
|
|
||||||
component: () => import('@/views/user/SoraView.vue'),
|
|
||||||
meta: {
|
|
||||||
requiresAuth: true,
|
|
||||||
requiresAdmin: false,
|
|
||||||
title: 'Sora',
|
|
||||||
titleKey: 'sora.title',
|
|
||||||
descriptionKey: 'sora.description'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
path: '/custom/:id',
|
path: '/custom/:id',
|
||||||
name: 'CustomPage',
|
name: 'CustomPage',
|
||||||
|
|||||||
@@ -332,7 +332,6 @@ export const useAppStore = defineStore('app', () => {
|
|||||||
custom_menu_items: [],
|
custom_menu_items: [],
|
||||||
custom_endpoints: [],
|
custom_endpoints: [],
|
||||||
linuxdo_oauth_enabled: false,
|
linuxdo_oauth_enabled: false,
|
||||||
sora_client_enabled: false,
|
|
||||||
backend_mode_enabled: false,
|
backend_mode_enabled: false,
|
||||||
version: siteVersion.value
|
version: siteVersion.value
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,9 +45,6 @@ export interface AdminUser extends User {
|
|||||||
group_rates?: Record<number, number>
|
group_rates?: Record<number, number>
|
||||||
// 当前并发数(仅管理员列表接口返回)
|
// 当前并发数(仅管理员列表接口返回)
|
||||||
current_concurrency?: number
|
current_concurrency?: number
|
||||||
// Sora 存储配额(字节)
|
|
||||||
sora_storage_quota_bytes: number
|
|
||||||
sora_storage_used_bytes: number
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface LoginRequest {
|
export interface LoginRequest {
|
||||||
@@ -112,7 +109,6 @@ export interface PublicSettings {
|
|||||||
custom_menu_items: CustomMenuItem[]
|
custom_menu_items: CustomMenuItem[]
|
||||||
custom_endpoints: CustomEndpoint[]
|
custom_endpoints: CustomEndpoint[]
|
||||||
linuxdo_oauth_enabled: boolean
|
linuxdo_oauth_enabled: boolean
|
||||||
sora_client_enabled: boolean
|
|
||||||
backend_mode_enabled: boolean
|
backend_mode_enabled: boolean
|
||||||
version: string
|
version: string
|
||||||
}
|
}
|
||||||
@@ -366,7 +362,7 @@ export interface PaginationConfig {
|
|||||||
|
|
||||||
// ==================== API Key & Group Types ====================
|
// ==================== API Key & Group Types ====================
|
||||||
|
|
||||||
export type GroupPlatform = 'anthropic' | 'openai' | 'gemini' | 'antigravity' | 'sora'
|
export type GroupPlatform = 'anthropic' | 'openai' | 'gemini' | 'antigravity'
|
||||||
|
|
||||||
export type SubscriptionType = 'standard' | 'subscription'
|
export type SubscriptionType = 'standard' | 'subscription'
|
||||||
|
|
||||||
@@ -386,13 +382,6 @@ export interface Group {
|
|||||||
image_price_1k: number | null
|
image_price_1k: number | null
|
||||||
image_price_2k: number | null
|
image_price_2k: number | null
|
||||||
image_price_4k: number | null
|
image_price_4k: number | null
|
||||||
// Sora 按次计费配置
|
|
||||||
sora_image_price_360: number | null
|
|
||||||
sora_image_price_540: number | null
|
|
||||||
sora_video_price_per_request: number | null
|
|
||||||
sora_video_price_per_request_hd: number | null
|
|
||||||
// Sora 存储配额(字节)
|
|
||||||
sora_storage_quota_bytes: number
|
|
||||||
// Claude Code 客户端限制
|
// Claude Code 客户端限制
|
||||||
claude_code_only: boolean
|
claude_code_only: boolean
|
||||||
fallback_group_id: number | null
|
fallback_group_id: number | null
|
||||||
@@ -501,11 +490,6 @@ export interface CreateGroupRequest {
|
|||||||
image_price_1k?: number | null
|
image_price_1k?: number | null
|
||||||
image_price_2k?: number | null
|
image_price_2k?: number | null
|
||||||
image_price_4k?: number | null
|
image_price_4k?: number | null
|
||||||
sora_image_price_360?: number | null
|
|
||||||
sora_image_price_540?: number | null
|
|
||||||
sora_video_price_per_request?: number | null
|
|
||||||
sora_video_price_per_request_hd?: number | null
|
|
||||||
sora_storage_quota_bytes?: number
|
|
||||||
claude_code_only?: boolean
|
claude_code_only?: boolean
|
||||||
fallback_group_id?: number | null
|
fallback_group_id?: number | null
|
||||||
fallback_group_id_on_invalid_request?: number | null
|
fallback_group_id_on_invalid_request?: number | null
|
||||||
@@ -532,11 +516,6 @@ export interface UpdateGroupRequest {
|
|||||||
image_price_1k?: number | null
|
image_price_1k?: number | null
|
||||||
image_price_2k?: number | null
|
image_price_2k?: number | null
|
||||||
image_price_4k?: number | null
|
image_price_4k?: number | null
|
||||||
sora_image_price_360?: number | null
|
|
||||||
sora_image_price_540?: number | null
|
|
||||||
sora_video_price_per_request?: number | null
|
|
||||||
sora_video_price_per_request_hd?: number | null
|
|
||||||
sora_storage_quota_bytes?: number
|
|
||||||
claude_code_only?: boolean
|
claude_code_only?: boolean
|
||||||
fallback_group_id?: number | null
|
fallback_group_id?: number | null
|
||||||
fallback_group_id_on_invalid_request?: number | null
|
fallback_group_id_on_invalid_request?: number | null
|
||||||
@@ -550,7 +529,7 @@ export interface UpdateGroupRequest {
|
|||||||
|
|
||||||
// ==================== Account & Proxy Types ====================
|
// ==================== Account & Proxy Types ====================
|
||||||
|
|
||||||
export type AccountPlatform = 'anthropic' | 'openai' | 'gemini' | 'antigravity' | 'sora'
|
export type AccountPlatform = 'anthropic' | 'openai' | 'gemini' | 'antigravity'
|
||||||
export type AccountType = 'oauth' | 'setup-token' | 'apikey' | 'upstream' | 'bedrock'
|
export type AccountType = 'oauth' | 'setup-token' | 'apikey' | 'upstream' | 'bedrock'
|
||||||
export type OAuthAddMethod = 'oauth' | 'setup-token'
|
export type OAuthAddMethod = 'oauth' | 'setup-token'
|
||||||
export type ProxyProtocol = 'http' | 'https' | 'socks5' | 'socks5h'
|
export type ProxyProtocol = 'http' | 'https' | 'socks5' | 'socks5h'
|
||||||
|
|||||||
@@ -1577,31 +1577,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Sora Client Toggle -->
|
|
||||||
<div class="card">
|
|
||||||
<div class="border-b border-gray-100 px-6 py-4 dark:border-dark-700">
|
|
||||||
<h2 class="text-lg font-semibold text-gray-900 dark:text-white">
|
|
||||||
{{ t('admin.settings.soraClient.title') }}
|
|
||||||
</h2>
|
|
||||||
<p class="mt-1 text-sm text-gray-500 dark:text-gray-400">
|
|
||||||
{{ t('admin.settings.soraClient.description') }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="space-y-6 p-6">
|
|
||||||
<div class="flex items-center justify-between">
|
|
||||||
<div>
|
|
||||||
<label class="font-medium text-gray-900 dark:text-white">{{
|
|
||||||
t('admin.settings.soraClient.enabled')
|
|
||||||
}}</label>
|
|
||||||
<p class="text-sm text-gray-500 dark:text-gray-400">
|
|
||||||
{{ t('admin.settings.soraClient.enabledHint') }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<Toggle v-model="form.sora_client_enabled" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Custom Menu Items -->
|
<!-- Custom Menu Items -->
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="border-b border-gray-100 px-6 py-4 dark:border-dark-700">
|
<div class="border-b border-gray-100 px-6 py-4 dark:border-dark-700">
|
||||||
@@ -2125,7 +2100,6 @@ const form = reactive<SettingsForm>({
|
|||||||
hide_ccs_import_button: false,
|
hide_ccs_import_button: false,
|
||||||
purchase_subscription_enabled: false,
|
purchase_subscription_enabled: false,
|
||||||
purchase_subscription_url: '',
|
purchase_subscription_url: '',
|
||||||
sora_client_enabled: false,
|
|
||||||
custom_menu_items: [] as Array<{id: string; label: string; icon_svg: string; url: string; visibility: 'user' | 'admin'; sort_order: number}>,
|
custom_menu_items: [] as Array<{id: string; label: string; icon_svg: string; url: string; visibility: 'user' | 'admin'; sort_order: number}>,
|
||||||
custom_endpoints: [] as Array<{name: string; endpoint: string; description: string}>,
|
custom_endpoints: [] as Array<{name: string; endpoint: string; description: string}>,
|
||||||
frontend_url: '',
|
frontend_url: '',
|
||||||
@@ -2449,7 +2423,6 @@ async function saveSettings() {
|
|||||||
hide_ccs_import_button: form.hide_ccs_import_button,
|
hide_ccs_import_button: form.hide_ccs_import_button,
|
||||||
purchase_subscription_enabled: form.purchase_subscription_enabled,
|
purchase_subscription_enabled: form.purchase_subscription_enabled,
|
||||||
purchase_subscription_url: form.purchase_subscription_url,
|
purchase_subscription_url: form.purchase_subscription_url,
|
||||||
sora_client_enabled: form.sora_client_enabled,
|
|
||||||
custom_menu_items: form.custom_menu_items,
|
custom_menu_items: form.custom_menu_items,
|
||||||
custom_endpoints: form.custom_endpoints,
|
custom_endpoints: form.custom_endpoints,
|
||||||
frontend_url: form.frontend_url,
|
frontend_url: form.frontend_url,
|
||||||
|
|||||||
Reference in New Issue
Block a user