in index.js [202:232]
function generateDutyCycle({ dutyCycleHistory, triagers, components }) {
let { lastDutyDate, lastTriagePair } = getLastDutyCycle({ dutyCycleHistory })
let lastTriagerIdx = -1;
const triagerNames = Object.keys(triagers);
const componentNames = Object.keys(components);
if (!lastDutyDate || !Array.isArray(lastTriagePair) || lastTriagePair.length !== 2) {
console.warn('No existing duty cycle history. Generating first cycle.');
lastDutyDate = createDateString(getLastMonday(new Date()));
} else {
lastTriagerIdx = triagerNames.indexOf(lastTriagePair[1]);
if (lastTriagerIdx === -1) {
console.warn(`Unable to find triager named ${lastTriagePair[1]} in config. Starting over from first triager.`);
}
}
const nextTriagerIdx = (lastTriagerIdx + 1) % triagerNames.length;
const nextDutyDateMS = new Date(lastDutyDate).getTime() + CYCLE_LENGTH_MS;
const nextTriagePair = [triagerNames[nextTriagerIdx], triagerNames[(nextTriagerIdx +1 ) % triagerNames.length]];
const nextDutyDate = createDateString(new Date(nextDutyDateMS));
const firstComponentSet = selectRandom(componentNames, Math.floor(componentNames.length / 2));
const secondComponentSet = componentNames.filter(c => firstComponentSet.indexOf(c) === -1);
const dutyCycle = {};
dutyCycle[nextTriagePair[0]] = firstComponentSet;
dutyCycle[nextTriagePair[1]] = secondComponentSet;
return {
date: nextDutyDate,
dutyCycle
};
}