feat(video-analysis): 完成视频分析模块迭代任务

Bug 修复:
- T-019: 修复品牌API响应解析,正确解析 data[0].brand_name
- T-020: 添加品牌API Bearer Token认证

视频分析功能:
- T-021: SessionID池服务,从内部API获取Cookie列表
- T-022: SessionID自动重试,失效时自动切换重试
- T-023: 巨量云图API封装,支持超时和错误处理
- T-024: 视频分析数据接口 GET /api/v1/videos/{item_id}/analysis
- T-025: 数据库A3指标更新
- T-026: 视频分析前端页面,展示6大类25+指标

测试覆盖率:
- brand_api.py: 100%
- session_pool.py: 100%
- yuntu_api.py: 100%
- video_analysis.py: 99%

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
zfc
2026-01-28 17:51:35 +08:00
co-authored by Claude Opus 4.5
parent cdc364cb2a
commit f123f68be3
17 changed files with 2259 additions and 23 deletions
+55
View File
@@ -61,3 +61,58 @@ export const QUERY_PLACEHOLDER: Record<QueryType, string> = {
unique_id: '请输入达人unique_id,每行一个...',
nickname: '请输入达人昵称关键词...',
};
// 视频分析数据 (T-026)
export interface VideoAnalysisData {
base_info: {
item_id: string;
title: string | null;
video_url: string | null;
star_id: string;
star_unique_id: string;
star_nickname: string;
publish_time: string | null;
industry_name: string | null;
};
reach_metrics: {
total_show_cnt: number;
natural_show_cnt: number;
ad_show_cnt: number;
total_play_cnt: number;
natural_play_cnt: number;
ad_play_cnt: number;
effective_play_cnt: number;
};
a3_metrics: {
a3_increase_cnt: number;
ad_a3_increase_cnt: number;
natural_a3_increase_cnt: number;
};
search_metrics: {
after_view_search_uv: number;
after_view_search_pv: number;
brand_search_uv: number;
product_search_uv: number;
return_search_cnt: number;
};
cost_metrics_raw: {
cost: number;
natural_cost: number;
ad_cost: number;
};
cost_metrics_calculated: {
cpm: number | null;
natural_cpm: number | null;
cpa3: number | null;
natural_cpa3: number | null;
cp_search: number | null;
estimated_natural_search_uv: number | null;
natural_cp_search: number | null;
};
}
export interface VideoAnalysisResponse {
success: boolean;
data: VideoAnalysisData;
error?: string;
}