quote_bids want_to_contact_provider
來源流程
API:
POST /quote_bids/want_to_contact_provider/{quote_bid_id}.jsonlegacy 核心方法:
get-lancer-php56/app/Plugin/Quotes/Model/QuoteBid.php::processWantToContactProvider()新專案核心方法:
Lib/Model/QuoteBid.php::processWantToContactProvider()成功 contact 後會送出 task_event_queue 與 event_queue。
送出的 queue / event 新舊對照
| table | event_key | legacy 寫入點 | 新專案寫入點 | 條件 | 用途 |
|---|---|---|---|---|---|
task_event_queue | bid_contact_count | QuoteBid::processWantToContactProvider() | QuoteBid::processWantToContactProvider() | 成功 contact 後一定送 | 重算 contact counter |
task_event_queue | sent_contact_provider_sms | QuoteBid::sendContactProvider() | QuoteBid::processWantToContactProvider() | 非 narrow match | 建 SMS task,再送 Contact_Pro |
event_queue | Contact_Pro | QuoteBid::sendContactProvider() | QuoteBid::processWantToContactProvider() | 成功 contact 後一定送 | 通知 provider 有 consumer 聯絡 |
legacy queue model:
get-lancer-php56/app/Model/TaskEventQueue.php
get-lancer-php56/app/Model/EventQueue.php新專案 queue model:
Lib/Model/TaskEventQueue.php
Lib/Model/EventQueue.phpbid_contact_count
新專案 handler:
Lib/Util/TaskEvent/BidContactCountHandler.php主要重算:
users.auto_quote_contact_countusers.contact_charge_contact_countquote_services.auto_quote_contact_countquote_services.contact_charge_contact_countquote_requests.auto_quote_contact_countquote_requests.contact_charge_contact_count
sent_contact_provider_sms
新專案 handler:
Lib/Util/TaskEvent/SentContactProviderSMSHandler.php流程:
讀 quote_bid
-> 建 provider chat URL
-> 建 SecurityHash
-> 建 SmsTaskDO
-> 寫 event_queue.Contact_Pro它不是直接送 SMS,而是把 SMS task 放進 Contact_Pro,最後由 event_queue worker 派發。
Contact_Pro
新專案 worker:
Endpoint/V1/EventQueue.php::index()通知設定來源:
event_actions常見 template:
- email:
701 Auto Quote Want to Contact Provider - email:
701 (no message)Auto Quote Want to Contact Provider - push:
push.content.contact.provider - web push:
push.content.contact.provider - sms:
sms.new_chat_sent - moengage:
Auto_Quote_Want_to_Contact_Provider
常用 SQL
查 task queue / log
SELECT id, created, event_key, params, priority, retry
FROM task_event_queue
WHERE params LIKE '%<quote_bid_id>%'
ORDER BY id DESC
LIMIT 20;SELECT id, inserted, executed, event_key, params, message, status_id, retry
FROM task_event_queue_log
WHERE params LIKE '%<quote_bid_id>%'
ORDER BY id DESC
LIMIT 20;查 event queue
SELECT id, created, event_key, params, priority, retry
FROM event_queue
WHERE params LIKE '%<quote_bid_id>%'
ORDER BY id DESC
LIMIT 20;查 Contact_Pro templates
SELECT id, event_key, template_type, template_key, notification_type
FROM event_actions
WHERE event_key = 'Contact_Pro'
ORDER BY id;排查重點
bid_contact_count是 counter 類任務。sent_contact_provider_sms是建立 SMS task,不是最終 SMS 發送點。Contact_Pro是 notification 派發點。- 查不到 queue row 時,要回查 log table。
- 測試機可能有 worker 正在跑,所以 queue 可能已經被執行,counter / notification side effect 也可能已發生。
- 若 provider 沒收到通知,要看
event_queue_log_*與event_actions,不要只看task_event_queue。