fix: normalize daily report layout for Telegram and UI

Ensure server line, compact spacing, and one user per row when ingesting
agent reports or sending SAC-generated daily reports.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-30 09:52:09 +10:00
parent eba2f0d15c
commit 2501ecc4fe
6 changed files with 223 additions and 22 deletions
+3 -5
View File
@@ -2,7 +2,6 @@
from __future__ import annotations
import html
import logging
import uuid
from collections import Counter
@@ -19,8 +18,10 @@ from app.models import Event, Host
from app.services.daily_report_format import (
RDP_BAN_TYPES,
SSH_BAN_TYPES,
body_to_report_html,
build_report_body,
enrich_stats_for_storage,
normalize_daily_report_details,
)
from app.services.ingest import ingest_event
from app.services.notify_dispatch import notify_daily_report
@@ -234,14 +235,11 @@ def _build_report_body_rdp(host: Host, stats: dict[str, Any], when_local: dateti
def _details_from_body(body: str, stats: dict[str, Any]) -> dict[str, Any]:
escaped = html.escape(body)
# UI (Vue) допускает div; для единообразия — обёртка без br (Telegram читает через sanitize)
report_html = f'<div class="agent-report">{escaped.replace(chr(10), "<br>")}</div>'
return {
"stats": stats,
"report_body": body,
"report_format": "plain",
"report_html": report_html,
"report_html": body_to_report_html(body),
"generated_by": "sac",
}