@ -1044,6 +1044,37 @@ def api_delete_experience(
return { " success " : True , " message " : " 经验已删除 " }
@router . get ( " /experiences/tag-stats " )
def api_get_experience_tag_stats (
db : Session = Depends ( get_analysis_db ) ,
) :
""" 按标签统计经验数量 """
from collections import Counter
experiences = db . query ( TradeExperience ) . all ( )
tag_counter = Counter ( )
for exp in experiences :
for tag in ( exp . tags or [ ] ) :
tag_counter [ tag ] + = 1
# 同时返回所有标签的定义信息
tags = db . query ( TradeTag ) . all ( )
tag_map = { t . name : { " id " : t . id , " category " : t . category , " is_preset " : t . is_preset } for t in tags }
data = [ ]
for name , count in tag_counter . most_common ( ) :
info = tag_map . get ( name , { } )
data . append ( {
" name " : name ,
" count " : count ,
" tag_id " : info . get ( " id " ) ,
" category " : info . get ( " category " , " custom " ) ,
" is_preset " : info . get ( " is_preset " , False ) ,
} )
return { " success " : True , " data " : data }
# ==================== AI 重新分析 ====================
class ReanalyzeRequest ( BaseModel ) :