週期性項目的規則要在第一次就定好
一次性採集和週期性更新是兩種不同的項目。
一次性採集只需要回答「現在是甚麼樣」。週期性更新要回答的是「和上次比變了甚麼」,而這個問題需要一整套規則支撐。這些規則如果第一次沒定,後面補的代價很高——因為首次採集的數據結構可能根本不支援做對比。

需要提前確認的四件事

一、更新頻率
按數據的變化速度定,而不是按越勤越好定。
商戶名單這類資訊變化緩慢,按月或按季度更新通常足夠。商品價格變化頻繁,但更新頻率應該匹配你的決策頻率而不是數據的變化頻率——如果調價決策每週做一次,那麼每天採集並不會帶來額外價值,只會增加成本。
有一類例外是需要還原變化過程的場景,比如觀察競品在促銷期間的調價節奏。這種情況下高頻採集有意義,但應該限定在特定時間窗口內,而不是全年高頻。

二、增量規則
明確用甚麼判斷一條記錄是新增、消失還是變化。
這需要一個穩定的識別欄位。商品有商品編號,帖子有連結,商戶則往往沒有天然的唯一識別碼——這時候就要用名稱加地址的組合,或者電話、網站域名來判斷。這個判斷規則和去重規則應該是同一套。
還要約定「消失」怎樣處理。一家商戶這次沒採到,可能是結業了,也可能是搜尋結果排序變化導致這次沒覆蓋到。前者應該標記為已結業,後者只是覆蓋波動。區分不了的時候,標記為「本次未出現」比直接刪除更安全。

三、欄位變化怎樣標記
交付時建議給兩份檔案:
- 變化對照表:標記哪些是新增記錄、哪些本次未出現、哪些記錄的哪些欄位發生了變化(含變化前後的值)
- 最新全量表:去重後的當前狀態,可以直接使用
這兩份用途不同。前者用於觀察趨勢和觸發動作(比如競品減價了要不要跟進),後者用於直接進入業務流程。
對於價格這類快照欄位,我們預設保留每次快照而不是覆蓋。覆蓋式更新會讓歷史無法追溯,而價格數據的價值恰恰在於變化過程。

四、目標網站改版後怎樣辦
這是週期性項目裡唯一無法提前避免的風險。
目標網站調整頁面結構後,原有的採集規則可能部分或全部失效。可能的表現是某個欄位突然大面積為空,或者條數明顯異常。
需要提前約定三件事:誰負責監測這種情況(我們會在每次更新時對比欄位完整率,異常會主動告知)、重新適配的成本怎樣算(結構小改通常包含在維護範圍內,大改會單獨說明並確認後再做)、適配期間的交付怎樣處理(是暫停一期還是交付部分欄位)。
把這三點寫清楚,改版發生時就不會變成爭拗。

關於數據一致性
週期性項目有一個容易被忽略的要求:採集參數必須固定。
地區、語言、排序方式、篩選條件,任何一項在第二次採集時發生變化,兩批數據就失去了可比性——而且這種差異從數據表面完全看不出來,只會表現為「數據好像變化很大」。
我們會把首次採集使用的全部參數寫進交付說明,後續更新沿用同一套參數。如果確實需要調整參數(比如擴大地區範圍),會作為一次新的基線重新開始,而不是和舊數據混在一起對比。
