优化前端详情页面

This commit is contained in:
Qyir 2025-11-13 10:00:39 +08:00
parent 6dfcda492e
commit 5a1c14a080
2 changed files with 25 additions and 63 deletions

View File

@ -368,42 +368,19 @@ class DouyinAutoScheduler:
yesterday_rank = item["yesterday_data"].get("rank", 0) yesterday_rank = item["yesterday_data"].get("rank", 0)
rank_change = yesterday_rank - rank # 使用当前排名计数器 rank_change = yesterday_rank - rank # 使用当前排名计数器
# 🔍 从Rankings_management获取详细信息按日期和mix_name查询 # 🔍 从Rankings_management获取详细信息按mix_id查询因为管理数据库每个短剧只有一条记录
today_str = datetime.now().strftime('%Y-%m-%d') mix_id = video.get("mix_id", "").strip()
management_data = rankings_management_collection.find_one({ management_data = None
"mix_name": mix_name,
"$or": [ if mix_id:
{"created_at": {"$gte": datetime.strptime(today_str, '%Y-%m-%d'), # 直接按mix_id查询不需要按日期查询
"$lt": datetime.strptime(today_str, '%Y-%m-%d') + timedelta(days=1)}}, management_data = rankings_management_collection.find_one({"mix_id": mix_id})
{"last_updated": {"$gte": datetime.strptime(today_str, '%Y-%m-%d'), if management_data:
"$lt": datetime.strptime(today_str, '%Y-%m-%d') + timedelta(days=1)}} logging.info(f"📋 从 Rankings_management 获取数据: {mix_name} (mix_id: {mix_id})")
]
})
# 🔑 如果今天没有数据,查询昨天的 Rankings_management仅用于获取分类字段和锁定状态
classification_data = None
if not management_data:
# 查询昨天的 Rankings_management
yesterday_start = datetime.strptime(yesterday_str, '%Y-%m-%d')
yesterday_end = yesterday_start + timedelta(days=1)
classification_data = rankings_management_collection.find_one({
"mix_name": mix_name,
"$or": [
{"created_at": {"$gte": yesterday_start, "$lt": yesterday_end}},
{"last_updated": {"$gte": yesterday_start, "$lt": yesterday_end}}
]
})
if classification_data:
novel_ids = classification_data.get('Novel_IDs', [])
anime_ids = classification_data.get('Anime_IDs', [])
drama_ids = classification_data.get('Drama_IDs', [])
logging.info(f"📋 今天没有数据,从昨天的 Rankings_management 获取分类: {mix_name}")
logging.info(f" - Novel_IDs: {novel_ids}")
logging.info(f" - Anime_IDs: {anime_ids}")
logging.info(f" - Drama_IDs: {drama_ids}")
logging.info(f" - last_updated: {classification_data.get('last_updated')}")
else: else:
logging.warning(f"⚠️ 今天和昨天都没有数据: {mix_name}") logging.warning(f"⚠️ 未找到管理数据: {mix_name} (mix_id: {mix_id})")
else:
logging.warning(f"⚠️ mix_id 为空: {mix_name}")
ranking_item = { ranking_item = {
# 🎯 核心榜单字段 # 🎯 核心榜单字段
@ -435,35 +412,20 @@ class DouyinAutoScheduler:
"realtime_saved": management_data.get("realtime_saved", True) if management_data else True, "realtime_saved": management_data.get("realtime_saved", True) if management_data else True,
"created_at": management_data.get("created_at") if management_data else None, "created_at": management_data.get("created_at") if management_data else None,
"last_updated": management_data.get("last_updated") if management_data else None, "last_updated": management_data.get("last_updated") if management_data else None,
# 🎬 评论总结字段 # 🎬 评论总结字段直接从管理数据库获取按mix_id查询
"comments_summary": management_data.get("comments_summary", "") if management_data else "", "comments_summary": management_data.get("comments_summary", "") if management_data else "",
# 🔑 分类字段:区分今天数据和历史数据 # 🔑 分类字段直接从管理数据库获取按mix_id查询每个短剧只有一条记录
# - 如果今天有数据:从今天的数据获取所有字段 "Manufacturing_Field": management_data.get("Manufacturing_Field", "") if management_data else "",
# - 如果今天没有数据:只从历史记录获取分类字段和锁定状态,其他字段为空 "Copyright_field": management_data.get("Copyright_field", "") if management_data else "",
# 注意:使用 .get() 的第二个参数确保即使字段不存在也会返回空字符串 "classification_type": management_data.get("classification_type", "") if management_data else "",
"Manufacturing_Field": (management_data.get("Manufacturing_Field", "") if management_data else "") or "", "release_date": management_data.get("release_date", "") if management_data else "",
"Copyright_field": (management_data.get("Copyright_field", "") if management_data else "") or "", "Novel_IDs": management_data.get("Novel_IDs", []) if management_data else [],
"classification_type": (management_data.get("classification_type", "") if management_data else "") or "", # 新增:类型/元素(确保字段存在) "Anime_IDs": management_data.get("Anime_IDs", []) if management_data else [],
"release_date": (management_data.get("release_date", "") if management_data else "") or "", # 新增:上线日期(确保字段存在) "Drama_IDs": management_data.get("Drama_IDs", []) if management_data else [],
"Novel_IDs": (
management_data.get("Novel_IDs", []) if management_data
else (classification_data.get("Novel_IDs", []) if classification_data else [])
),
"Anime_IDs": (
management_data.get("Anime_IDs", []) if management_data
else (classification_data.get("Anime_IDs", []) if classification_data else [])
),
"Drama_IDs": (
management_data.get("Drama_IDs", []) if management_data
else (classification_data.get("Drama_IDs", []) if classification_data else [])
),
# 🔒 锁定状态:同样区分今天数据和历史数据 # 🔒 锁定状态:直接从管理数据库获取
"field_lock_status": ( "field_lock_status": management_data.get("field_lock_status", {}) if management_data else {},
management_data.get("field_lock_status", {}) if management_data
else (classification_data.get("field_lock_status", {}) if classification_data else {})
),
# 📊 时间轴对比数据(重要:包含播放量差值) # 📊 时间轴对比数据(重要:包含播放量差值)
"timeline_data": { "timeline_data": {

View File

@ -253,12 +253,12 @@ onMounted(() => {
.card { .card {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
border-radius: 16px; border-radius: 0;
overflow: hidden; overflow: hidden;
background: #f3f4f6; background: #f3f4f6;
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08); box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
width: 100%; width: 100%;
max-width: 448px; max-width: 428px;
} }
.header { .header {