feat(recommendations): 添加合约推荐提示信息以优化用户排查流程

在后端API中新增合约推荐为空时的提示信息,指导用户检查推荐服务和策略运行状态。前端组件更新以显示该提示,提升用户体验并帮助用户更有效地进行问题排查。此改动增强了系统的可用性与用户友好性。
This commit is contained in:
薇薇安 2026-02-25 11:02:18 +08:00
parent 9a720b9a19
commit 104cb63802
2 changed files with 19 additions and 2 deletions

View File

@ -366,7 +366,15 @@ async def get_recommendations(
# 限制返回数量
recommendations = recommendations[:limit]
# 合约推荐为空时给出排查提示(与现货独立:现货来自定时扫描,合约来自策略/推荐服务)
hint = None
if len(recommendations) == 0:
hint = (
"合约推荐来自策略扫描需信号强度≥5且方向明确才会写入。"
"若长期为空请检查1) 推荐服务(recommendations_main)或主策略(main)是否在运行;"
"2) 扫描日志中是否有「信号:N」≥5 的标的3) 是否有推荐被时间/价格偏离过滤掉(见 meta.dropped"
)
return {
"success": True,
"count": len(recommendations),
@ -384,6 +392,7 @@ async def get_recommendations(
"price_drift": dropped_drift,
"invalid": dropped_invalid,
},
"hint": hint,
},
"data": recommendations
}

View File

@ -22,7 +22,8 @@ function Recommendations() {
const [bookmarking, setBookmarking] = useState({}) // ID
const [ordering, setOrdering] = useState({}) // ID
const [marketType, setMarketType] = useState('futures') // 'futures' | 'spot'
const [recommendationMeta, setRecommendationMeta] = useState(null) // meta hint/dropped
// USDTUSDT
const getDefaultOrderSize = () => {
try {
@ -108,6 +109,7 @@ function Recommendations() {
const result = await api.getSpotRecommendations({ limit: 50 })
const data = result.data || []
setRecommendations(data)
setRecommendationMeta(null)
} else {
const params = { type: typeFilter }
if (typeFilter === 'bookmarked') {
@ -122,6 +124,7 @@ function Recommendations() {
const result = await api.getRecommendations(params)
const data = result.data || []
setRecommendations(data)
setRecommendationMeta(result.meta || null)
}
} catch (err) {
setError(err.message)
@ -541,6 +544,11 @@ function Recommendations() {
) : recommendations.length === 0 ? (
<div className="empty-state">
<p>暂无推荐记录</p>
{marketType === 'futures' && typeFilter === 'realtime' && recommendationMeta?.hint && (
<p style={{ marginTop: 10, fontSize: 13, color: '#666', maxWidth: 560, lineHeight: 1.5 }}>
{recommendationMeta.hint}
</p>
)}
<button className="btn-generate" onClick={handleGenerate}>
生成推荐
</button>