Files
wxsales/demo/tests/test_e2e.sh
T
freedakgmail 5926c73ff1 微信营销管理系统 - 益童宝销售管理平台
- 数据库: PostgreSQL schema + 3名销售/21客户/341消息/6成交
- 采集代理: mock_sync.py 模拟微信聊天同步
- AI分析: analyze.py 规则模式 + 千问LLM模式
- 后端: FastAPI 11个API接口
- 前端: 仪表盘/销售列表/客户列表/成交记录/交流分析/录入成交
- 交流分析: 全部客户对话概览 + LLM标准范式对话生成
- 部署: systemd + nginx, 已部署至 sale.all8ai.top
2026-07-14 22:31:29 +08:00

83 lines
3.3 KiB
Bash
Executable File

#!/bin/bash
set -eu
# ============================================
# 端到端测试
# ============================================
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
API="http://127.0.0.1:8770/api"
PASS=0
FAIL=0
check() {
local name="$1"
local condition="$2"
if eval "$condition"; then
echo "$name"
PASS=$((PASS + 1))
else
echo "$name"
FAIL=$((FAIL + 1))
fi
}
echo "=== 端到端测试 ==="
echo ""
# 测试1: 仪表盘
echo "[仪表盘]"
DASHBOARD=$(curl -s "$API/dashboard")
check "仪表盘返回200" '[ -n "$DASHBOARD" ]'
check "总消息数 > 0" 'echo "$DASHBOARD" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if d[\"total_messages\"]>0 else 1)"'
check "销售人数 = 3" 'echo "$DASHBOARD" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if len(d[\"salespersons\"])==3 else 1)"'
# 测试2: 销售列表
echo "[销售列表]"
SP=$(curl -s "$API/salespersons")
check "销售列表返回3条" 'echo "$SP" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if len(d)==3 else 1)"'
# 测试3: 客户列表
echo "[客户列表]"
CUSTOMERS=$(curl -s "$API/customers")
check "客户列表非空" 'echo "$CUSTOMERS" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if len(d)>0 else 1)"'
HIGH=$(curl -s "$API/customers?intent_level=high")
check "高意向筛选有效" 'echo "$HIGH" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if all(c[\"intent_level\"]==\"high\" for c in d) else 1)"'
# 测试4: 客户详情
echo "[客户详情]"
FIRST_CUST_ID=$(echo "$CUSTOMERS" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d[0][\"id\"])")
DETAIL=$(curl -s "$API/customers/$FIRST_CUST_ID")
check "客户详情有摘要" 'echo "$DETAIL" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if d.get(\"summary\") else 1)"'
check "客户详情有阶段" 'echo "$DETAIL" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if d.get(\"stage\") else 1)"'
# 测试5: 聊天记录
echo "[聊天记录]"
MSGS=$(curl -s "$API/customers/$FIRST_CUST_ID/messages?page=1&page_size=10")
check "聊天记录非空" 'echo "$MSGS" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if len(d[\"messages\"])>0 else 1)"'
check "聊天记录总数 > 0" 'echo "$MSGS" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if d[\"total\"]>0 else 1)"'
# 测试6: 成交录入
echo "[成交录入]"
DEAL_RES=$(curl -s -X POST "$API/deals" \
-H "Content-Type: application/json" \
-d "{\"salesperson_id\":1,\"customer_id\":$FIRST_CUST_ID,\"product_name\":\"测试产品\",\"amount\":99,\"deal_date\":\"2026-07-14\"}")
check "成交录入成功" 'echo "$DEAL_RES" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if d.get(\"id\") else 1)"'
# 测试7: 成交列表
echo "[成交列表]"
DEALS=$(curl -s "$API/deals")
check "成交列表非空" 'echo "$DEALS" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if len(d)>0 else 1)"'
# 测试8: 同步状态
echo "[同步状态]"
SYNC=$(curl -s "$API/sync/status")
check "同步状态返回3条" 'echo "$SYNC" | python3 -c "import sys,json; d=json.load(sys.stdin); exit(0 if len(d)==3 else 1)"'
echo ""
echo "=========================================="
echo " 通过: $PASS 失败: $FAIL"
echo "=========================================="
[ "$FAIL" -eq 0 ] && exit 0 || exit 1