git-subtree-dir: coordenador git-subtree-mainline:facbe2e340git-subtree-split:ce7af94d55
29 lines
1.1 KiB
JavaScript
29 lines
1.1 KiB
JavaScript
// @requires normalize.js context.js hash.js
|
|
const candidatosBase = $('Code - Normalizar Candidatos Base').all().map((item) => item.json);
|
|
const contextRows = $input.all().map((item) => item.json);
|
|
|
|
function groupBy(rows, key) {
|
|
const map = {};
|
|
for (const row of rows) {
|
|
const k = String(row[key]);
|
|
if (!map[k]) map[k] = [];
|
|
map[k].push(row);
|
|
}
|
|
return map;
|
|
}
|
|
|
|
const followupRows = contextRows.filter((row) => row.tipo === 'followup');
|
|
const taskRows = contextRows.filter((row) => row.tipo === 'task');
|
|
|
|
const followupsByTicket = groupBy(followupRows, 'tickets_id');
|
|
const tasksByTicket = groupBy(taskRows, 'tickets_id');
|
|
|
|
return candidatosBase.map((base) => {
|
|
const idKey = String(base.id);
|
|
const followups = (followupsByTicket[idKey] || []).map((f) => ({ id: f.id, date: f.date, texto: f.texto }));
|
|
const tasks = (tasksByTicket[idKey] || []).map((t) => ({ id: t.id, date: t.date, status: t.status, texto: t.texto }));
|
|
const ticket = normalizeTicket(base, { followups, tasks });
|
|
const contextHash = buildContextFingerprint(ticket);
|
|
return { json: { ticket, contextHash } };
|
|
});
|