AWP 後台設定 (Setup) · 討論用

Setup 待討論問題:詳細狀況與待辦

後台設定「能獨立做的都做完了」。剩下的每一項在這裡列出:詳細狀況(含技術細節)要做的事、以及要找誰。給團隊討論用。

日期 2026-07-16 · 整理:專案負責人 · 供討論

2
做好了、等 merge
2
要討論決定
3
等團隊給真實資料
2
暫停(currency・語言)

🟢 做好了,等你 merge

2 件

date_format 顯示 bug 修正 · PR #22

已完成
狀況
前端 ClockDisplay.ts:74 讀錯設定 key——讀成 display_format(金額 Dollar/Credit 模式),應為 date_format。導致 operator 改日期格式無效、日期格式反被金額模式決定。
要做
已修(1 行)。CDP 實測三種格式 MM/DD/YYYY / DD/MM/YYYY / YYYY-MM-DD 均正確、已脫離 DisplayFormat。→ merge PR #22
要找:你 merge

Money jackpot_celebration_mode 開關 · PR #23

已完成
狀況
規格是「Jackpot Celebration Mode (GRIPS Only)」——GRIPS 第三方系統的慶祝連動開關。目前只做存值開關(handler + YAML + BuRAM + sync + VersionCheck bump),未接 GRIPS 連動邏輯(無 GRIPS 系統、真連動屬第三方整合超出範圍)。預設 OFF。
要做
已完成、測試 45/45 + 18/18 + 133/133 全綠、code-review PASS。→ merge PR #23。(真正 GRIPS 連動另議。)
要找:你 merge

🔴 要一起討論決定

2 件

Theme Options 玩法 9 項:覆蓋規格現在做,還是延後?

要拍板
狀況
  • 9 個欄位:gamblemax_consecutive_gamblemax_gamble_win_limitskill_stopplay_button_hold_downplayer_play_throughservice_button_confirmationcollect_button_confirmationwin_a_spin
  • 規格書 SETUP 頁自己標「第一階段不實作」。
  • 後端現狀:這批 handler / YAML / BuRAM 全無。其中 win_a_spin(= Wager Saver 殘額投注)是舊版 ec3082c8 的迴歸、可補回;game_play.cpp 有 TODO 未接遊戲引擎。
  • gamble / skill_stop 等:遊戲引擎目前沒暴露 API——不是後台加開關就好、要遊戲引擎團隊配合才能真的控制到功能。
  • GLI 合規:Gamble 硬性最重(§4.11.1:理論 RTP=100%、僅基礎遊戲贏後可進、玩家可 collect 拒絕、只可投本局贏分、揭露上限、§5.6.1 需 4 個獨立 meter、jurisdiction 可關);上限要揭露 + 超限 handpay;Skill Stop 紅線(§4.7.2 不可改變 outcome、只能提前結束已由 RNG 決定的動畫)。
要做 / 要決定
  • 決定:覆蓋規格提前做 vs 尊重「第一階段不實作」
  • 若做:先跟遊戲引擎團隊確認能否暴露 gamble/skill API;Gamble 要有 RTP=100% 數學模型 + 4 meter;win_a_spin 可先補回迴歸(工小)。
要找:你決定遊戲引擎團隊數學/認證(Gamble RTP)

collect_button_confirmation 要不要做?

要拍板
狀況
前端 scene 有這個 componentId(收款/collect 確認視窗),但規格書裡沒有定義它。GLI 不要求確認對話框(選配)。
要決定
做(加 handler + 前端確認視窗)還是拿掉。
要找:你決定

🟡 等團隊給「真實資料」才能做

3 件

這 3 個要真實數值/選項,填假的踩 GLI §4.4.1(不能做殼)、送審 FAIL,一定要對應團隊給。

Device:coin_acceptor / diverter / hopper 選項

等硬體
狀況
handler case 在 ec3082c8 有、目前迴歸;但 YAML value_list(選項清單)從未定義、前端 PageSettingVault_SetupOnly.json 也是空的。此為 bill/票券機、實際未裝投幣硬體。
要做
硬體團隊給真實選項清單 → 補回 handler case + YAML value_list。(hopper 若為 bool 可先做。)
要找:硬體團隊

Paytable:progressive_config(累進獎機率方案)

等數學
狀況
  • 規格是 Combobox 選機率 profile(A1~A5 / B1~B5),target = paytable_setup
  • 不能重用既有 progressive_configuration handler——那個是 jackpot_range / min_play_for_grand_jp / grand·major·minor _jp_init_value 5 個分開的 JP 值,性質不同(此處是「選一個 profile 一次套多個參數」)。
  • GLI-12 §2.5 對 progressive 硬性重(14 參數 secure access、increment rate 改要等中獎才生效、ceiling 只能升、meter ≥10 digit、display ≤30s、odds ≤1/1e8)。規格另要「需 RAM Clear 才改」。
要做
數學團隊給 A1~A5 / B1~B5 每個 profile 對應的 JP 值 → 做 Combobox handler + YAML + BuRAM +「選 profile→套多個 JP 參數」聯動 + RAM-Clear only gate(目前系統無此機制)。
要找:數學團隊

Paytable:RTP(denom_group / rtp_variance / denom_rtp ×9)

等數學/認證 · 法規最嚴
狀況
後端有 RTP 數學(機台過 92% 認證用),但 Setup 的 RTP 設定 UI 從未做。§4.4.1:RTP 不能做殼——必須對真實 paytable 的實際 RTP 值,造假送審直接 FAIL。
要做
數學/認證團隊給真實 paytable 對應的每面額 RTP 值 + denom 分組 + variance 定義 → 做 handler + YAML + BuRAM。
要找:數學 / 認證團隊

🛑 暫停中(currency・語言)

要討論怎麼做

currency(7 國):畫面可做、但票券符號軟體改不了

currency
狀況
  • 金額符號目前硬編在 6 處、且不統一ValueFormatter.ts:65 ₱、ComponentItemNumberpad.ts:517/543 $、LocalServerResponseMapper.ts:83/88 $、SettingPanel.ts:1972 $、BetDenomToggleList.ts:339 $),都不讀 currency 設定。舊欄位 CurrencySymbol 規格書無此詞、該砍。
  • 規格:Currency「需 RAM Clear 才改」;currency_format 有 3 種樣式(₱1,234.56 / 1,234.56 / ₱1,235)。
  • 票券金額符號由印表機 firmware 寫死receipt_printer.cppVoucherDisplayFormat→PrintPointOrDollar、目前只 DOLLAR),IReceiptPrinter interface 無換幣別符號 API——畫面可做多國、但印出來的票券符號軟體改不到
要做
  • 建統一 CurrencyFormatter(用 currency_code 驅動、非 symbol;處理 CNY/JPY 同 ¥、JPY/KRW 無小數)收那 6 個硬編點。
  • 後端新增 Currency setting + RAM-Clear only gate(目前無、要仿 jp_has_been_played 新做)+ 加入 preserve_device(既有 bug:工廠重設後貨幣回預設 $)。
  • 問印表機廠商:firmware 支不支援多幣別符號;現行 PHP 版票券印 ₱ 還 $。
要找:印表機廠商 / firmware

語言:規格要先定 + 有技術風險

語言
狀況
  • 前端 SWLocalizationManager 是全域單一 _currentLanguage;唯一切換 hook 在 ComponentItemDropdown(componentId=="language"、但 scene 現在沒這元件);翻譯表靜態(只 en-US、zh-TW,無簡中 zh-CN)。
  • operator_language(後台管理介面語言)跟 default_player_language(玩家遊戲畫面語言)是兩個不同受眾 → 要做兩套語言狀態。
  • 技術風險:Setup 是遊戲上的 overlay,切語言會連動底下遊戲 label——要先做 PoC 驗證訂閱隔離。
  • 規格自己未定案:單選/複選、2 個選項(規格)vs 3 個(前端 Vault)矛盾enabled_player_languages 呈現(規格作者備註「此欄位有 2 個開關、規格操作上是否有問題」未答)。
要做 / 要決定
  • 定語言規格:後台/玩家分不分、單/複選、幾個選項、要不要簡中。
  • 簡中翻譯內容來源(翻譯工作)。
  • SWLocalizationManager 為 operator/player 雙上下文(先 PoC)。
要找:翻譯

⚠️ 兩個要讓大家知道的技術/法規點

提醒

VersionCheck bump = GLI 終身 meter 一起歸零

上真機前必處理
狀況
每加一個 BuRAM 欄位就要 bump YAML 的 VersionCheck,下次開機觸發 reset。設定用的 BuRAM 跟 GLI meter 用的 FileBuRAM 共用同一個 g_version_check gateburam_manager.cpp:323)→ bump 會連 GLI 終身 meter 一起歸零
要做
dev / 送審階段 OK(你已拍板 A);上真機、或機台已有真實 meter 數據前,一定要做「保留 meter、只初始化新欄位」的遷移
提醒:上真機前

Currency「RAM Clear 才可改」的鎖,目前系統沒有

做 currency 時
狀況
規格要 Currency「初始設定後不可調、需 RAM Clear 才改」,但目前 code 沒有這種鎖is_read_only 只 gate PerGameConfig、無 ram_clear_only metadata),任何設定在 Setup 都能自由改。另:貨幣設定不在 preserve_device 清單 → 工廠重設後被打回預設 $(既有 bug)。
要做
做 currency 時一併:新增 commissioning-only gate(仿 jp_has_been_played)+ Currency 加入 preserve_device
提醒:做 currency 時

📋 非阻塞、之後處理

不急

顯示時序小疑點 + 6 handler 的 runtime 行為

低優先
  • banknote_limit 的 Numberpad 元件重整時,偶爾 cash_related/currentValue 還沒 fetch 回就先渲染(疑 _selfFetch() 非同步時序)——未確認是真 bug 還測試時序,已記著之後查。
  • bill / machine / SAS 主副 / device_ownership / funds_transfer 這 6 個 handler 的欄位已「存讀通」,但它們的 runtime 真行為(例如 SAS 雙 host 對同功能的互斥)要等接入 runtime 那個 phase。