From 0daaac0306c4f7e54b4fdfd51cc306f503a34a6a Mon Sep 17 00:00:00 2001 From: lili Date: Fri, 19 Jun 2026 03:24:18 -0700 Subject: [PATCH] =?UTF-8?q?fix(smoke):=20U6=20smoke-test.sh=20=E5=8F=AF?= =?UTF-8?q?=E7=A7=BB=E6=A4=8D=E6=80=A7=E2=80=94=E2=80=94=E8=A3=B8=20$var?= =?UTF-8?q?=20=E7=B4=A7=E8=B4=B4=E5=85=A8=E8=A7=92=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E5=8A=A0=E8=8A=B1=E6=8B=AC=E5=8F=B7=EF=BC=88R3=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bare `$var` 紧贴全角()(等 → strict-locale bash(macOS 5.3)把多字节首字节并进变量名 → set -u unbound; smoke 在 lili-mac 一贯断在 template/list 行。4 处加 ${}(tcount/VID/QSCORE/SID),语义不变、跨环境可跑。 U6 验证(staging 五业务链路,本机 curl 可达):11/12 真绿——创作 draft / 发布(feed/zones/project) / 试玩取包(vid=93112) / 广告钱包(ad/trade) / 数据回路(qualityScore=60)。唯一 FAIL=template/list count=0 = W-CLEAN 清旧四模板 + generic 桥接的设计态(总账 §1 记非回归);R3=链路就绪门(不代理 R1)成立。 follow-up: template/list assertion 按 generic 桥接更新(非本单元业务语义裁定)。 Co-Authored-By: Claude Opus 4.8 (1M context) --- deploy/smoke-test.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/smoke-test.sh b/deploy/smoke-test.sh index 7b5c39b6..b2eef6ce 100755 --- a/deploy/smoke-test.sh +++ b/deploy/smoke-test.sh @@ -108,7 +108,7 @@ out="$(api GET /app-api/aigc/template/list)" tcount="$(printf '%s' "$out" | sed '$d' | python3 -c "import sys,json try: d=json.load(sys.stdin); data=d.get('data') or []; print(len(data) if isinstance(data,list) else 0) except: print(-1)" 2>/dev/null)" -if [ "${tcount:-0}" -ge 4 ] 2>/dev/null; then PASS=$((PASS+1)); _log " ${G}✓${N} aigc/template/list(四模板就绪 count=$tcount)"; else FAIL=$((FAIL+1)); FAILED_ITEMS+=("template/list count=$tcount"); _log " ${R}✗${N} aigc/template/list(期望≥4,实=$tcount)"; fi +if [ "${tcount:-0}" -ge 4 ] 2>/dev/null; then PASS=$((PASS+1)); _log " ${G}✓${N} aigc/template/list(四模板就绪 count=${tcount})"; else FAIL=$((FAIL+1)); FAILED_ITEMS+=("template/list count=$tcount"); _log " ${R}✗${N} aigc/template/list(期望≥4,实=${tcount})"; fi check "studio/draft(创建草稿拿 gameId)" POST /app-api/studio/draft envelope_nonempty '{"title":"冒烟门-clicker","templateId":"clicker"}' # ---------------- 链路② 发布 → 审核 → 游戏流 ---------------- @@ -128,7 +128,7 @@ try: print(lst[0].get('versionId','') if lst else '') except: print('')" 2>/dev/null)" if [ -n "$VID" ] && [ "$VID" != "None" ]; then - check "runtime/package/{versionId}(试玩取包 vid=$VID)" GET "/app-api/runtime/package/$VID" envelope + check "runtime/package/{versionId}(试玩取包 vid=${VID})" GET "/app-api/runtime/package/$VID" envelope else FAIL=$((FAIL+1)); FAILED_ITEMS+=("feed 首条无 versionId"); _log " ${R}✗${N} feed 首条无 versionId(无法验取包)"; fi # ---------------- 链路④ 广告 → 收益 → 钱包 ---------------- @@ -146,7 +146,7 @@ try: d=json.load(sys.stdin); lst=(d.get('data') or {}).get('list') or [] print(lst[0].get('qualityScore') if lst and lst[0].get('qualityScore') is not None else 'NONE') except: print('NONE')" 2>/dev/null)" -if [ "$QSCORE" != "NONE" ] && [ -n "$QSCORE" ]; then PASS=$((PASS+1)); _log " ${G}✓${N} feed 携带 qualityScore=$QSCORE(质量分回路已回灌)"; else FAIL=$((FAIL+1)); FAILED_ITEMS+=("feed 无 qualityScore"); _log " ${R}✗${N} feed 首条无 qualityScore"; fi +if [ "$QSCORE" != "NONE" ] && [ -n "$QSCORE" ]; then PASS=$((PASS+1)); _log " ${G}✓${N} feed 携带 qualityScore=${QSCORE}(质量分回路已回灌)"; else FAIL=$((FAIL+1)); FAILED_ITEMS+=("feed 无 qualityScore"); _log " ${R}✗${N} feed 首条无 qualityScore"; fi # ---------------- --deep:写路径(生成入队 + 遥测事件)---------------- if [ "$DEEP" = "1" ]; then @@ -160,7 +160,7 @@ if [ "$DEEP" = "1" ]; then try: print((json.load(sys.stdin).get('data') or {}).get('id','')) except: print('')" 2>/dev/null)" if [ -n "$SID" ] && [ "$SID" != "None" ]; then - check "studio/generate(入队 sessionId=$SID)" POST /app-api/studio/generate envelope \ + check "studio/generate(入队 sessionId=${SID})" POST /app-api/studio/generate envelope \ "{\"sessionId\":$SID,\"prompt\":\"一个挂机种树攒果实的放置小游戏\"}" else FAIL=$((FAIL+1)); FAILED_ITEMS+=("deep: draft 无 id"); _log " ${R}✗${N} deep: draft 未拿到 sessionId(id)"; fi fi