rrScratch3 - Progress Commit

This commit is contained in:
Dave
2025-11-28 14:41:00 -05:00
parent c1e3c08652
commit 827f1c2c40
6 changed files with 221 additions and 49 deletions

View File

@@ -90,11 +90,15 @@ const exportJobToRR = async (args) => {
const story = txEnvelope?.story ? String(txEnvelope.story).trim() : null;
const makeOverride = txEnvelope?.makeOverride ? String(txEnvelope.makeOverride).trim() : null;
// Optional RR OpCode segments coming from the FE (RRPostForm)
const opPrefix = txEnvelope?.opPrefix ?? txEnvelope?.op_prefix ?? null;
const opBase = txEnvelope?.opBase ?? txEnvelope?.op_base ?? null;
const opSuffix = txEnvelope?.opSuffix ?? txEnvelope?.op_suffix ?? null;
// RR-only extras
let rrCentersConfig = null;
let allocations = null;
let opCode = null;
// let taxCode = null;
// 1) Responsibility center config (for visibility / debugging)
try {
@@ -139,7 +143,15 @@ const exportJobToRR = async (args) => {
const resolvedBaseOpCode = resolveRROpCodeFromBodyshop(bodyshop);
const opCodeOverride = txEnvelope?.opCode || txEnvelope?.opcode || txEnvelope?.op_code || null;
let opCodeOverride = txEnvelope?.opCode || txEnvelope?.opcode || txEnvelope?.op_code || null;
// If the FE only sends segments, combine them here.
if (!opCodeOverride && (opPrefix || opBase || opSuffix)) {
const combined = `${opPrefix || ""}${opBase || ""}${opSuffix || ""}`.trim();
if (combined) {
opCodeOverride = combined;
}
}
if (opCodeOverride || resolvedBaseOpCode) {
opCode = String(opCodeOverride || resolvedBaseOpCode).trim() || null;
@@ -147,7 +159,10 @@ const exportJobToRR = async (args) => {
CreateRRLogEvent(socket, "SILLY", "RR OP config resolved", {
opCode,
baseFromConfig: resolvedBaseOpCode
baseFromConfig: resolvedBaseOpCode,
opPrefix,
opBase,
opSuffix
});
// Build RO payload for create.

View File

@@ -896,9 +896,26 @@ const registerRREvents = ({ socket, redisHelpers }) => {
}
});
socket.on("rr-calculate-allocations", async (jobid, cb) => {
// RR allocations preview (RR-only)
// Accepts either:
// - legacy: (jobid, cb)
// - new: ({ jobId, opCode, opPrefix, opBase, opSuffix }, cb)
socket.on("rr-calculate-allocations", async (payload, cb) => {
// Normalize arguments
const isObjectPayload = payload && typeof payload === "object";
const jobid = isObjectPayload ? payload.jobId || payload.jobid || payload.id : payload;
const opCodeFromClient =
isObjectPayload &&
(payload.opCode ||
payload.opcode ||
payload.op_code ||
(payload.opPrefix || payload.opBase || payload.opSuffix
? `${payload.opPrefix || ""}${payload.opBase || ""}${payload.opSuffix || ""}`.trim()
: null));
try {
CreateRRLogEvent(socket, "DEBUG", "rr-calculate-allocations: begin", { jobid });
CreateRRLogEvent(socket, "DEBUG", "rr-calculate-allocations: begin", { jobid, opCodeFromClient });
const raw = await RRCalculateAllocations(socket, jobid);
@@ -925,20 +942,24 @@ const registerRREvents = ({ socket, redisHelpers }) => {
jobAllocations = Array.isArray(ack.jobAllocations) ? ack.jobAllocations : [];
}
// Try to derive OpCode from bodyshop.rr_configuration.defaults; fall back to default
let opCode;
// Start with client-supplied OpCode (if any); fall back to defaults.
let opCode = opCodeFromClient || null;
try {
const { bodyshopId } = await getSessionOrSocket(redisHelpers, socket);
const bodyshop = await getBodyshopForSocket({ bodyshopId, socket });
// resolveRROpCodeFromBodyshop(bodyshop, existingOverride?)
opCode = resolveRROpCodeFromBodyshop(bodyshop, opCode);
CreateRRLogEvent(socket, "DEBUG", "rr-calculate-allocations: resolved OpCode", {
opCode
opCode,
opCodeFromClient
});
} catch (e) {
CreateRRLogEvent(socket, "WARN", "rr-calculate-allocations: bodyshop lookup failed, using default OpCode", {
error: e.message
CreateRRLogEvent(socket, "WARN", "rr-calculate-allocations: bodyshop lookup failed, using existing OpCode", {
error: e.message,
opCodeFromClient
});
}