fix(management): 回填CLI通话日并集——消息空窗日的通话不再漏(8天27条实测)
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -423,21 +423,35 @@ async def _cmd_employee_metrics(args: argparse.Namespace) -> int:
|
|||||||
try:
|
try:
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from app.db.models import MsgDailyStats
|
from app.db.models import MsgDailyStats, PhoneCall
|
||||||
from app.storage.employee_metrics import (
|
from app.storage.employee_metrics import (
|
||||||
recompute_call_days,
|
recompute_call_days,
|
||||||
recompute_metric_days,
|
recompute_metric_days,
|
||||||
)
|
)
|
||||||
|
from app.storage.summary import day_key
|
||||||
|
|
||||||
async with session_maker() as session:
|
async with session_maker() as session:
|
||||||
days = (
|
msg_days = (
|
||||||
await session.execute(sa.select(MsgDailyStats.day).distinct())
|
await session.execute(sa.select(MsgDailyStats.day).distinct())
|
||||||
).scalars().all()
|
).scalars().all()
|
||||||
rows = await recompute_metric_days(session, list(days))
|
# 宽表全走消息派生源,只算消息日。
|
||||||
calls = await recompute_call_days(session, list(days))
|
rows = await recompute_metric_days(session, list(msg_days))
|
||||||
|
# 通话日 = 消息日 ∪ 通话日:消息空窗日(节假日/同步缺口)的通话
|
||||||
|
# 也要进小表。start_call_time→上海日必须在 Python 侧走 day_key
|
||||||
|
# ——MySQL 会话时区是 UTC,SQL 日期函数会切错日。
|
||||||
|
call_ts = (
|
||||||
|
await session.execute(
|
||||||
|
sa.select(PhoneCall.start_call_time)
|
||||||
|
.where(PhoneCall.start_call_time.is_not(None))
|
||||||
|
.distinct()
|
||||||
|
)
|
||||||
|
).scalars().all()
|
||||||
|
call_days = sorted(set(msg_days) | {day_key(ts) for ts in call_ts})
|
||||||
|
calls = await recompute_call_days(session, call_days)
|
||||||
await session.commit()
|
await session.commit()
|
||||||
print(
|
print(
|
||||||
f"[employee-metrics] rebuilt {rows} wide rows, {calls} call rows"
|
f"[employee-metrics] rebuilt {rows} wide rows, {calls} call rows "
|
||||||
|
f"({len(call_days)} days)"
|
||||||
)
|
)
|
||||||
return 0
|
return 0
|
||||||
finally:
|
finally:
|
||||||
|
|||||||
Reference in New Issue
Block a user