fix(audit): убрано ограничение по дате — по умолчанию ВСЕ записи

- getAudit(): days=null → без фильтра WHERE по дате
- days передаётся только если явно выбран фильтр 30/90/365
- admin-audit.ejs: кнопка «Всё» (активна по умолчанию), заголовок «(всё время)»

v0.1.9 → v0.1.10
This commit is contained in:
2026-07-01 18:39:49 +04:00
parent 8dc7940318
commit fc5aa7ca09
5 changed files with 16 additions and 10 deletions
+2 -1
View File
@@ -43,7 +43,8 @@ function createAdminRouter({ generateCsrfToken } = {}) {
router.get('/audit', async (req, res) => {
try {
const companyId = req.query.companyId ? parseInt(req.query.companyId) : null;
const days = Math.min(Math.max(parseInt(req.query.days) || 365, 1), 365);
// days=null → все записи (без фильтра по дате)
const days = req.query.days ? Math.min(Math.max(parseInt(req.query.days), 1), 365) : null;
const page = Math.max(parseInt(req.query.page) || 1, 1);
const perPage = 100;
const result = await q.getAudit({ companyId, days, page, limit: perPage });
+1 -1
View File
@@ -8,7 +8,7 @@
// ═══════════════════════════════════════════════════════════════════════════════
module.exports = {
version: '0.1.9',
version: '0.1.10',
// ── IAM ──────────────────────────────────────────────────────────────────
iamUrl: process.env.V2_IAM_URL || 'https://auth-api.ngcloud.ru/api/v1/auth/user',
+8 -6
View File
@@ -266,15 +266,15 @@ async function logAudit(userEmail, companyId, action, oldValue, newValue, entryI
}
/**
* Журнал операций с фильтром по дате и пагинацией.
* Журнал операций с пагинацией и опциональным фильтром по дате.
* @param {Object} opts
* @param {number|null} opts.companyId — фильтр по компании (null = все)
* @param {number} opts.days — глубина в днях (по умолчанию 365)
* @param {number|null} opts.days — глубина в днях (null = без ограничения)
* @param {number} opts.page — страница (с 1)
* @param {number} opts.limit — записей на странице
* @returns {{ rows: Array, total: number }}
*/
async function getAudit({ companyId = null, days = 365, page = 1, limit = 100 } = {}) {
async function getAudit({ companyId = null, days = null, page = 1, limit = 100 } = {}) {
const offset = (page - 1) * limit;
const params = [];
@@ -283,9 +283,11 @@ async function getAudit({ companyId = null, days = 365, page = 1, limit = 100 }
where += ' WHERE a.company_id = $' + (params.length + 1);
params.push(companyId);
}
const dayParam = '$' + (params.length + 1);
where += (where ? ' AND' : ' WHERE') + ' a.created_at > NOW() - (' + dayParam + ' || \' days\')::INTERVAL';
params.push(String(days));
if (days) {
const dayParam = '$' + (params.length + 1);
where += (where ? ' AND' : ' WHERE') + ' a.created_at > NOW() - (' + dayParam + ' || \' days\')::INTERVAL';
params.push(String(days));
}
const limitIdx = params.length + 1;
const offsetIdx = params.length + 2;