feat(server): schema v2契约——session_resume白名单/Event归属与区间字段/会话resume_of/request_id

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-18 10:38:20 +08:00
parent 5881046a2d
commit d8999035c9
4 changed files with 96 additions and 3 deletions
+11
View File
@@ -69,6 +69,8 @@ class VisitSession(models.Model):
event_count = models.PositiveIntegerField(default=0)
duration_ms = models.PositiveBigIntegerField(default=0) # 会话内事件时间跨度
stay_ms = models.PositiveBigIntegerField(default=0) # 有效停留累计(page_stay active_ms 之和)
resume_of = models.ForeignKey("self", null=True, blank=True, on_delete=models.SET_NULL,
related_name="resumes") # schema v2:session_resume 续接的前一会话(被指向会话删除后置 NULL 保留链)
class Meta:
db_table = "visit_session"
@@ -99,6 +101,14 @@ class Event(models.Model):
city = models.CharField(max_length=64, blank=True, default="")
late = models.BooleanField(default=False)
is_bot = models.BooleanField(default=False)
# ---- schema v2(阶段A):旧行空 = legacy ----
page_id = models.CharField(max_length=64, blank=True, default="", db_index=True) # 埋点实例归属(spa 路由切换每页新 id)
active_from_ms = models.BigIntegerField(null=True, blank=True) # 活跃区间起(页面时间戳 ms)
active_to_ms = models.BigIntegerField(null=True, blank=True) # 活跃区间止
flush_reason = models.CharField(max_length=16, blank=True, default="") # periodic/hidden/unload/interval等
time_quality = models.CharField(max_length=16, blank=True, default="") # ok/adjusted/monotonic…(late 的补充细化)
sdk_version = models.CharField(max_length=16, blank=True, default="")
schema_version = models.PositiveSmallIntegerField(null=True, blank=True) # 事件级信(缺省为批级/1)
class Meta:
db_table = "event"
@@ -128,6 +138,7 @@ class RawBatch(models.Model):
status = models.CharField(max_length=16, default="accepted") # accepted/partial/rejected
received_at = models.DateTimeField(auto_now_add=True)
ip = models.GenericIPAddressField(null=True, blank=True)
request_id = models.CharField(max_length=64, blank=True, default="") # schema v2:批级请求标识(对账/去重排查)
class Meta:
db_table = "raw_batch"