Commit 113f84ad by Liu

fix: 部署测试环境时报错

parent f735255c
import { defineConfig } from '@rsbuild/core'
import { defineConfig, loadEnv } from '@rsbuild/core'
import { pluginReact } from '@rsbuild/plugin-react'
import { pluginLess } from '@rsbuild/plugin-less'
import { pluginSvgr } from '@rsbuild/plugin-svgr'
......@@ -6,6 +6,9 @@ import type { EnvConfKey } from './src/config/env'
import { envConf } from './src/config/env'
const mode = process.env.MODE as EnvConfKey || 'dev'
const { parsed: env } = loadEnv({ mode, cwd: process.cwd() })
const apiUrl = envConf[mode].apiUrl || ''
const proxyUrl = envConf[mode].proxyUrl || ''
const sdkCode = envConf[mode].sdkCode || ''
......@@ -15,13 +18,7 @@ const sdkApiBaseUrl = envConf[mode].sdkApiBaseUrl || ''
const basename = '/sdream-fe'
// 处理 VITE_ 前缀的环境变量
const viteEnvVars: Record<string, string> = {}
Object.keys(process.env).forEach((key) => {
if (key.startsWith('VITE_')) {
viteEnvVars[`import.meta.env.${key}`] = JSON.stringify(process.env[key])
}
})
const viteOutputObj = env.VITE_OUTPUT_OBJ || 'open'
export default defineConfig({
plugins: [
......@@ -60,7 +57,7 @@ export default defineConfig({
'import.meta.env.VITE_SDK_CHANNEL': JSON.stringify(sdkChannel),
'import.meta.env.VITE_SDK_MOCK': JSON.stringify(sdkMock),
'import.meta.env.VITE_SDK_API_BASE_URL': JSON.stringify(sdkApiBaseUrl),
...viteEnvVars,
'import.meta.env.VITE_OUTPUT_OBJ': JSON.stringify(viteOutputObj),
},
},
server: {
......
......@@ -69,3 +69,21 @@ export function fetchUploadWorkflowFile(file: File) {
formData.append('file', file)
return http.post<{ data?: unknown }>('/api/v1/knowledge/upload', formData)
}
/**
* 验证 SDK 版本是否最新
*/
export function fetchValidateSdkVersion() {
return http.post('/configserver/sdk/validate', {
sdkType: 1,
})
}
/**
* 下载 SDK
*/
export function fetchDownloadSdk() {
return http.post('/manager/api/oss/sdk/v1/download', {
sdkType: 1,
})
}
......@@ -11,4 +11,9 @@ declare module '*.svg?react' {
interface ImportMetaEnv {
readonly VITE_USE_EFFICIENCY_MOCK?: string
readonly VITE_USE_CONVERSATION_MOCK?: string
readonly VITE_OUTPUT_OBJ?: string
readonly VITE_SDK_CODE?: string
readonly VITE_SDK_CHANNEL?: string
readonly VITE_SDK_MOCK?: string
readonly VITE_SDK_API_BASE_URL?: string
}
......@@ -68,7 +68,8 @@ async function loadSDK(): Promise<void> {
}
const script = document.createElement('script')
const basename = '/sdream-fe'
const viteOutputObj = import.meta.env.VITE_OUTPUT_OBJ || 'open'
const basename = viteOutputObj === 'inner' ? '/sdream-fe' : ''
script.src = `${basename}/sdk/index.js`
script.type = 'text/javascript'
script.onload = () => {
......
......@@ -11,7 +11,7 @@ import { clearBusinessInsightWorkflow, clearCurrentToolId, fetchConversations, s
import { useAppDispatch, useAppSelector } from '@/store/hook'
import { fetchEfficiencyQuestionList } from '@/api/home'
import SdreamLoading from '@/components/SdreamLoading'
import { fetchLoginByToken, fetchLoginByUid } from '@/api/common'
import { fetchDownloadSdk, fetchLoginByToken, fetchLoginByUid, fetchValidateSdkVersion } from '@/api/common'
import { fetchSessionConversationId } from '@/api/conversation'
import { fetchBusinessInsightList, fetchCheckTokenApi } from '@/api/chat'
import { getUserRolesFromRoute, safeLocalStorageGetItem, safeLocalStorageSetItem, safeSessionStorageGetItem, safeSessionStorageRemoveItem, safeSessionStorageSetItem, waitForToken } from '@/lib/utils'
......@@ -147,6 +147,25 @@ export const Home: React.FC = () => {
return getCommonQuestionRecordTypeForToolRow(row) || '01'
}, [])
const handleSdkUpdate = useCallback(async () => {
try {
console.log('[HomeNew] 开始验证 SDK 版本')
const validateRes = await fetchValidateSdkVersion()
console.log('[HomeNew] SDK 版本验证结果:', validateRes)
if (validateRes && validateRes.data) {
console.log('[HomeNew] SDK 版本验证成功,开始下载 SDK')
const downloadRes = await fetchDownloadSdk()
console.log('[HomeNew] SDK 下载结果:', downloadRes)
}
else {
console.log('[HomeNew] SDK 版本验证失败或数据为空')
}
}
catch (error) {
console.error('[HomeNew] SDK 版本验证或下载失败:', error)
}
}, [])
// 获取会话ID并加载历史记录
const getSessionConversationId = async (data?: any): Promise<string | null> => {
try {
......@@ -460,6 +479,8 @@ export const Home: React.FC = () => {
hasCalledBusinessApis.current = true
// 触发自定义事件,通知 ChatEditor 强制重置为制度活化
window.dispatchEvent(new CustomEvent('forceResetToGeneralMode'))
// 验证 SDK 版本并下载
await handleSdkUpdate()
const conversationId = await getSessionConversationId()
dispatch(fetchConversations())
// 2. 拉取常见问题等业务数据
......@@ -490,6 +511,8 @@ export const Home: React.FC = () => {
await fetchCheckTokenApi()
// token 验证成功,调用业务接口
hasCalledBusinessApis.current = true
// 验证 SDK 版本并下载
await handleSdkUpdate()
// 等待获取会话ID后再调用 _handleToolClick
const conversationId = await getSessionConversationId()
dispatch(fetchConversations())
......@@ -573,6 +596,8 @@ export const Home: React.FC = () => {
hasCalledBusinessApis.current = true
// 触发自定义事件,通知 ChatEditor 强制重置为制度活化
window.dispatchEvent(new CustomEvent('forceResetToGeneralMode'))
// 验证 SDK 版本并下载
await handleSdkUpdate()
const conversationId = await getSessionConversationId()
dispatch(fetchConversations())
// 2. 拉取常见问题等业务数据
......@@ -587,7 +612,7 @@ export const Home: React.FC = () => {
}
}
}
}, [setToken, setUserName, dispatch])
}, [setToken, setUserName, dispatch, handleSdkUpdate])
// 监听路由参数变化,提取 userRoles(确保路由参数被正确解析)
useEffect(() => {
......
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