feat: 同步报销流程与工作台改动
This commit is contained in:
@@ -147,3 +147,52 @@ def test_system_dashboard_service_aggregates_real_runtime_metrics() -> None:
|
||||
assert dashboard.accuracy_comparison["wrong"][
|
||||
dashboard.accuracy_comparison["categories"].index("异常诊断")
|
||||
] == 1
|
||||
|
||||
|
||||
def test_system_dashboard_counts_online_users_from_active_sessions_across_window() -> None:
|
||||
now = datetime.now(UTC)
|
||||
|
||||
with build_session() as db:
|
||||
db.add_all(
|
||||
[
|
||||
UserSessionMetric(
|
||||
session_id="session-online-old-001",
|
||||
username="active.user@example.com",
|
||||
display_name="在线用户",
|
||||
email="active.user@example.com",
|
||||
login_at=now - timedelta(days=2),
|
||||
last_activity_at=now - timedelta(days=2),
|
||||
activity_event_count=3,
|
||||
status="active",
|
||||
),
|
||||
UserSessionMetric(
|
||||
session_id="session-online-old-002",
|
||||
username="active.user@example.com",
|
||||
display_name="在线用户",
|
||||
email="active.user@example.com",
|
||||
login_at=now - timedelta(minutes=15),
|
||||
last_activity_at=now - timedelta(minutes=15),
|
||||
activity_event_count=5,
|
||||
status="active",
|
||||
),
|
||||
UserSessionMetric(
|
||||
session_id="session-closed-outside-window",
|
||||
username="offline.user@example.com",
|
||||
display_name="离线用户",
|
||||
email="offline.user@example.com",
|
||||
login_at=now - timedelta(days=3),
|
||||
logout_at=now - timedelta(days=2, hours=23),
|
||||
duration_ms=60 * 60 * 1000,
|
||||
status="closed",
|
||||
),
|
||||
]
|
||||
)
|
||||
db.commit()
|
||||
|
||||
dashboard = SystemDashboardService(db).build_dashboard(days=1)
|
||||
login_users = dashboard.login_wave["loginUsers"]
|
||||
|
||||
assert dashboard.totals["onlineUsers"] == 1
|
||||
assert max(login_users) == 1
|
||||
assert "00:00" in dashboard.login_wave["labels"]
|
||||
assert "23:00" in dashboard.login_wave["labels"]
|
||||
|
||||
Reference in New Issue
Block a user