临时修复成就事件格式问题

This commit is contained in:
咕谷酱
2025-09-15 20:35:44 +08:00
parent 0bfe4d3702
commit 55225366dc
2 changed files with 24 additions and 2 deletions

View File

@@ -57,6 +57,28 @@ class Event(UTCBaseModel, SQLModel, table=True):
"createdAt": self.created_at.replace(tzinfo=UTC).isoformat(),
"type": self.type.value,
}
for k, v in self.event_payload.items():
d[k] = v
# 临时修复:统一成就事件格式 (TODO: 可在数据迁移完成后移除)
if self.type == EventType.ACHIEVEMENT and "achievement" in self.event_payload:
achievement_data = self.event_payload["achievement"]
if (
"achievement_id" in achievement_data
and ("name" not in achievement_data or "slug" not in achievement_data)
):
from app.models.achievement import MEDALS
achievement_id = achievement_data["achievement_id"]
for medal in MEDALS:
if medal.id == achievement_id:
fixed_payload = dict(self.event_payload)
fixed_payload["achievement"] = {"name": medal.name, "slug": medal.assets_id}
for k, v in fixed_payload.items():
d[k] = v
return d
for k, v in self.event_payload.items():
d[k] = v
else:
for k, v in self.event_payload.items():
d[k] = v
return d