From b9d109bd23e5d236264f1847b2985aa227bbaf61 Mon Sep 17 00:00:00 2001 From: tsygankoviva Date: Thu, 18 Jun 2026 16:42:41 +0300 Subject: [PATCH] =?UTF-8?q?AURORA-1096-back:=20=D0=BF=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=B8=D0=BB=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80?= =?UTF-8?q?=D1=8B=20=D0=B2=20=D0=B6=D1=83=D1=80=D0=BD=D0=B0=D0=BB=D0=B5=20?= =?UTF-8?q?=D0=B0=D1=83=D0=B4=D0=B8=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/src/api/v1/audit.py | 8 ++++++-- api/src/domain/schemas.py | 5 +++-- api/src/repository/auditlog_repository.py | 4 ++++ api/src/services/auditlog_service.py | 2 ++ api/tests/integration/test_projects_api_smoke.py | 1 + api/tests/unit/test_auditlog_service.py | 1 + 6 files changed, 17 insertions(+), 4 deletions(-) diff --git a/api/src/api/v1/audit.py b/api/src/api/v1/audit.py index 447af00..8041ecf 100644 --- a/api/src/api/v1/audit.py +++ b/api/src/api/v1/audit.py @@ -1,3 +1,5 @@ +from datetime import datetime + from fastapi import APIRouter, Depends, status from sqlalchemy.ext.asyncio import AsyncSession @@ -35,8 +37,10 @@ async def get_audit_logs( task_id=params.task_id, form_id=params.form_id, event_type=params.event_type, - date_from=params.date_from, - date_to=params.date_to, + event=params.event, + date_from=datetime.combine(params.date_from, datetime.min.time()) if params.date_from else None, + date_to=datetime.combine(params.date_to, datetime.max.time()) if params.date_to else None, ) + result = [audit_service.orm_log_to_response(log) for log in logs] return BaseListResponse(result=result, count=count) diff --git a/api/src/domain/schemas.py b/api/src/domain/schemas.py index 4a7ca57..261cba8 100644 --- a/api/src/domain/schemas.py +++ b/api/src/domain/schemas.py @@ -455,8 +455,9 @@ class AuditLogQueryParams(BaseModel): task_id: Optional[int] = Field(None, description="ID задачи") form_id: Optional[int] = Field(None, description="ID формы") event_type: Optional[str] = Field(None, description="Тип события") - date_from: Optional[datetime] = Field(None, description="Дата начала (ISO 8601)") - date_to: Optional[datetime] = Field(None, description="Дата окончания (ISO 8601)") + event: Optional[str] = Field(None, description="Cобытиу") + date_from: Optional[date] = Field(None, description="Дата начала (ISO 8601)") + date_to: Optional[date] = Field(None, description="Дата окончания (ISO 8601)") diff --git a/api/src/repository/auditlog_repository.py b/api/src/repository/auditlog_repository.py index 19f3363..1e3d3bc 100644 --- a/api/src/repository/auditlog_repository.py +++ b/api/src/repository/auditlog_repository.py @@ -39,6 +39,7 @@ class AuditLogRepository: task_id: int | None = None, form_id: int | None = None, event_type: str | None = None, + event: str | None = None, date_from: datetime | None = None, date_to: datetime | None = None, ) -> tuple[Iterable[AuditLog], int]: @@ -61,6 +62,9 @@ class AuditLogRepository: if event_type is not None: query = query.where(AuditLog.event_type == event_type) query_count = query_count.where(AuditLog.event_type == event_type) + if event is not None: + query = query.where(AuditLog.event == event) + query_count = query_count.where(AuditLog.event == event) if date_from is not None: query = query.where(AuditLog.event_dt >= date_from) query_count = query_count.where(AuditLog.event_dt >= date_from) diff --git a/api/src/services/auditlog_service.py b/api/src/services/auditlog_service.py index d8688de..ab1aae2 100644 --- a/api/src/services/auditlog_service.py +++ b/api/src/services/auditlog_service.py @@ -41,6 +41,7 @@ class AuditLogService: task_id: int | None = None, form_id: int | None = None, event_type: str | None = None, + event: str | None = None, date_from: datetime | None = None, date_to: datetime | None = None, ) -> tuple[Iterable[AuditLog], int]: @@ -60,6 +61,7 @@ class AuditLogService: event_type=event_type, date_from=date_from, date_to=date_to, + event=event, ) def _can_view_audit_logs(self, user: AppUser) -> bool: diff --git a/api/tests/integration/test_projects_api_smoke.py b/api/tests/integration/test_projects_api_smoke.py index fbcc973..dc21b78 100644 --- a/api/tests/integration/test_projects_api_smoke.py +++ b/api/tests/integration/test_projects_api_smoke.py @@ -65,6 +65,7 @@ def test_projects_write_smoke(client, admin_tokens, auth_headers): json={"line_id": line_id, "column": "q1.m1", "value": 100}, headers=auth_headers(admin_tokens), ) + assert upd_cell_response.status_code == 200 assert isinstance(upd_cell_response.json(), list) diff --git a/api/tests/unit/test_auditlog_service.py b/api/tests/unit/test_auditlog_service.py index 4de7c13..b7bae0e 100644 --- a/api/tests/unit/test_auditlog_service.py +++ b/api/tests/unit/test_auditlog_service.py @@ -58,6 +58,7 @@ async def test_get_all_allowed_for_admin(service_with_mock_repo, admin_user): event_type="form", date_from=None, date_to=None, + event=None, )