限制與風控規則環境差異

文件狀態:草稿 / 以 search_add 建立第一版
最後驗證:2026-05-07
來源:pro360_api_82 search_add code、Common Process Documents

目的

這份文件集中記錄「限制與風控規則在測試、staging、production 是否一致」。

單一流程的規則細節仍放在對應文件,例如 search_add;這裡只回答環境差異與測試判讀。

總原則

限制規則不能只寫「會擋」或「不會擋」,必須同時標示:

local / PHPUnit
staging
production
是否有測試用 env flag
是否受 live DB 時間窗影響
是否依 Redis / worker 狀態改變

差異類型

差異類型說明文件必寫重點
production-only guardcode 只在 production 啟用staging 成功不代表 production 成功
test force flagPHPUnit 可強制進 production branchflag 名稱、預設值、測試用途
Redis TTL防連點或短時間去重依賴 Rediskey、TTL、Redis 關閉時行為
live DB time window依資料表時間窗計算 count時間窗、使用欄位、cleanup 方式
config / DB setting上限值來自 config 或 DBconfig key、table 欄位、預設值
worker timingqueue row 可能已搬到 logqueue 或 log 任一存在才算正常

search_add 已知差異

規則staging / localproduction測試注意
同分類 24 小時提出需求上限預期一致預期一致quote_requests.created 時間窗影響
海外電話 12 小時限制預期一致預期一致quote_requests.created 時間窗影響
相同專業類別專家不可發案預設跳過啟用PHPUnit 用 SEARCH_ADD_TEST_FORCE_PRODUCTION=1 覆蓋
block_provider_ids 近 30 天排除 provider空字串寫入排除名單影響配對,不直接回 API error
Redis access activity 去重依 Redis 設定依 production Redis不是提出需求上限
downstream queueworker timing 不固定worker timing 不固定event_queueevent_queue_log_1event_queue_log_4 任一存在即可

文件寫法

每一條限制規則建議使用這個區塊:

環境差異:
- local / PHPUnit:
- staging:
- production:
- 測試 env flag:
- live DB / Redis / worker 影響:

如果沒有已知差異,也要明確寫「無已知差異」,避免後續讀的人以為尚未確認。