限制與風控規則環境差異
文件狀態:草稿 / 以 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 guard | code 只在 production 啟用 | staging 成功不代表 production 成功 |
| test force flag | PHPUnit 可強制進 production branch | flag 名稱、預設值、測試用途 |
| Redis TTL | 防連點或短時間去重依賴 Redis | key、TTL、Redis 關閉時行為 |
| live DB time window | 依資料表時間窗計算 count | 時間窗、使用欄位、cleanup 方式 |
| config / DB setting | 上限值來自 config 或 DB | config key、table 欄位、預設值 |
| worker timing | queue row 可能已搬到 log | queue 或 log 任一存在才算正常 |
search_add 已知差異
| 規則 | staging / local | production | 測試注意 |
|---|---|---|---|
| 同分類 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 queue | worker timing 不固定 | worker timing 不固定 | event_queue 或 event_queue_log_1 到 event_queue_log_4 任一存在即可 |
文件寫法
每一條限制規則建議使用這個區塊:
環境差異:
- local / PHPUnit:
- staging:
- production:
- 測試 env flag:
- live DB / Redis / worker 影響:如果沒有已知差異,也要明確寫「無已知差異」,避免後續讀的人以為尚未確認。