Coverage for src / mysingle / core / audit / models.py: 0%

19 statements  

« prev     ^ index     » next       coverage.py v7.12.0, created at 2025-12-02 00:58 +0900

1from datetime import UTC, datetime 

2 

3from beanie import PydanticObjectId 

4from pydantic import Field 

5 

6from ..base.models import BaseTimeDoc 

7 

8 

9class AuditLog(BaseTimeDoc): 

10 """HTTP 요청/응답 감사 로그 문서. 

11 

12 Week 14 잔여 과제: 필드 확장(요청 페이로드 크기, 처리 소요시간, 응답 크기). 

13 기타 기본 컨텍스트 필드 포함. 

14 """ 

15 

16 # Who/Context 

17 user_id: PydanticObjectId | None = None 

18 service: str 

19 request_id: str | None = None 

20 trace_id: str | None = None 

21 

22 # Request 

23 method: str 

24 path: str 

25 ip: str | None = None 

26 user_agent: str | None = None 

27 req_bytes: int = 0 

28 

29 # Response 

30 status_code: int 

31 resp_bytes: int = 0 

32 

33 # Timing 

34 latency_ms: int = 0 

35 occurred_at: datetime = Field(default_factory=lambda: datetime.now(UTC)) 

36 

37 

38__all__ = ["AuditLog"]