feat(api): A5 审计采集、检索与导出

AuditInterceptor 成功 / 失败双写 audit_logs(响应前 await、脱敏、sink 缺失退化 Pino);登录 / 权限 / 客户 / 字典 / 配置等既有动作补审计;审计列表 / 详情 / 动作目录 / 异步 CSV 导出 / HMAC 签名下载;分区维护与保留归档占位;OpenAPI 快照更新。
This commit is contained in:
Stev_Wang committed 2026-11-04 16:26:42 +08:00
1 parent 6215f204ce
commit 6bdda6ec62
44 files changed
+3845 -127

No files matched your search

+251 -13
View File
@@ -716,6 +716,26 @@ export interface paths {
patch: operations['DictsController_updateItem'];
trace?: never;
};
'/health': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/**
* 健康检查
* @description 真实检查 PostgreSQL 与 Redis;任一不可用返回 503 与统一错误体。
*/
get: operations['HealthController_check'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/system/configs': {
parameters: {
query?: never;
@@ -768,18 +788,117 @@ export interface paths {
patch?: never;
trace?: never;
};
'/health': {
'/api/v1/audit-logs': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/**
* 健康检查
* @description 真实检查 PostgreSQL 与 Redis;任一不可用返回 503 与统一错误体。
*/
get: operations['HealthController_check'];
/** 审计日志列表(多条件筛选 + 游标分页,稳定排序 occurred_at DESC, id DESC) */
get: operations['AuditController_list'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/audit-logs/actions': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** 审计动作目录(中文名 / 分类 / 对象类型,供筛选下拉) */
get: operations['AuditController_actions'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/audit-logs/export': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/** 创建审计导出任务(异步,立即返回 queued;导出本身写审计) */
post: operations['AuditController_createExport'];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/audit-logs/exports': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** 我的审计导出任务(按发起时间倒序) */
get: operations['AuditController_listExports'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/audit-logs/exports/{id}': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** 导出任务进度(status / progress / rowCount / fileSize / expiresAt) */
get: operations['AuditController_getExport'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/audit-logs/exports/{id}/download': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** 下载审计导出 CSV(短时效 HMAC 签名链接,无需登录) */
get: operations['AuditController_download'];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
'/api/v1/audit-logs/{id}': {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** 审计日志详情(before / after / changes / diff / trace / ip / ua) */
get: operations['AuditController_detail'];
put?: never;
post?: never;
delete?: never;
@@ -1853,6 +1972,33 @@ export interface operations {
};
};
};
HealthController_check: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description 全部依赖健康 */
200: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['HealthResponseDto'];
};
};
/** @description 依赖不可用(错误码 50002),details 内附各依赖检查结果 */
503: {
headers: {
[name: string]: unknown;
};
content?: never;
};
};
};
SystemConfigController_list: {
parameters: {
query?: never;
@@ -1921,7 +2067,7 @@ export interface operations {
};
};
};
HealthController_check: {
AuditController_list: {
parameters: {
query?: never;
header?: never;
@@ -1930,17 +2076,109 @@ export interface operations {
};
requestBody?: never;
responses: {
/** @description 全部依赖健康 */
200: {
headers: {
[name: string]: unknown;
};
content: {
'application/json': components['schemas']['HealthResponseDto'];
};
content?: never;
};
/** @description 依赖不可用(错误码 50002),details 内附各依赖检查结果 */
503: {
};
};
AuditController_actions: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
200: {
headers: {
[name: string]: unknown;
};
content?: never;
};
};
};
AuditController_createExport: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
201: {
headers: {
[name: string]: unknown;
};
content?: never;
};
};
};
AuditController_listExports: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
200: {
headers: {
[name: string]: unknown;
};
content?: never;
};
};
};
AuditController_getExport: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
200: {
headers: {
[name: string]: unknown;
};
content?: never;
};
};
};
AuditController_download: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
200: {
headers: {
[name: string]: unknown;
};
content?: never;
};
};
};
AuditController_detail: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
200: {
headers: {
[name: string]: unknown;
};