feat: 初始化项目结构并添加核心功能模块
- 新增文档模板和导航结构 - 实现服务器基础API路由和控制器 - 添加扩展插件配置和前端框架 - 引入多租户和权限管理模块 - 集成日志和数据库配置 - 添加核心业务模型和类型定义
This commit is contained in:
55
server/src/services/AuditWorker.ts
Normal file
55
server/src/services/AuditWorker.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import { Worker } from 'bullmq';
|
||||
import { logger } from '../utils/logger';
|
||||
import { AuditLogEntry } from './AuditService';
|
||||
import db from '../config/database';
|
||||
|
||||
/**
|
||||
* @description 审计日志异步处理 Worker (CORE_DEV_04)
|
||||
*/
|
||||
export const startAuditWorker = () => {
|
||||
const worker = new Worker('audit-log', async (job) => {
|
||||
const entry: AuditLogEntry = job.data;
|
||||
|
||||
try {
|
||||
// 1. 持久化到数据库 (V22.1)
|
||||
await db('cf_operation_log').insert({
|
||||
tenant_id: entry.tenantId,
|
||||
shop_id: entry.shopId,
|
||||
task_id: entry.taskId,
|
||||
trace_id: entry.traceId,
|
||||
user_id: entry.userId,
|
||||
role_code: entry.roleCode,
|
||||
module: entry.module,
|
||||
action: entry.action,
|
||||
resource_type: entry.resourceType,
|
||||
resource_id: entry.resourceId,
|
||||
before_snapshot: entry.beforeSnapshot ? JSON.stringify(entry.beforeSnapshot) : null,
|
||||
after_snapshot: entry.afterSnapshot ? JSON.stringify(entry.afterSnapshot) : null,
|
||||
result: entry.result,
|
||||
error_code: entry.errorCode,
|
||||
error_message: entry.errorMessage,
|
||||
client_ip: entry.clientIp,
|
||||
user_agent: entry.userAgent,
|
||||
source: entry.source,
|
||||
created_at: new Date(entry.timestamp)
|
||||
});
|
||||
|
||||
logger.info(`[AuditWorker] Successfully processed operation log: ${entry.action}`);
|
||||
} catch (err: any) {
|
||||
logger.error(`[AuditWorker] Failed to persist audit log: ${err.message}`);
|
||||
throw err; // 触发 BullMQ 的重试机制
|
||||
}
|
||||
}, {
|
||||
connection: {
|
||||
host: process.env.REDIS_HOST || '127.0.0.1',
|
||||
port: parseInt(process.env.REDIS_PORT || '6379'),
|
||||
},
|
||||
concurrency: 5 // 限制并发数
|
||||
});
|
||||
|
||||
worker.on('failed', (job, err) => {
|
||||
logger.error(`[AuditWorker] Job ${job?.id} failed: ${err.message}`);
|
||||
});
|
||||
|
||||
return worker;
|
||||
};
|
||||
Reference in New Issue
Block a user