Merged in release/2026-02-27 (pull request #3091)

release/2026-02-27 - Final RR debug fix
This commit is contained in:
Dave Richer
2026-03-04 20:20:49 +00:00
3 changed files with 70 additions and 21 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -12,7 +12,7 @@ const { createRRCustomer } = require("./rr-customers");
const { ensureRRServiceVehicle } = require("./rr-service-vehicles");
const { classifyRRVendorError } = require("./rr-errors");
const { markRRExportSuccess, insertRRFailedExportLog } = require("./rr-export-logs");
const { withRRRequestXml } = require("./rr-log-xml");
const { withRRRequestXml, extractRRXmlPair } = require("./rr-log-xml");
const {
makeVehicleSearchPayloadFromJob,
ownersFromVinBlocks,
@@ -49,6 +49,21 @@ const resolveJobId = (explicit, payload, job) => explicit || payload?.jobId || j
*/
const resolveVin = ({ tx, job }) => tx?.jobData?.vin || job?.v_vin || null;
/**
* Add request/response XML to socket event payloads when available.
* @param rrObj
* @param payload
* @returns {*}
*/
const withRRXmlSocketPayload = (rrObj, payload = {}) => {
const { requestXml, responseXml } = extractRRXmlPair(rrObj);
return {
...payload,
...(requestXml ? { requestXml } : {}),
...(responseXml ? { responseXml } : {})
};
};
/**
* Sort vehicle owners first in the list, preserving original order otherwise.
* @param list
@@ -474,7 +489,14 @@ const registerRREvents = ({ socket, redisHelpers }) => {
);
try {
socket.emit("export-failed", { vendor: "rr", jobId: rid, error: error.message });
socket.emit(
"export-failed",
withRRXmlSocketPayload(error, {
vendor: "rr",
jobId: rid,
error: error.message
})
);
} catch {
//
}
@@ -870,9 +892,11 @@ const registerRREvents = ({ socket, redisHelpers }) => {
});
socket.emit("export-failed", {
vendor: "rr",
jobId: rid,
error: cls?.friendlyMessage || result?.error || "RR early RO creation failed",
...withRRXmlSocketPayload(result, {
vendor: "rr",
jobId: rid,
error: cls?.friendlyMessage || result?.error || "RR early RO creation failed"
}),
...cls
});
@@ -923,9 +947,11 @@ const registerRREvents = ({ socket, redisHelpers }) => {
try {
socket.emit("export-failed", {
vendor: "rr",
jobId: rid,
error: error.message,
...withRRXmlSocketPayload(error, {
vendor: "rr",
jobId: rid,
error: error.message
}),
...cls
});
socket.emit("rr-user-notice", { jobId: rid, ...cls });
@@ -1173,7 +1199,14 @@ const registerRREvents = ({ socket, redisHelpers }) => {
);
try {
socket.emit("export-failed", { vendor: "rr", jobId: rid, error: error.message });
socket.emit(
"export-failed",
withRRXmlSocketPayload(error, {
vendor: "rr",
jobId: rid,
error: error.message
})
);
} catch {
//
}
@@ -1538,9 +1571,11 @@ const registerRREvents = ({ socket, redisHelpers }) => {
});
socket.emit("export-failed", {
vendor: "rr",
jobId: rid,
error: cls?.friendlyMessage || result?.error || "RR export failed",
...withRRXmlSocketPayload(result, {
vendor: "rr",
jobId: rid,
error: cls?.friendlyMessage || result?.error || "RR export failed"
}),
...cls
});
@@ -1591,9 +1626,11 @@ const registerRREvents = ({ socket, redisHelpers }) => {
try {
socket.emit("export-failed", {
vendor: "rr",
jobId: rid,
error: error.message,
...withRRXmlSocketPayload(error, {
vendor: "rr",
jobId: rid,
error: error.message
}),
...cls
});
socket.emit("rr-user-notice", { jobId: rid, ...cls });
@@ -1725,9 +1762,11 @@ const registerRREvents = ({ socket, redisHelpers }) => {
});
socket.emit("export-failed", {
vendor: "rr",
jobId: rid,
error: cls?.friendlyMessage || finalizeResult?.error || "RR finalize failed",
...withRRXmlSocketPayload(finalizeResult, {
vendor: "rr",
jobId: rid,
error: cls?.friendlyMessage || finalizeResult?.error || "RR finalize failed"
}),
...cls
});
ack?.({ ok: false, error: cls.friendlyMessage || "RR finalize failed", classification: cls });
@@ -1770,7 +1809,17 @@ const registerRREvents = ({ socket, redisHelpers }) => {
});
try {
socket.emit("export-failed", { vendor: "rr", jobId: rid, error: error.message, ...cls });
socket.emit(
"export-failed",
{
...withRRXmlSocketPayload(error, {
vendor: "rr",
jobId: rid,
error: error.message
}),
...cls
}
);
} catch {
//
}