feat: 日聚合服务与命令 + 索引迁移打包(Task3 审查结论)
- refresh_daily:按上海自然日聚合 pv/uv/sessions/new_visitors,update_or_create 幂等 - refresh_stats 管理命令:回刷近 N 天(生产由 1Panel 每日 00:10 调度,见 Task 22) - 索引打包(0002):Event/VisitSession 增加 (site, 时间) 日聚合索引; 删 5 个冗余单列 FK 索引(Event.site/session、VisitSession.site/visitor、DailyStat.site), 保留 Event.visitor/Visitor.site;sqlite PRAGMA 实证级联索引完整、EXPLAIN 走新索引 - test_models:IntegrityError 断言收紧 + Site 级联删除测试 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# Generated by Django 5.2.17 on 2026-09-15 05:36
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('tracker', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='dailystat',
|
||||
name='site',
|
||||
field=models.ForeignKey(db_index=False, on_delete=django.db.models.deletion.CASCADE, related_name='daily_stats', to='tracker.site'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
name='session',
|
||||
field=models.ForeignKey(db_index=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='events', to='tracker.visitsession'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='event',
|
||||
name='site',
|
||||
field=models.ForeignKey(db_index=False, on_delete=django.db.models.deletion.CASCADE, related_name='events', to='tracker.site'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='visitsession',
|
||||
name='site',
|
||||
field=models.ForeignKey(db_index=False, on_delete=django.db.models.deletion.CASCADE, related_name='sessions', to='tracker.site'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='visitsession',
|
||||
name='visitor',
|
||||
field=models.ForeignKey(db_index=False, on_delete=django.db.models.deletion.CASCADE, related_name='sessions', to='tracker.visitor'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='event',
|
||||
index=models.Index(fields=['site', 'occurred_at'], name='event_site_id_f158ab_idx'),
|
||||
),
|
||||
migrations.AddIndex(
|
||||
model_name='visitsession',
|
||||
index=models.Index(fields=['site', 'started_at'], name='visit_sessi_site_id_73fae1_idx'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user