fix(avatar): ground replies in recognized images
This commit is contained in:
@@ -363,6 +363,54 @@ async def test_followup_text_recovers_recent_image_recorded_without_task(service
|
||||
db.close()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_explicit_followup_reuses_handled_image_within_two_days(service_context):
|
||||
session_factory, service, boxim, clock = service_context
|
||||
await service.poll_and_process_messages()
|
||||
image_message = {
|
||||
"id": 116,
|
||||
"localId": 116,
|
||||
"sendId": 200,
|
||||
"recvId": 100,
|
||||
"sendTime": clock.millis(),
|
||||
"type": 1,
|
||||
"content": json.dumps({"originUrl": "https://cdn.example/handled-case.png"}),
|
||||
}
|
||||
boxim.messages.append(image_message)
|
||||
await service.poll_messages()
|
||||
|
||||
db = session_factory()
|
||||
try:
|
||||
image_task = db.query(TakeoverReplyTask).filter_by(trigger_message_id="116").one()
|
||||
image_task.status = "sent"
|
||||
image_task.sent_at = clock.now()
|
||||
db.commit()
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
clock.advance(47 * 60 * 60)
|
||||
boxim.messages.append(
|
||||
{
|
||||
"id": 117,
|
||||
"localId": 117,
|
||||
"sendId": 200,
|
||||
"recvId": 100,
|
||||
"sendTime": clock.millis(),
|
||||
"type": 0,
|
||||
"content": "重新看一下刚才那张病例图片",
|
||||
}
|
||||
)
|
||||
await service.poll_messages()
|
||||
|
||||
db = session_factory()
|
||||
try:
|
||||
task = db.query(TakeoverReplyTask).filter_by(trigger_message_id="117").one()
|
||||
assert task.source_message_ids == ["116", "117"]
|
||||
assert task.prompt == "请看看这张图片。\n重新看一下刚才那张病例图片"
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_invalid_image_message_is_recorded_but_not_scheduled(service_context):
|
||||
session_factory, service, boxim, clock = service_context
|
||||
|
||||
Reference in New Issue
Block a user