- 新增 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%
51 lines
2.0 KiB
Python
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
|