feat(analytics): 数据分析板块四新表+迁移——stat_daily_staff/敏感词三表/fetched_at 索引

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-04 15:04:33 +08:00
parent 81af615738
commit 565006239b
3 changed files with 264 additions and 0 deletions
@@ -0,0 +1,40 @@
"""新表建模冒烟:create_all 建表 + 唯一约束生效(迁移幂等由 alembic 链保证)。"""
from __future__ import annotations
import pytest
from sqlalchemy.exc import IntegrityError
from app.db.models import SensitiveHit, SensitiveWord
async def test_sensitive_word_unique(make_client):
async def seed(session):
session.add(SensitiveWord(word="私单", category="飞单"))
await session.flush()
# 同词二插必须撞 UNIQUE(word)
session.add(SensitiveWord(word="私单"))
with pytest.raises(IntegrityError):
await session.flush()
client = await make_client(seed)
r = await client.get("/api/health")
assert r.status_code == 200 # app boots with new models
async def test_hit_unique_word_msg(make_client):
async def seed(session):
w = SensitiveWord(word="私单")
session.add(w)
await session.flush()
session.add(
SensitiveHit(word_id=w.id, msg_id="m1", channel="wechat")
)
session.add(
SensitiveHit(word_id=w.id, msg_id="m1", channel="wechat")
)
with pytest.raises(IntegrityError):
await session.flush()
client = await make_client(seed)
r = await client.get("/api/health")
assert r.status_code == 200 # app boots with new models