Merge pull request 'PO bewegt sich nicht mehr faelschlich fuer Agenten-eigene wip-Wechsel' (#33) from fds2610-bot/monitor:main into main
Reviewed-on: https://codeberg.org/fds2610/monitor/pulls/33
This commit is contained in:
commit
edf71d1892
2 changed files with 27 additions and 5 deletions
|
|
@ -624,9 +624,17 @@ export const PO_DISPLAY_NAME = "PO";
|
|||
// und damit Sache des PO.
|
||||
const PO_UNASSIGNED_EXCLUDED_COLUMNS = new Set(["fertig", "done"]);
|
||||
|
||||
// Issue #32: Wechsel von/zu "in_arbeit" (Label "wip") setzt bzw. entfernt der Agent selbst, der
|
||||
// das Ticket nimmt bzw. abgibt - er meldet diese Bewegung ueber seinen eigenen state (POST
|
||||
// /api/v1/agents/{id}/activity, siehe resolveAgentVisualState()), nicht der PO. Ohne diesen
|
||||
// Ausschluss lief bislang faelschlich zusaetzlich der PO zum Board, sobald ein Agent ein Ticket
|
||||
// nahm oder abgab.
|
||||
const AGENT_OWNED_COLUMN = "in_arbeit";
|
||||
|
||||
/**
|
||||
* Erkennt Ticket-Statuswechsel, die keiner Rolle zugeordnet sind (Gegenstueck zu
|
||||
* detectDoorVisits() fuer die bereits zugeordneten Faelle). Neu angelegte Tickets zaehlen hier
|
||||
* detectDoorVisits() fuer die bereits zugeordneten Faelle, sowie zu den vom Agenten selbst
|
||||
* gemeldeten "in_arbeit"-Wechseln, siehe AGENT_OWNED_COLUMN). Neu angelegte Tickets zaehlen hier
|
||||
* nicht mit - die sind bereits Sache von detectDoorVisits()/NEW_BACKLOG_TICKET.
|
||||
*
|
||||
* @param {Array<{id: number, column_name: string}>} previousTickets
|
||||
|
|
@ -645,6 +653,9 @@ export function detectUnassignedTicketChanges(previousTickets = [], currentTicke
|
|||
if (PO_UNASSIGNED_EXCLUDED_COLUMNS.has(ticket.column_name)) {
|
||||
continue;
|
||||
}
|
||||
if (before.column_name === AGENT_OWNED_COLUMN || ticket.column_name === AGENT_OWNED_COLUMN) {
|
||||
continue;
|
||||
}
|
||||
changes.push({ ticketId: ticket.id, column: ticket.column_name });
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -551,6 +551,20 @@ test("detectUnassignedTicketChanges ignoriert Tickets ohne Spaltenwechsel", () =
|
|||
assert.deepEqual(detectUnassignedTicketChanges(before, after), []);
|
||||
});
|
||||
|
||||
test("detectUnassignedTicketChanges ignoriert Wechsel von/zu in_arbeit (Label wip - Sache des Agenten, Issue #32)", () => {
|
||||
const before = [
|
||||
{ id: 1, column_name: "bereit" },
|
||||
{ id: 2, column_name: "in_arbeit" },
|
||||
{ id: 3, column_name: "in_arbeit" },
|
||||
];
|
||||
const after = [
|
||||
{ id: 1, column_name: "in_arbeit" },
|
||||
{ id: 2, column_name: "testing" },
|
||||
{ id: 3, column_name: "backlog" },
|
||||
];
|
||||
assert.deepEqual(detectUnassignedTicketChanges(before, after), []);
|
||||
});
|
||||
|
||||
test("detectUnassignedTicketChanges verarbeitet mehrere gleichzeitige Wechsel", () => {
|
||||
const before = [
|
||||
{ id: 1, column_name: "backlog" },
|
||||
|
|
@ -562,10 +576,7 @@ test("detectUnassignedTicketChanges verarbeitet mehrere gleichzeitige Wechsel",
|
|||
{ id: 2, column_name: "in_arbeit" },
|
||||
{ id: 3, column_name: "fertig" },
|
||||
];
|
||||
assert.deepEqual(detectUnassignedTicketChanges(before, after), [
|
||||
{ ticketId: 1, column: "bereit" },
|
||||
{ ticketId: 2, column: "in_arbeit" },
|
||||
]);
|
||||
assert.deepEqual(detectUnassignedTicketChanges(before, after), [{ ticketId: 1, column: "bereit" }]);
|
||||
});
|
||||
|
||||
test("advancePoVisitStage durchlaeuft alle Stages und liefert am Ende null", () => {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue