ticket117: synchronie métier idea_ask_agent + corrélation task ↔ rendezvous
This commit is contained in:
@ -134,10 +134,33 @@ impl AgentWakeService {
|
||||
owner_agent_id: agent,
|
||||
});
|
||||
}
|
||||
drain_reply_stream_with_readiness(stream, self.input.as_ref(), key)
|
||||
let final_content = drain_reply_stream_with_readiness(stream, self.input.as_ref(), key)
|
||||
.await
|
||||
.map_err(|err| WakeError::Session(err.to_string()))?;
|
||||
|
||||
if let Some(task_id) = delivery.delivered_task_id {
|
||||
let task = self.load_task(task_id).await?;
|
||||
if let Some(link) = task.rendezvous.as_ref() {
|
||||
let still_waiting = self
|
||||
.tasks
|
||||
.list_open_for_agent(agent)
|
||||
.await
|
||||
.map_err(|err| WakeError::Store(err.to_string()))?
|
||||
.into_iter()
|
||||
.any(|open| {
|
||||
open.id != task_id
|
||||
&& open.rendezvous.as_ref().is_some_and(|open_link| {
|
||||
open_link.rendezvous_id == link.rendezvous_id
|
||||
})
|
||||
});
|
||||
if !still_waiting {
|
||||
self.mailbox
|
||||
.resolve_ticket(key, link.ticket_id, final_content)
|
||||
.map_err(|err| WakeError::Task(err.to_string()))?;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.mailbox.cancel_head(key, delivery.ticket_id);
|
||||
self.input.mark_idle(key);
|
||||
guard.disarm();
|
||||
|
||||
Reference in New Issue
Block a user