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_IMPLANTACAO_RESPONSAVEL_USER_IDS=142
HUBSOFT_CANCELAMENTO_RESPONSAVEL_USER_IDS=142 HUBSOFT_CANCELAMENTO_RESPONSAVEL_USER_IDS=142
HUBSOFT_TITULARIDADE_RESPONSAVEL_USER_IDS=142 HUBSOFT_TITULARIDADE_RESPONSAVEL_USER_IDS=142
HUBSOFT_RESPONSAVEL_LOOKBACK_DAYS=365
# ============================================================================== # ==============================================================================
# BANCO DE DADOS INTERMEDIÁRIO - HUBGLPI (PostgreSQL - Desenvolvimento) # BANCO DE DADOS INTERMEDIÁRIO - HUBGLPI (PostgreSQL - Desenvolvimento)

View File

@ -7,6 +7,7 @@ async function getTicketsByTipo({
tipoAtendimento, tipoAtendimento,
usuarioAbertura = null, usuarioAbertura = null,
usuariosResponsaveisIds = null, usuariosResponsaveisIds = null,
lookbackDays = null,
watermark = null watermark = null
}) { }) {
try { try {
@ -99,7 +100,12 @@ async function getTicketsByTipo({
params.push(responsibleUserIds); 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++}`; query += ` AND a.data_cadastro > $${paramIndex++}`;
params.push(watermark); params.push(watermark);
} }
@ -119,6 +125,11 @@ function normalizeUserIds(values) {
.filter(Number.isInteger); .filter(Number.isInteger);
} }
function normalizePositiveInteger(value) {
const number = Number(value);
return Number.isInteger(number) && number > 0 ? number : null;
}
async function getTicketsClosedSince(thresholdDate) { async function getTicketsClosedSince(thresholdDate) {
try { try {

View File

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