#!/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 "=== 全部完成 ==="