|
@@ -23,11 +23,6 @@ function _clearAuthAndRedirect() {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const request = (url, method = 'POST', data = {}, options = {}) => {
|
|
const request = (url, method = 'POST', data = {}, options = {}) => {
|
|
|
- // 调试:打印完整请求地址
|
|
|
|
|
- var fullUrl = BASE_URL + url
|
|
|
|
|
- if (url.indexOf('/api/auth') === 0) {
|
|
|
|
|
- console.log('[API] ' + method + ' ' + fullUrl, data)
|
|
|
|
|
- }
|
|
|
|
|
// Append query params from options to URL if provided (e.g., { guideId } for GET requests)
|
|
// Append query params from options to URL if provided (e.g., { guideId } for GET requests)
|
|
|
if (options && Object.keys(options).length > 0) {
|
|
if (options && Object.keys(options).length > 0) {
|
|
|
const separator = url.includes('?') ? '&' : '?'
|
|
const separator = url.includes('?') ? '&' : '?'
|
|
@@ -37,11 +32,12 @@ const request = (url, method = 'POST', data = {}, options = {}) => {
|
|
|
.join('&')
|
|
.join('&')
|
|
|
if (query) url = url + separator + query
|
|
if (query) url = url + separator + query
|
|
|
}
|
|
}
|
|
|
|
|
+ var fullUrl = BASE_URL + url
|
|
|
const token = uni.getStorageSync('token')
|
|
const token = uni.getStorageSync('token')
|
|
|
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
return new Promise((resolve, reject) => {
|
|
|
uni.request({
|
|
uni.request({
|
|
|
- url: BASE_URL + url,
|
|
|
|
|
|
|
+ url: fullUrl,
|
|
|
method: method,
|
|
method: method,
|
|
|
data: data,
|
|
data: data,
|
|
|
header: {
|
|
header: {
|
|
@@ -51,6 +47,7 @@ const request = (url, method = 'POST', data = {}, options = {}) => {
|
|
|
},
|
|
},
|
|
|
success: (res) => {
|
|
success: (res) => {
|
|
|
if (res.statusCode === 401 || res.data.code === 401) {
|
|
if (res.statusCode === 401 || res.data.code === 401) {
|
|
|
|
|
+ console.warn('[API] 401 ' + method + ' ' + fullUrl)
|
|
|
_clearAuthAndRedirect()
|
|
_clearAuthAndRedirect()
|
|
|
reject(res.data)
|
|
reject(res.data)
|
|
|
return
|
|
return
|
|
@@ -58,6 +55,7 @@ const request = (url, method = 'POST', data = {}, options = {}) => {
|
|
|
if (res.data.code === 200) {
|
|
if (res.data.code === 200) {
|
|
|
resolve(res.data)
|
|
resolve(res.data)
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ console.warn('[API] 失败 ' + method + ' ' + fullUrl + ' code=' + res.data.code + ' msg=' + (res.data.message || ''))
|
|
|
uni.showToast({
|
|
uni.showToast({
|
|
|
title: res.data.message || '请求失败',
|
|
title: res.data.message || '请求失败',
|
|
|
icon: 'none'
|
|
icon: 'none'
|
|
@@ -66,6 +64,7 @@ const request = (url, method = 'POST', data = {}, options = {}) => {
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
fail: (err) => {
|
|
fail: (err) => {
|
|
|
|
|
+ console.error('[API] 网络错误 ' + method + ' ' + fullUrl, err)
|
|
|
uni.showToast({
|
|
uni.showToast({
|
|
|
title: '网络请求失败',
|
|
title: '网络请求失败',
|
|
|
icon: 'none'
|
|
icon: 'none'
|
|
@@ -126,7 +125,8 @@ const langgraphRequest = (opts) => {
|
|
|
var pageData = transform ? transform(lgData) : lgData
|
|
var pageData = transform ? transform(lgData) : lgData
|
|
|
resolve({ code: 200, message: 'ok', data: pageData })
|
|
resolve({ code: 200, message: 'ok', data: pageData })
|
|
|
},
|
|
},
|
|
|
- fail: () => {
|
|
|
|
|
|
|
+ fail: (err) => {
|
|
|
|
|
+ console.warn('[API] LangGraph不可达,回退Dify ' + LANGGRAPH_URL + langgraphPath, err)
|
|
|
// LangGraph 网络错误 → 回退 Dify
|
|
// LangGraph 网络错误 → 回退 Dify
|
|
|
_fallbackToDify(difyFallbackPath, difyFallbackMethod, difyFallbackData, difyFallbackOptions, resolve, reject)
|
|
_fallbackToDify(difyFallbackPath, difyFallbackMethod, difyFallbackData, difyFallbackOptions, resolve, reject)
|
|
|
}
|
|
}
|
|
@@ -951,10 +951,12 @@ export const uploadAndParseReport = (filePath) => {
|
|
|
if (data.code === 200) {
|
|
if (data.code === 200) {
|
|
|
resolve(data)
|
|
resolve(data)
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ console.warn('[API] 上传失败 ' + BASE_URL + '/api/growth/record/upload-and-parse' + ' code=' + data.code + ' msg=' + (data.message || ''))
|
|
|
reject(data)
|
|
reject(data)
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
fail: (err) => {
|
|
fail: (err) => {
|
|
|
|
|
+ console.error('[API] 上传网络错误 ' + BASE_URL + '/api/growth/record/upload-and-parse', err)
|
|
|
reject(err)
|
|
reject(err)
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
@@ -1838,10 +1840,14 @@ export const parseReportPreview = (filePath, childId, familyId, type) => {
|
|
|
if (data && data.code === 200) {
|
|
if (data && data.code === 200) {
|
|
|
resolve(data)
|
|
resolve(data)
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ console.warn('[API] 解析上传失败 ' + BASE_URL + '/api/health/report/parse-preview' + ' code=' + (data && data.code || '') + ' msg=' + (data && data.message || ''))
|
|
|
reject(data)
|
|
reject(data)
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- fail: (err) => { reject(err) }
|
|
|
|
|
|
|
+ fail: (err) => {
|
|
|
|
|
+ console.error('[API] 解析上传网络错误 ' + BASE_URL + '/api/health/report/parse-preview', err)
|
|
|
|
|
+ reject(err)
|
|
|
|
|
+ }
|
|
|
})
|
|
})
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
@@ -2092,10 +2098,14 @@ export const danParsePreview = (filePath, dimension, memberId) => {
|
|
|
if (data && data.code === 200) {
|
|
if (data && data.code === 200) {
|
|
|
resolve(data)
|
|
resolve(data)
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ console.warn('[API] DAN上传失败 ' + BASE_URL + '/api/dan-assessment/report/parse-preview' + ' code=' + (data && data.code || '') + ' msg=' + (data && data.message || ''))
|
|
|
reject(data || { message: '解析失败' })
|
|
reject(data || { message: '解析失败' })
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
- fail: function(err) { reject(err) }
|
|
|
|
|
|
|
+ fail: function(err) {
|
|
|
|
|
+ console.error('[API] DAN上传网络错误 ' + BASE_URL + '/api/dan-assessment/report/parse-preview', err)
|
|
|
|
|
+ reject(err)
|
|
|
|
|
+ }
|
|
|
})
|
|
})
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|