FEAT: Add lookback days configuration for responsible users in ticket repository
All checks were successful
Deploy Production / deploy (push) Successful in 17s

This commit is contained in:
Rafael Alves Lopes 2026-05-04 11:14:05 -03:00
parent a7aba2f665
commit 495b32a6a4
3 changed files with 25 additions and 1 deletions

View File

@ -32,6 +32,7 @@ HUBSOFT_MUNDIALE_USER_ID=248
HUBSOFT_IMPLANTACAO_RESPONSAVEL_USER_IDS=142
HUBSOFT_CANCELAMENTO_RESPONSAVEL_USER_IDS=142
HUBSOFT_TITULARIDADE_RESPONSAVEL_USER_IDS=142
HUBSOFT_RESPONSAVEL_LOOKBACK_DAYS=365
# ==============================================================================
# BANCO DE DADOS INTERMEDIÁRIO - HUBGLPI (PostgreSQL - Desenvolvimento)

View File

@ -7,6 +7,7 @@ async function getTicketsByTipo({
tipoAtendimento,
usuarioAbertura = null,
usuariosResponsaveisIds = null,
lookbackDays = null,
watermark = null
}) {
try {
@ -99,7 +100,12 @@ async function getTicketsByTipo({
params.push(responsibleUserIds);
}
if (watermark) {
const lookbackDaysNumber = normalizePositiveInteger(lookbackDays);
if (responsibleUserIds.length && lookbackDaysNumber) {
query += ` AND a.data_cadastro >= NOW() - ($${paramIndex++}::int * INTERVAL '1 day')`;
params.push(lookbackDaysNumber);
} else if (watermark) {
query += ` AND a.data_cadastro > $${paramIndex++}`;
params.push(watermark);
}
@ -119,6 +125,11 @@ function normalizeUserIds(values) {
.filter(Number.isInteger);
}
function normalizePositiveInteger(value) {
const number = Number(value);
return Number.isInteger(number) && number > 0 ? number : null;
}
async function getTicketsClosedSince(thresholdDate) {
try {

View File

@ -29,6 +29,10 @@ const TYPES = Object.freeze({
TITULARIDADE: 60
});
const RESPONSAVEL_LOOKBACK_DAYS = parsePositiveIntegerEnv(
process.env.HUBSOFT_RESPONSAVEL_LOOKBACK_DAYS,
365
);
async function getMundialeTickets(watermark) {
return hubsoftTicketsRepo.getTicketsByTipo({
@ -45,6 +49,7 @@ async function getImplantacaoTickets(watermark) {
process.env.HUBSOFT_IMPLANTACAO_RESPONSAVEL_USER_IDS,
[142]
),
lookbackDays: RESPONSAVEL_LOOKBACK_DAYS,
watermark
});
}
@ -56,6 +61,7 @@ async function getCancelamentoTickets(watermark) {
process.env.HUBSOFT_CANCELAMENTO_RESPONSAVEL_USER_IDS,
[142]
),
lookbackDays: RESPONSAVEL_LOOKBACK_DAYS,
watermark
});
}
@ -74,6 +80,7 @@ async function getTrocaTTickets(watermark) {
process.env.HUBSOFT_TITULARIDADE_RESPONSAVEL_USER_IDS,
[142]
),
lookbackDays: RESPONSAVEL_LOOKBACK_DAYS,
watermark
});
}
@ -153,6 +160,11 @@ function parseCsvNumberEnv(value, fallback = []) {
return parsed.length ? parsed : fallback;
}
function parsePositiveIntegerEnv(value, fallback) {
const parsed = Number(value);
return Number.isInteger(parsed) && parsed > 0 ? parsed : fallback;
}
module.exports = {
// watermark