這幾天同時處理幾件事:幫美甲平台補上一層「做完了卻沒做到」的安全網,幫虛擬主播抓出動作與表情調整了卻沒生效的原因,也幫一款骰子遊戲拿掉玩家感覺不到的操作機制。系統說完成,不代表真的發生了。
畫面顯示「已完成」,資料庫其實沒動
在這個幫人找美甲師、也讓美甲師接單的App裡(Nailora),好幾個刪除或更新資料的動作,一旦被資料庫的權限規則擋下來,回傳的訊號卻跟成功一模一樣。比如解除某件作品跟設計師的關聯,畫面顯示成功,資料其實沒有變。
逐一檢查所有寫入資料庫的地方,只要沒有任何一筆資料被真的改到,就跳出提示告訴使用者沒有生效,不再沉默當成功。同時讓檢舉作品、隱藏作品、封鎖用戶三個功能正式上線,補上權限規則。
刪除、更新類的操作,光看程式有沒有報錯不夠,要確認資料庫實際改動的筆數是不是大於零。沒出錯跟真的做到了是兩件事,使用者只看得到畫面上的完成兩個字。
graph LR A[使用者按下刪除] --> B[權限不足被擋下] B --> C[系統回傳沒事的訊號] C --> D[畫面顯示已完成] D --> E[資料其實沒有變]
技術細節:0 列成功與 RLS 稽核
lib/api 多處 .update().select().maybeSingle() 在 RLS 過濾至 0 列時回傳 null/false,但 caller 端未檢查,補上 7 處 Alert.alert(nailist-form/group-form/item-form/option-form/booking-confirm/BookingDetailSheet ×2)。 新增 content_reports/hidden_designs/user_blocks 三張表,RLS 8 條 policy(TO authenticated、(SELECT auth.uid())),content_reports 無 UPDATE/DELETE。 套用方式 supabase db push —linked,advisors 掃描 security 0 ERROR。
調整了卻沒生效,是一段看不見的轉換偷偷把東西換掉
打造虛擬主播星野的專案裡,角色的待機姿勢一直維持一個僵硬的站姿,換掉待機動作檔案完全沒用。
動作檔案裡其實藏著兩段動畫,系統只播放第一順位那段,換上新檔案也沒用,解法是重新綁定動作對應關係,不是替換檔案。表情判斷這邊,語音辨識出的中文會先被轉譯成日文才交給判情緒的模型,轉譯常把情緒轉向或抹掉,調整描述文字幫助有限,真正卡住的環節在轉譯這一步。
當一個設定調整了卻沒有效果,要往前查有沒有一個看不到的轉換步驟把東西悄悄換掉——檔案裡可能不只一份內容而系統只認第一份,文字在被使用前也可能已經被轉譯過,轉譯本身就會流失原意。
技術細節:Mixamo 動畫索引與 OCM 語言鎖定
Mixamo 下載檔含兩個 AnimationStack,索引 0 是舊上傳檔帶來的靜止 clip,TriLib 讀入全部但 AITuberStreaming 只播索引 0,不刪除舊 clip 就完全不動;解法是刪除舊 clip 並重新綁定,而非覆蓋 idle_fbx.fbx。 OCM 強制 language=ja:語音辨識後先翻譯成日文才交給 Qwen 判情緒,同批中文語音餵日文稿命中率明顯低於餵中文稿對照組,SaveFile.es3 內無語言設定鍵可調。
花力氣做進去的操作,玩家實測根本感覺不到
這款骰子牌桌遊戲原先設計了一套需要玩家抓準時機與力道的操作機制,讓丟骰子前多一層手感挑戰。大量模擬對局的數據顯示,這套操作只在極少數罕見結果上才有影響,對多數局面的勝負幾乎沒有作用。
拿掉這套操作,改成瞄準碗底特定區域來決定丟骰結果:拖曳時畫面會晃動,放開手才決定落點,晃動幅度、鏡頭拉遠的距離、放開後骰子怎麼滑到定位,都照實測回饋調整。
操作機制做得再複雜,如果玩家實際感受不到它在影響結果,等於白做。設計操作深度前,先用大量模擬數據檢查這個機制到底改變了多少結果,再決定值不值得留著。
技術細節:QTE 平衡報告與碗底瞄準
B-2 平衡報告(sweep.ts 掃 57 格 × 5,000 局)顯示 σ 0→0.3 期望關數僅降 0.47 關,未達門檻 ≥1.5,QTE 對多數局面無影響。 新原型 aim-proto/scene-mock:靶面照碗底刻紋分區(ピンゾロ 環/ヒフミ 環/六角六格),晃動由低通噪音驅動欠阻尼彈簧,鏡頭常駐 300px、按住瞄準拉遠至 170px。
接下來
- 美甲平台還有幾個功能的權限對齊工作沒做完,B端介面要跟資料庫的權限規則再核對一次。
- 虛擬主播這邊,YouTube聊天室的讀取已經打通,下一步要照產品化的整體規劃往下推進。
- 骰子遊戲的瞄準機制才剛接上預覽畫面,還要再依照測試回饋繼續調整手感。
本篇由跨專案自動彙整產生,素材為 2026-08-31 之後 7 個專案的提交紀錄與 0 則知識投遞。