search_add
目的
search_add 是 consumer 發案主流程。它會建立 quote_requests,並依照配對規則產生多筆 quote_bids。
這篇先聚焦 quote bid 狀態,不展開所有表單與使用者建立細節。
完整 API trace 請看 業務流程/search_add。這篇只回答 search_add 對 quote_bids 的影響。
主流程簡圖
consumer submit search_add
-> 建立 / 解析 user
-> 建立 quote_requests
-> 寫表單資料與 match info
-> 找符合條件的 quote_services
-> 建立 quote_bids
-> 初始化 bid 狀態
-> queue / activity / notification主要資料表
| 階段 | 資料表 | 重點欄位 |
|---|---|---|
| 建立案件 | quote_requests | id, user_id, quote_category_id, match_type, auto_quote_sent_count |
| 建立 bid | quote_bids | quote_request_id, quote_service_id, provider_user_id, is_auto_quote |
| 表單答案 | quote_form_submission_fields | quote_request_id, form fields |
| 配對資訊 | quote_request_match_infos | quote_request_id, match metadata |
| 活動紀錄 | quote_activities | quote_request_id, quote_bid_id, quote_activity_type_id |
| 非同步任務 | task_event_queue / task_event_queue_log | event_key, params |
quote_bids 初始狀態
search_add 產生 auto quote bid 時,常見初始狀態是:
quote_bids.is_auto_quote = 1
quote_bids.is_contact_charge = 0 或 1
quote_bids.is_want_to_contact_provider = 0
quote_bids.contact_provider_on = NULL
quote_bids.quote_status_id = Send / InProgress 類狀態
quote_bids.provider_status_id = Send / InProgress 類狀態重點是:
is_want_to_contact_provider = 0代表 consumer 還沒有正式聯絡 provider,也通常還沒有進入 contact fee 扣款主線。
與 want_to_contact_provider 的關係
search_add 建出 quote card 後,consumer 看到 provider 卡片。當 consumer 按下聯絡 provider 時,才會進入:
/quote_bids/want_to_contact_provider/{quote_bid_id}.json成功後才會把:
quote_bids.is_want_to_contact_provider = 1
quote_bids.contact_provider_on = NOW()並可能產生:
transactionsquote_activities.AutoQuoteContacttask_event_queue.bid_contact_counttask_event_queue.sent_contact_provider_smsmessages
驗證 search_add 建 bid
查某個 request 產生了哪些 bids:
SELECT
id,
quote_request_id,
quote_service_id,
provider_user_id,
is_auto_quote,
is_contact_charge,
is_want_to_contact_provider,
contact_provider_on,
quote_status_id,
provider_status_id,
total_site_fee,
quote_user_subscription_log_id
FROM quote_bids
WHERE quote_request_id = <quote_request_id>
ORDER BY id DESC;查 request 統計:
SELECT
id,
user_id,
quote_category_id,
sent_count,
auto_quote_sent_count,
auto_quote_contact_count,
contact_charge_quote_count,
contact_charge_contact_count,
is_closed,
is_archived,
is_expired
FROM quote_requests
WHERE id = <quote_request_id>;判斷重點
search_add是 bid 建立來源之一。search_add建立 auto quote bid,不代表 consumer 已聯絡 provider。- 是否已正式聯絡,要看
quote_bids.is_want_to_contact_provider。 - 是否已扣款,要看
transactions與quote_user_subscription_log_id。 - queue 可能已被 worker 搬到 log,驗證時要同時查 queue 與 log。