Fix paired-room delivery role persistence
This commit is contained in:
@@ -979,6 +979,9 @@ describe('createMessageRuntime', () => {
|
|||||||
expect(agentRunner.runAgentProcess).toHaveBeenCalledTimes(1);
|
expect(agentRunner.runAgentProcess).toHaveBeenCalledTimes(1);
|
||||||
expect(lastAgentTimestamps[`${chatJid}:reviewer`]).toBe('41');
|
expect(lastAgentTimestamps[`${chatJid}:reviewer`]).toBe('41');
|
||||||
expect(saveState).toHaveBeenCalled();
|
expect(saveState).toHaveBeenCalled();
|
||||||
|
expect(db.createProducedWorkItem).toHaveBeenCalledWith(
|
||||||
|
expect.objectContaining({ delivery_role: 'reviewer' }),
|
||||||
|
);
|
||||||
expect(reviewerChannel.sendMessage).toHaveBeenCalledWith(
|
expect(reviewerChannel.sendMessage).toHaveBeenCalledWith(
|
||||||
chatJid,
|
chatJid,
|
||||||
'리뷰 확인 완료',
|
'리뷰 확인 완료',
|
||||||
@@ -1087,6 +1090,9 @@ describe('createMessageRuntime', () => {
|
|||||||
|
|
||||||
expect(result).toBe(true);
|
expect(result).toBe(true);
|
||||||
expect(agentRunner.runAgentProcess).toHaveBeenCalledTimes(1);
|
expect(agentRunner.runAgentProcess).toHaveBeenCalledTimes(1);
|
||||||
|
expect(db.createProducedWorkItem).toHaveBeenCalledWith(
|
||||||
|
expect.objectContaining({ delivery_role: 'owner' }),
|
||||||
|
);
|
||||||
expect(channel.sendMessage).toHaveBeenCalledWith(chatJid, '최종 정리 완료');
|
expect(channel.sendMessage).toHaveBeenCalledWith(chatJid, '최종 정리 완료');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -488,12 +488,16 @@ export function createMessageRuntime(deps: MessageRuntimeDeps): {
|
|||||||
deps.queue.closeStdin(chatJid, { runId, reason }),
|
deps.queue.closeStdin(chatJid, { runId, reason }),
|
||||||
deliverFinalText: async (text) => {
|
deliverFinalText: async (text) => {
|
||||||
try {
|
try {
|
||||||
|
const persistedDeliveryRole =
|
||||||
|
args.deliveryRole ??
|
||||||
|
args.forcedRole ??
|
||||||
|
(hasReviewerLease(chatJid) ? 'owner' : null);
|
||||||
const workItem = createProducedWorkItem({
|
const workItem = createProducedWorkItem({
|
||||||
group_folder: group.folder,
|
group_folder: group.folder,
|
||||||
chat_jid: chatJid,
|
chat_jid: chatJid,
|
||||||
agent_type:
|
agent_type:
|
||||||
args.forcedAgentType ?? group.agentType ?? 'claude-code',
|
args.forcedAgentType ?? group.agentType ?? 'claude-code',
|
||||||
delivery_role: args.deliveryRole ?? args.forcedRole ?? null,
|
delivery_role: persistedDeliveryRole,
|
||||||
start_seq: startSeq,
|
start_seq: startSeq,
|
||||||
end_seq: endSeq,
|
end_seq: endSeq,
|
||||||
result_payload: text,
|
result_payload: text,
|
||||||
@@ -837,6 +841,16 @@ export function createMessageRuntime(deps: MessageRuntimeDeps): {
|
|||||||
const pendingTask = hasReviewerLease(chatJid)
|
const pendingTask = hasReviewerLease(chatJid)
|
||||||
? getLatestOpenPairedTaskForChat(chatJid)
|
? getLatestOpenPairedTaskForChat(chatJid)
|
||||||
: null;
|
: null;
|
||||||
|
if (hasReviewerLease(chatJid) && openWorkItem.delivery_role == null) {
|
||||||
|
log.warn(
|
||||||
|
{
|
||||||
|
workItemId: openWorkItem.id,
|
||||||
|
chatJid,
|
||||||
|
pendingTaskStatus: pendingTask?.status ?? null,
|
||||||
|
},
|
||||||
|
'Paired-room delivery retry is missing a persisted delivery role; falling back to inferred routing',
|
||||||
|
);
|
||||||
|
}
|
||||||
const deliveryRole =
|
const deliveryRole =
|
||||||
openWorkItem.delivery_role ??
|
openWorkItem.delivery_role ??
|
||||||
(pendingTask ? resolveActiveRole(pendingTask.status) : 'owner');
|
(pendingTask ? resolveActiveRole(pendingTask.status) : 'owner');
|
||||||
|
|||||||
Reference in New Issue
Block a user