feat(admin): 完善审计访问上下文与后台布局

This commit is contained in:
Cheng Zhou
2026-07-09 17:10:42 +08:00
parent 1dc10f569d
commit 0bbc125806
20 changed files with 776 additions and 112 deletions
@@ -0,0 +1,62 @@
import uuid
import pytest
from app.core.request_context import (
RequestAuditContext,
reset_request_audit_context,
set_request_audit_context,
)
from app.crud.audit import log_action
class FakeAsyncSession:
def __init__(self) -> None:
self.added = None
self.flushed = False
def add(self, value) -> None:
self.added = value
async def flush(self) -> None:
self.flushed = True
@pytest.mark.asyncio
async def test_audit_log_action_captures_request_access_context():
context_token = set_request_audit_context(
RequestAuditContext(
client_ip="203.0.113.10",
user_agent="curl/8.1.2",
client_type="desktop",
client_version="1.2.3",
client_platform="macos",
build_channel="release",
build_commit="abcdef1",
)
)
db = FakeAsyncSession()
try:
log = await log_action(
db,
study_id=uuid.uuid4(),
entity_type="subject",
entity_id=uuid.uuid4(),
action="UPDATE_SUBJECT",
detail=None,
operator_id=uuid.uuid4(),
operator_role="PM",
auto_commit=False,
)
finally:
reset_request_audit_context(context_token)
assert db.added is log
assert db.flushed is True
assert log.client_ip == "203.0.113.10"
assert log.user_agent == "curl/8.1.2"
assert log.client_type == "desktop"
assert log.client_version == "1.2.3"
assert log.client_platform == "macos"
assert log.build_channel == "release"
assert log.build_commit == "abcdef1"