2968484d2d
- Money.tsx (2260行→54行): 拆分为 money/ 子目录4个组件, React.lazy二级分割 - AIAssistant.tsx (2038行→63行): 拆分为 ai-assistant/ 子目录6个组件, React.lazy二级分割 - xlsx改为动态导入, OvertimeTab从345KB降至12.7KB - api-services.ts: 请求参数 any→Record<string,unknown> - 移除前端3处console.log残留 - 后端console替换为pino logger - 前后端未使用import/变量清理 - Zod schema验证: termination/platform/special-status/work-process - 新增 leave.routes.ts, acceptance-test.routes.ts - UI组件: PageGuide, QueryError, Stepper
29 lines
652 B
TypeScript
29 lines
652 B
TypeScript
import { AuthRequest } from './auth'
|
|
import prisma from '../lib/prisma'
|
|
import logger from '../lib/logger'
|
|
|
|
export async function auditLog(
|
|
req: AuthRequest,
|
|
action: string,
|
|
entity: string,
|
|
entityId?: string,
|
|
detail?: Record<string, unknown>,
|
|
) {
|
|
if (!req.user) return
|
|
try {
|
|
await prisma.auditLog.create({
|
|
data: {
|
|
orgId: req.user.orgId,
|
|
userId: req.user.id,
|
|
action,
|
|
entity,
|
|
entityId,
|
|
detail: detail ? JSON.parse(JSON.stringify(detail)) : undefined,
|
|
ip: req.ip,
|
|
},
|
|
})
|
|
} catch (err) {
|
|
logger.error({ err, action, entity, entityId }, 'Audit log error')
|
|
}
|
|
}
|