feat: improve audit exports and admin analytics
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import UTC, date, datetime, time, timedelta
|
||||
from datetime import UTC, date, datetime, timedelta
|
||||
from io import BytesIO
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query, status
|
||||
@@ -18,6 +18,7 @@ from app.api.pagination import page_result
|
||||
from app.core.database import get_db
|
||||
from app.core.dependencies import get_current_admin, get_current_user
|
||||
from app.core.responses import api_success
|
||||
from app.core.time_utils import business_day_boundary, to_business_naive
|
||||
from app.models.admin import Admin
|
||||
from app.models.chat import ChatMessage, ChatSession
|
||||
from app.models.feedback import MessageFeedback
|
||||
@@ -136,9 +137,9 @@ def _feedback_query(read_status: str, start_date: date | None, end_date: date |
|
||||
if read_status != "all":
|
||||
query = query.where(MessageFeedback.is_read == (1 if read_status == "read" else 0))
|
||||
if start_date is not None:
|
||||
query = query.where(MessageFeedback.created_at >= datetime.combine(start_date, time.min))
|
||||
query = query.where(MessageFeedback.created_at >= business_day_boundary(start_date))
|
||||
if end_date is not None:
|
||||
query = query.where(MessageFeedback.created_at < datetime.combine(end_date + timedelta(days=1), time.min))
|
||||
query = query.where(MessageFeedback.created_at < business_day_boundary(end_date, end_exclusive=True))
|
||||
return query
|
||||
|
||||
|
||||
@@ -159,8 +160,8 @@ def _feedback_workbook(rows: list[tuple]) -> Workbook:
|
||||
_excel_safe_text(session.title),
|
||||
message.id,
|
||||
_excel_safe_text(ensure_ai_generated_notice(message.content)),
|
||||
feedback.created_at,
|
||||
feedback.read_at,
|
||||
to_business_naive(feedback.created_at),
|
||||
to_business_naive(feedback.read_at),
|
||||
])
|
||||
header_fill = PatternFill("solid", fgColor="1F6F5F")
|
||||
for cell in sheet[1]:
|
||||
|
||||
Reference in New Issue
Block a user