Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
sdream-ai-fe
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
侯明涛
sdream-ai-fe
Commits
113f84ad
Commit
113f84ad
authored
Jul 13, 2026
by
Liu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 部署测试环境时报错
parent
f735255c
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
58 additions
and
12 deletions
+58
-12
rsbuild.config.ts
+6
-9
src/api/common.ts
+18
-0
src/env.d.ts
+5
-0
src/index.tsx
+2
-1
src/pages/Home/HomeNew.tsx
+27
-2
No files found.
rsbuild.config.ts
View file @
113f84ad
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
:
{
...
...
src/api/common.ts
View file @
113f84ad
...
@@ -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
,
})
}
src/env.d.ts
View file @
113f84ad
...
@@ -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
}
}
src/index.tsx
View file @
113f84ad
...
@@ -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
=
()
=>
{
...
...
src/pages/Home/HomeNew.tsx
View file @
113f84ad
...
@@ -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
{
fetch
LoginByToken
,
fetchLoginByUid
}
from
'@/api/common'
import
{
fetch
DownloadSdk
,
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
(()
=>
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment