Commit a0729677 authored by shaw's avatar shaw
Browse files

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.
parent 8154575d
...@@ -568,28 +568,6 @@ export async function refreshOpenAIToken( ...@@ -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 = { ...@@ -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 = { ...@@ -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[] => { ...@@ -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[] => { ...@@ -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[] = [ ...@@ -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', () => { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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 @@ ...@@ -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>({ ...@@ -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() { ...@@ -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,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment