86 lines
3.2 KiB
Bash
86 lines
3.2 KiB
Bash
#!/bin/bash
|
|
set -u
|
|
cd /var/www/onebot
|
|
|
|
echo "=== PHP 语法检查 ==="
|
|
for f in app/Domain/Bom/Services/Teable.php app/Domain/Bom/Services/Bom.php app/Domain/Bom/Controllers/Api.php app/Domain/Bom/routes.php; do
|
|
php -l "$f" 2>&1
|
|
done
|
|
|
|
echo ""
|
|
echo "=== 清缓存 + 重载 fpm ==="
|
|
rm -rf storage/framework/views/* storage/framework/cache/* bootstrap/cache/*.php 2>/dev/null
|
|
echo "wrg521113.." | sudo -S systemctl reload php8.3-fpm >/dev/null 2>&1
|
|
echo "done"
|
|
|
|
echo ""
|
|
echo "=== 登录 ==="
|
|
JAR=/tmp/onebot_paste_cookies.txt
|
|
rm -f "$JAR"
|
|
BODY=$(curl -s -c "$JAR" http://127.0.0.1:8081/auth/login)
|
|
CSRF=$(echo "$BODY" | grep -oE 'name="csrf-token" content="[^"]*"' | sed 's/.*content="//;s/"//')
|
|
curl -s -b "$JAR" -c "$JAR" -X POST http://127.0.0.1:8081/auth/login \
|
|
-d "username=ruiguo_wang@163.com" \
|
|
-d "password=wrg521113.." \
|
|
-d "_token=$CSRF" \
|
|
-H "X-CSRF-TOKEN: $CSRF" -o /dev/null -w "login HTTP=%{http_code}\n"
|
|
|
|
echo ""
|
|
echo "=== 粘贴解析接口测试 ==="
|
|
cat > /tmp/paste_sample.txt <<'PASTEEOF'
|
|
# Table: UAGP350B
|
|
|
|
## API Operations
|
|
|
|
### 1. Read Records (GET)
|
|
curl -X GET "https://table.universal-onebot.com/api/table/tblGHwQc8eAGFZcZ71A/record?fieldKeyType=name" \
|
|
-H "Authorization: Bearer teable_accaWtlglDjnwkieJXE_KaafZue9411p5G+QmP0r4zRsC6GDpUTuRDVfh2f8eco="
|
|
PASTEEOF
|
|
|
|
php -r '$t=file_get_contents("/tmp/paste_sample.txt"); echo json_encode(["text"=>$t], JSON_UNESCAPED_SLASHES);' > /tmp/paste_payload.json
|
|
|
|
curl -s -b "$JAR" -X POST http://127.0.0.1:8081/bom/api/teable/parse \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-CSRF-TOKEN: $CSRF" \
|
|
--data-binary @/tmp/paste_payload.json
|
|
echo ""
|
|
|
|
echo ""
|
|
echo "=== Teable API 连通性(远程拉 1 条记录) ==="
|
|
curl -s -m 20 "https://table.universal-onebot.com/api/table/tblGHwQc8eAGFZcZ71A/record?fieldKeyType=name&take=1" \
|
|
-H "Authorization: Bearer teable_accaWtlglDjnwkieJXE_KaafZue9411p5G+QmP0r4zRsC6GDpUTuRDVfh2f8eco=" | head -c 400
|
|
echo ""
|
|
|
|
echo ""
|
|
echo "=== 端到端:新建测试 BOM -> 粘贴导入 -> 验证 -> 删除 ==="
|
|
PROJECT_ID=$(mysql -uonebot -p'OneBot_Db_7xKpQ9z' -h127.0.0.1 onebot -N -e "SELECT id FROM zp_projects LIMIT 1;" 2>/dev/null)
|
|
echo "projectId=$PROJECT_ID"
|
|
|
|
CREATE_RESP=$(curl -s -b "$JAR" -X POST http://127.0.0.1:8081/bom/api \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-CSRF-TOKEN: $CSRF" \
|
|
-d "{\"bomNo\":\"TEST-PASTE-1\",\"productName\":\"UAGP350B paste test\",\"projectId\":$PROJECT_ID}")
|
|
echo "create: $CREATE_RESP"
|
|
BOM_ID=$(echo "$CREATE_RESP" | grep -oE '"id":[0-9]+' | head -1 | sed 's/"id"://')
|
|
echo "bomId=$BOM_ID"
|
|
|
|
if [ -n "$BOM_ID" ] && [ "$BOM_ID" -gt 0 ] 2>/dev/null; then
|
|
echo ""
|
|
echo "--- 粘贴导入(真实拉取 Teable 数据) ---"
|
|
curl -s -b "$JAR" -X POST "http://127.0.0.1:8081/bom/api/$BOM_ID/import/teable-paste" \
|
|
-H "Content-Type: application/json" \
|
|
-H "X-CSRF-TOKEN: $CSRF" \
|
|
--data-binary @/tmp/paste_payload.json
|
|
echo ""
|
|
|
|
echo "--- 验证行数 ---"
|
|
mysql -uonebot -p'OneBot_Db_7xKpQ9z' -h127.0.0.1 onebot -N -e "SELECT COUNT(*) FROM zp_bom_item WHERE bomId=$BOM_ID;" 2>/dev/null
|
|
|
|
echo "--- 清理测试 BOM ---"
|
|
curl -s -b "$JAR" -X DELETE "http://127.0.0.1:8081/bom/api/$BOM_ID" \
|
|
-H "X-CSRF-TOKEN: $CSRF" -w "delete HTTP=%{http_code}\n"
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== 全部完成 ==="
|