Перед тем, как исправлять выгрузку скуд с глупым Gemini-Lite
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""
|
||||
===============================================================================
|
||||
FILE: services/text_reporter/service.py
|
||||
PROJECT: SCUD Orion AI (Unified Architecture)
|
||||
MODULE: services / text_reporter
|
||||
ROLE: Формирование текстовой сводки ИИ-аудитора для вывода в консоль и сохранения в MD.
|
||||
===============================================================================
|
||||
"""
|
||||
|
||||
from typing import Dict, Any, List
|
||||
|
||||
|
||||
def format_controlling_summary_markdown(
|
||||
target_date: str,
|
||||
metrics: Dict[str, Any],
|
||||
anomalies: List[Dict[str, Any]]
|
||||
) -> str:
|
||||
"""Генерирует Markdown-текст ежедневной сводки контроллинга."""
|
||||
lines = [
|
||||
f"**Сводка контроллинга СКУД и 1С:ЗУП на {target_date}**\n",
|
||||
f"- Всего сотрудников по штату: **{metrics['total_staff']}**",
|
||||
f"- Итого на работе (в офисе): **{metrics['working_in_office_count']}**",
|
||||
f"- Удаленная работа (из дома): **{metrics['remote_home_count']}**",
|
||||
f"- Официально отсутствуют: **{metrics['official_absent_count']}**",
|
||||
f"- Неизвестно (истинно неотмеченные): **{metrics['unknown_count']}** чел.",
|
||||
f"- Выявлено аномалий/конфликтов реестров: **{len(anomalies)}** шт.\n"
|
||||
]
|
||||
|
||||
# Блок аномалий
|
||||
lines.append(f"#### 🚨 Выявленные ИИ аномалии и конфликты источников ({len(anomalies)}):")
|
||||
if anomalies:
|
||||
for idx, a in enumerate(anomalies, 1):
|
||||
lines.append(f"{idx}. {a['fio']}: {a['description']}")
|
||||
else:
|
||||
lines.append("Конфликтов и аномалий реестров не обнаружено.")
|
||||
lines.append("")
|
||||
|
||||
# Блок неизвестных
|
||||
unknown_list = metrics.get("unknown_list", [])
|
||||
lines.append(f"#### ❓ Неизвестные случаи ({len(unknown_list)}):")
|
||||
if unknown_list:
|
||||
for idx, u in enumerate(unknown_list, 1):
|
||||
dept = u.get("Подразделение") or "—"
|
||||
pos = u.get("Должность") or "—"
|
||||
lines.append(f"{idx}. {u.get('fio_clean')} — {dept}, {pos}")
|
||||
else:
|
||||
lines.append("Все отсутствия подтверждены документами.")
|
||||
|
||||
return "\n".join(lines)
|
||||
Reference in New Issue
Block a user