autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
52 lines (51 loc) • 1.7 kB
JavaScript
/**
* Audit Log API 路由
*
* 端点:
* GET /api/v1/audit — 查询审计日志
*/
import express from 'express';
import { getServiceContainer } from '../../injection/ServiceContainer.js';
const router = express.Router();
/**
* GET /api/v1/audit
* 查询审计日志,支持按 actor/action/result/时间范围过滤
*
* Query params:
* actor — 操作人过滤
* action — 操作类型过滤
* result — 结果过滤 (success|failure)
* startDate — 起始时间戳 (毫秒)
* endDate — 结束时间戳 (毫秒)
* limit — 返回条数上限 (默认 100, 最大 500)
*/
router.get('/', async (req, res) => {
try {
const container = getServiceContainer();
const auditStore = container.get('auditStore');
if (!auditStore) {
res.status(503).json({
success: false,
error: { code: 'SERVICE_UNAVAILABLE', message: 'AuditStore not available' },
});
return;
}
const limit = Math.min(Number(req.query.limit) || 100, 500);
const logs = auditStore.query({
actor: req.query.actor,
action: req.query.action,
result: req.query.result,
startDate: req.query.startDate ? Number(req.query.startDate) : undefined,
endDate: req.query.endDate ? Number(req.query.endDate) : undefined,
limit,
});
res.json({ success: true, data: { logs, total: logs.length } });
}
catch (err) {
res.status(500).json({
success: false,
error: { code: 'AUDIT_ERROR', message: err.message },
});
}
});
export default router;