is_want_to_contact_provider
意義
quote_bids.is_want_to_contact_provider 表示 consumer 是否已正式聯絡這個 provider。
0 = 尚未正式聯絡 provider
1 = 已正式聯絡 provider這不是單純的 UI flag。它通常代表 consumer 已經從「看 quote card」進入「正式洽談 / 可聊天 / 可能扣款」狀態。
常見狀態轉換
由 0 變 1
常見來源:
/quote_bids/want_to_contact_provider/{quote_bid_id}.jsonSearchAdd/AuthorizedContactProcessorSearchAdd/DirectReserveProcessorSearchAdd/DirectUserProcessor- preserve / direct contact 類流程
成功轉換時通常一起寫:
quote_bids.contact_provider_on = NOW()
quote_bids.is_paid_for_subscription = 1
quote_bids.is_interested = 1
quote_requests.auto_quote_contact_count + 1並可能建立:
transactionsquote_activities.AutoQuoteContacttask_event_queue.bid_contact_counttask_event_queue.sent_contact_provider_smsmessages
維持 0
常見原因:
- consumer 只是看到 quote card,還沒聯絡。
- message 被分類為
rejected或insignificant。 - provider 不可聯絡。
- 付款 / 扣款失敗。
- quote request 已關閉、封存或過期。
want_to_contact_provider 的特殊規則
如果 request 有帶 message,會先分類。
例如:
message = 哈囉
classes = insignificant
response = {"error":17,"status":""}這種情境:
- message 仍可能寫入
messages - message activity 仍可能寫入
quote_activities - 但不會進入正式聯絡主線
is_want_to_contact_provider應維持 0
如果 message 可接受:
message = 我要聯絡
classes = not-reject
response = {"status":"success","error":0}這種情境才會進入 contact flow,將 is_want_to_contact_provider 改成 1。
Activity 規則
成功聯絡 provider 時會建立 AutoQuoteContact activity。
legacy 非 narrow match 規則:
quote_activity_type_id = AutoQuoteContact
param1 = NULL
param2 = reason例如:
reason = SEND_MESSAGE
param1 = NULL
param2 = SEND_MESSAGE不要把 param1 = search_add_contact 當成 legacy 預期。那是修正前曾出現過的不一致結果。
常用 SQL
查 bid 聯絡狀態
SELECT
qb.id,
qb.quote_request_id,
qr.user_id AS requestor_user_id,
qb.provider_user_id,
qb.quote_service_id,
qb.is_auto_quote,
qb.is_contact_charge,
qb.is_want_to_contact_provider,
qb.contact_provider_on,
qb.reason,
qb.total_site_fee,
qb.quote_user_subscription_log_id,
qr.auto_quote_contact_count
FROM quote_bids qb
INNER JOIN quote_requests qr ON qr.id = qb.quote_request_id
WHERE qb.id = <quote_bid_id>;查聯絡 activity
SELECT
id,
created,
quote_activity_type_id,
provider_user_id,
requestor_user_id,
receiver_user_id,
model,
foreign_id,
secondary_model,
secondary_foreign_id,
param1,
param2
FROM quote_activities
WHERE secondary_foreign_id = <quote_bid_id>
ORDER BY id DESC
LIMIT 20;查分類結果
SELECT
id,
quote_bid_id,
message,
model_version,
classes,
params,
created
FROM quote_bid_classify_contacts
WHERE quote_bid_id = <quote_bid_id>
ORDER BY id DESC
LIMIT 10;查 transaction
SELECT
id,
created,
user_id,
foreign_id,
class,
transaction_type_id,
amount,
real_pay_date,
wallet_balance
FROM transactions
WHERE foreign_id = <quote_bid_id>
AND class = 'QuoteBid'
ORDER BY id DESC;排查重點
is_want_to_contact_provider = 1才代表正式聯絡成立。- 有 message 不代表正式聯絡成立。
- 有 message activity 不代表正式聯絡成立。
- 有
AutoQuoteContactactivity 才比較接近 contact flow 成功,但仍要搭配quote_bids與 transaction 看。 - queue 驗證要同時查
task_event_queue與task_event_queue_log。