48 lines
1.9 KiB
Plaintext
48 lines
1.9 KiB
Plaintext
|
|
sequenceDiagram
|
||
|
|
autonumber
|
||
|
|
participant FE as 前端页面
|
||
|
|
participant API as admin.ts
|
||
|
|
participant RT as FastAPI Router
|
||
|
|
participant SVC as Service
|
||
|
|
participant DB as PostgreSQL
|
||
|
|
participant FS as 日志文件(RUNTIME_LOG_DIR)
|
||
|
|
|
||
|
|
Note over FE,FS: A 配置变更历史(带筛选)
|
||
|
|
FE->>API: getSystemLogs({config_key, changed_by, from, to, page, page_size})
|
||
|
|
API->>RT: GET /api/admin/system-logs?...
|
||
|
|
RT->>RT: require_admin()
|
||
|
|
RT->>SVC: get_system_logs(db, filters)
|
||
|
|
SVC->>DB: SELECT ConfigChangeLog WHERE ... ORDER changed_at DESC
|
||
|
|
SVC->>DB: JOIN agents 取 changed_by_name
|
||
|
|
DB-->>SVC: rows
|
||
|
|
SVC-->>RT: {items, total, page, page_size}
|
||
|
|
RT-->>FE: {code:0, data}
|
||
|
|
|
||
|
|
Note over FE,FS: B 安全审计日志(复用后端)
|
||
|
|
FE->>API: getAuditLogs({employee_id, action, resource, from, to, page, page_size})
|
||
|
|
API->>RT: GET /api/admin/audit-logs?...
|
||
|
|
RT->>RT: require_permission(audit_log:read:all)
|
||
|
|
RT->>SVC: list_audit_logs(db, filters)
|
||
|
|
SVC->>DB: SELECT AuditLog WHERE ...
|
||
|
|
DB-->>SVC: rows
|
||
|
|
SVC-->>RT: {items, total, page, page_size}
|
||
|
|
RT-->>FE: {code:0, data}
|
||
|
|
|
||
|
|
Note over FE,FS: D 运行期日志(列表)
|
||
|
|
FE->>API: getRuntimeLogs({level, from, to, keyword, page, page_size})
|
||
|
|
API->>RT: GET /api/admin/runtime-logs?...
|
||
|
|
RT->>RT: require_admin()
|
||
|
|
RT->>SVC: read_runtime_logs(RUNTIME_LOG_DIR, filters)
|
||
|
|
SVC->>FS: 读 *.log 逐行 json.loads
|
||
|
|
FS-->>SVC: 命中行
|
||
|
|
SVC-->>RT: {items, total, page, page_size}
|
||
|
|
RT-->>FE: {code:0, data}
|
||
|
|
|
||
|
|
Note over FE,FS: D 运行期日志(下载)
|
||
|
|
FE->>API: getRuntimeLogDownload({level, from, to, keyword})
|
||
|
|
API->>RT: GET /api/admin/runtime-logs?download=true
|
||
|
|
RT->>RT: require_admin()
|
||
|
|
RT->>SVC: build_runtime_log_stream(RUNTIME_LOG_DIR, filters)
|
||
|
|
SVC->>FS: 读 *.log 过滤行
|
||
|
|
RT-->>FE: StreamingResponse(text/plain, attachment)
|