You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iTi-Flask/docs/AUDIT.md

1.5 KiB

审计

iTi-Flask 只提供审计事件工具和异步发送器。 它不写 sys_log

sys_log 由注册了 iti-system 的业务项目接收并入库。

配置

class DevConfig(BaseDevConfig):
    def __init__(self) -> None:
        super().__init__()
        self.audit_enabled = True
        self.audit_service_name = "audit"
        self.services = {
            "audit": {
                "base_url": "http://business-app.local",
                "token": "change-me",
            }
        }

接收方需要把同一个 token 配进 service_tokens

self.service_tokens = {"internal": "change-me"}

操作日志

业务显式提供 before / after 快照。 框架负责 diff、脱敏和异步发送。

from fastapi import Request
from iti.audit import audit_operation


def update_order(order_id: str, request: Request):
    before = {"qty": 1}
    after = {"qty": 2}
    audit_operation(
        request,
        title="修改生产订单",
        target_type="mo",
        target_id=order_id,
        before=before,
        after=after,
    )

登录日志

系统包登录接口已调用 audit_login()。 普通业务项目如需自定义登录,也使用同一个工具。

from iti.audit import audit_login


def login(request):
    audit_login(request, success=True, desc="admin")

接收入口

iti-system 提供:

POST /internal/audit/events
POST /internal/audit/login
POST /internal/audit/operation

这些接口使用框架服务 token 鉴权。