feat(scud): добавление таблицы scud_events_raw и сохранение детальной ленты проходов

This commit is contained in:
2026-09-07 18:25:06 +03:00
parent 17c960fa34
commit 6c9b131cf2
4 changed files with 114 additions and 15 deletions
+37 -1
View File
@@ -237,4 +237,40 @@ def delete_snapshots_by_date(date_str: str) -> int:
cursor.execute("DELETE FROM scud_logs WHERE log_date = ? OR snapshot_id LIKE ?", (date_str, f"%{date_str.replace('.', '')}%"))
cnt = cursor.rowcount
conn.commit()
return cnt
return cnt
def save_raw_events_to_db(df_raw_events: pd.DataFrame, date_str: str) -> int:
"""
Сохраняет ленту сырых физических проходов турникетов в таблицу scud_events_raw.
Перезаписывает сырые события за указанную дату для исключения дубликатов.
"""
if df_raw_events is None or df_raw_events.empty:
return 0
records = [
(
date_str,
str(r.get('TimeVal', '')),
int(r.get('HozOrgan', 0)),
str(r.get('Сотрудник', '')),
str(r.get('fio_clean', '')),
str(r.get('Подразделение', '')),
int(r.get('Event', 0)),
int(r.get('Mode', 0)),
str(r.get('Direction', 'OTHER'))
)
for _, r in df_raw_events.iterrows()
]
with get_connection() as conn:
cursor = conn.cursor()
cursor.execute("DELETE FROM scud_events_raw WHERE log_date = ?", (date_str,))
cursor.executemany("""
INSERT INTO scud_events_raw (
log_date, time_val, hoz_organ, fio, fio_clean,
department, event_code, mode, direction
)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
""", records)
conn.commit()
return len(records)