quote_bids want_to_contact_provider

來源流程

API:

POST /quote_bids/want_to_contact_provider/{quote_bid_id}.json

legacy 核心方法:

get-lancer-php56/app/Plugin/Quotes/Model/QuoteBid.php::processWantToContactProvider()

新專案核心方法:

Lib/Model/QuoteBid.php::processWantToContactProvider()

成功 contact 後會送出 task_event_queueevent_queue

送出的 queue / event 新舊對照

tableevent_keylegacy 寫入點新專案寫入點條件用途
task_event_queuebid_contact_countQuoteBid::processWantToContactProvider()QuoteBid::processWantToContactProvider()成功 contact 後一定送重算 contact counter
task_event_queuesent_contact_provider_smsQuoteBid::sendContactProvider()QuoteBid::processWantToContactProvider()非 narrow match建 SMS task,再送 Contact_Pro
event_queueContact_ProQuoteBid::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.php

bid_contact_count

新專案 handler:

Lib/Util/TaskEvent/BidContactCountHandler.php

主要重算:

  • users.auto_quote_contact_count
  • users.contact_charge_contact_count
  • quote_services.auto_quote_contact_count
  • quote_services.contact_charge_contact_count
  • quote_requests.auto_quote_contact_count
  • quote_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