From 55225366dc9bedb50d3ce8b5216b184d18de4c1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=95=E8=B0=B7=E9=85=B1?= Date: Mon, 15 Sep 2025 20:35:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E4=BF=AE=E5=A4=8D=E6=88=90?= =?UTF-8?q?=E5=B0=B1=E4=BA=8B=E4=BB=B6=E6=A0=BC=E5=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/database/events.py | 26 ++++++++++++++++++++++++-- tools/fix_achievement_event_payload.py | 0 2 files changed, 24 insertions(+), 2 deletions(-) delete mode 100644 tools/fix_achievement_event_payload.py diff --git a/app/database/events.py b/app/database/events.py index 2d346a6..890a021 100644 --- a/app/database/events.py +++ b/app/database/events.py @@ -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 diff --git a/tools/fix_achievement_event_payload.py b/tools/fix_achievement_event_payload.py deleted file mode 100644 index e69de29..0000000