优化前端详情页面
This commit is contained in:
parent
6dfcda492e
commit
5a1c14a080
@ -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": [
|
|
||||||
{"created_at": {"$gte": datetime.strptime(today_str, '%Y-%m-%d'),
|
|
||||||
"$lt": datetime.strptime(today_str, '%Y-%m-%d') + timedelta(days=1)}},
|
|
||||||
{"last_updated": {"$gte": datetime.strptime(today_str, '%Y-%m-%d'),
|
|
||||||
"$lt": datetime.strptime(today_str, '%Y-%m-%d') + timedelta(days=1)}}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
|
|
||||||
# 🔑 如果今天没有数据,查询昨天的 Rankings_management(仅用于获取分类字段和锁定状态)
|
if mix_id:
|
||||||
classification_data = None
|
# 直接按mix_id查询,不需要按日期查询
|
||||||
if not management_data:
|
management_data = rankings_management_collection.find_one({"mix_id": mix_id})
|
||||||
# 查询昨天的 Rankings_management
|
if management_data:
|
||||||
yesterday_start = datetime.strptime(yesterday_str, '%Y-%m-%d')
|
logging.info(f"📋 从 Rankings_management 获取数据: {mix_name} (mix_id: {mix_id})")
|
||||||
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": {
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user