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