5926c73ff1
- 数据库: PostgreSQL schema + 3名销售/21客户/341消息/6成交 - 采集代理: mock_sync.py 模拟微信聊天同步 - AI分析: analyze.py 规则模式 + 千问LLM模式 - 后端: FastAPI 11个API接口 - 前端: 仪表盘/销售列表/客户列表/成交记录/交流分析/录入成交 - 交流分析: 全部客户对话概览 + LLM标准范式对话生成 - 部署: systemd + nginx, 已部署至 sale.all8ai.top
83 lines
3.3 KiB
Bash
Executable File
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
|