auto_agent/backend/tests/test_chat_demo.py
2521690 ce299cbb18 feat: 增加 Agent 演示入口与 app_metadata 驱动验证链路
- 新增 app_metadata 模型、仓储与服务
- 将默认 edge 验证步骤改为由 app_metadata 驱动生成
- 新增 chat_session / chat_message 会话层模型与 chat service
- 新增 demo chat API,支持会话创建、消息发送、任务确认
- 新增最小 Web Demo 页面,形成聊天式演示入口
- 增强任务报告,补充 audit_summary 与更细粒度 task_metrics
- 增强 edge-agent 执行器:tcp_probe、日志时间范围过滤、进程指标与更灵活健康检查
- 更新 README 与当前进度总结,MVP 进度推进到约 94%
2026-04-09 14:10:13 +08:00

51 lines
2.0 KiB
Python

import os
from fastapi.testclient import TestClient
os.environ["DATABASE_URL"] = "sqlite:///:memory:"
from app.main import app
def test_chat_session_and_message_flow() -> None:
with TestClient(app) as client:
create_session_response = client.post("/api/demo/chat/sessions", json={"tenant_id": "tenant-demo", "channel": "WEB"})
assert create_session_response.status_code == 200
session_payload = create_session_response.json()["data"]
session_id = session_payload["session_id"]
assert len(session_payload["messages"]) >= 1
assert len(session_payload["sample_prompts"]) >= 1
send_response = client.post(
f"/api/demo/chat/sessions/{session_id}/messages",
json={"content": "deploy order-service 1.2.3 to test", "context": {}},
)
assert send_response.status_code == 200
send_payload = send_response.json()["data"]
task_id = send_payload["task_id"]
assert send_payload["parsed_intent"]["app_code"] == "order-service"
assert send_payload["next_action"] == "CONFIRM_TASK"
confirm_response = client.post(
f"/api/demo/chat/sessions/{session_id}/tasks/{task_id}/confirm",
json={"comment": "from ui"},
)
assert confirm_response.status_code == 200
confirm_payload = confirm_response.json()["data"]
assert confirm_payload["task_id"] == task_id
assert confirm_payload["assistant_message"]["role"] == "assistant"
session_detail = client.get(f"/api/demo/chat/sessions/{session_id}")
assert session_detail.status_code == 200
session_detail_payload = session_detail.json()["data"]
assert session_detail_payload["last_task_id"] == task_id
assert len(session_detail_payload["messages"]) >= 4
def test_demo_chat_page_exists() -> None:
with TestClient(app) as client:
response = client.get("/demo/chat")
assert response.status_code == 200
assert "智能化部署 Agent Demo" in response.text
assert "Conversation" in response.text