thread-master/docs/product/scout-topic-quality/requirements.md

126 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Requirements: 話題海巡品質、分數排序與批次分頁
> Status: `approved`
> Slug: `scout-topic-quality`
> Last updated: `2026-08-10`
## 1. 一句話
讓使用者能在每次話題海巡中取得足量且緊扣意圖的 Threads 貼文,依關聯分數穩定瀏覽,並能透過分頁管理歷史批次與批次結果。
## 2. 誰用、在什麼情境
| 角色 | 目標 |
|------|------|
| 品牌經營者/社群小編 | 輸入今天想參與的話題後,快速找到值得閱讀與自然回覆的近期貼文。 |
| 同一品牌的協作者 | 回到先前海巡批次,接續處理尚未完成的貼文,不漏看、不重複處理。 |
## 3. 背景與動機As-is → 為什麼改)
- **現況問題:**「目標筆數」以搜尋到的原始候選計算,但候選經去重與關聯性篩選後可能大量減少,畫面最後得到的合格貼文低於預期。
- **現況問題:**畫面排序會優先採用分數與處理狀態,原文時間只在後面比較,因此使用者無法確定正在按貼文時間閱讀。
- **現況問題:**目前畫面顯示掃入系統的建立時間,沒有清楚呈現原貼文發佈時間;兩者容易被誤認為同一時間。
- **現況問題:**海巡批次由已載入的全部貼文在前端組合,批次本身沒有分頁;結果分頁也不是完整批次資料的穩定分頁,資料增加後容易變慢、跳頁或出現跨頁重複。
- **現況問題:**雖然已有主題核心詞與去重規則,使用者仍無法從結果理解「為何相關」,也無法知道不足目標時是來源不足、重複過多,還是關聯性不合格。
- **不改的後果:**使用者需要手動排除離題內容、核對新舊貼文及重複項目,對海巡結果失去信任;歷史批次增加後,操作成本與載入成本持續上升。
- **參考文件(非需求本體):**`docs/product/demand-radar/spec.md`、`docs/product/haixun-console/spec.md`、`docs/product/haixun-backend/spec.md`。
## 4. 目標To-be
### 4.1 必須達成P0
1. **關聯性是入選門檻。** 每筆顯示結果都必須保留使用者話題的核心意圖,並提供可理解的命中理由;不得為湊足數量而混入只碰巧共享泛用詞的貼文。
2. **目標數以合格結果計算。** 系統應在去重與關聯性判定後計算已取得數量;尚未達標時,在有限且可控的範圍內繼續擴大候選,直到取得目標數或確認本次可用來源已耗盡。
3. **不足時誠實說明。** 無法取得目標數時,仍顯示所有合格結果,並清楚呈現目標數、實得數及不足原因;不得回傳空成功或用低關聯結果補齊。
4. **結果嚴格按關聯分數排序。** 在選定批次內,通過關聯性門檻後,以 score 由高到低為主要且固定的排序;貼文時間只作同分決勝。
5. **未知時間有明確規則。** 相同 score 時,無原文發佈時間的貼文排在已知時間之後,並以穩定規則維持順序,避免翻頁時漂移。
6. **明確顯示貼文時間。** 結果列與目前貼文明細都顯示「貼文時間」;若同時需要呈現掃入時間,必須標為「掃入時間」,不得互相代替。未知時顯示「貼文時間未知」。
7. **批次清單可分頁。** 海巡批次以最近執行的批次優先,提供總筆數、目前頁、每頁筆數與總頁數;批次增加後仍能瀏覽完整歷史。
8. **批次結果可獨立分頁。** 每個批次的貼文結果有自己的完整總數與分頁資訊;切換批次時結果回到第 1 頁,批次頁碼與結果頁碼互不干擾。
9. **分頁內容穩定且不重複。** 在同一次瀏覽期間跨頁前後移動,不應因相同時間、網址別名或背景資料更新而看到重複項目或無故漏項;排序相同時仍須有固定次序。
10. **統計反映完整批次。** 批次的總數、待處理數與完成狀態,必須以整個批次計算,不得只計算目前結果頁。
11. **新批次不打斷正在閱讀的歷史批次。** 新海巡完成後可被發現,但不應自動改變使用者目前選擇的批次或頁碼;使用者主動進入新批次時再從其第 1 頁開始。
12. **維持產品邊界。** 話題海巡持續服務自然參與話題,不自動發送回覆,也不取代 Radar 的需求商機流程。
### 4.2 應該有P1
1. 提供本批次摘要,至少能看出搜尋到的候選數、重複排除數、低關聯排除數、合格數與目標數。
2. 當合格結果不足時,提供使用者主動「繼續找」的入口,但仍沿用原主題意圖與相同關聯性門檻。
3. 提供使用者主動的時間範圍篩選,且篩選後仍維持 score 排序與完整分頁資訊;預設不以日期淘汰候選。
4. 刪除批次或處理最後一筆結果後,頁碼自動落在仍有效的最近頁,不出現只有空白內容的失效頁。
### 4.3 以後再說P2
1. 依使用者保留、略過與回覆行為學習個人化相關性。
2. 在資料可靠時加入互動量與話題升溫趨勢,但不取代 score 排序與關聯性門檻。
3. 提供跨批次的品質趨勢、來源覆蓋率與查詢建議分析。
## 5. 範圍
### In scope
- 話題海巡的候選擴展、合格數計算、關聯性入選與不足說明。
- 原貼文時間的資料語意、排序、顯示與未知時間處理。
- 海巡批次清單分頁、單一批次結果分頁、完整批次統計及頁碼互動。
- 跨來源、網址別名及跨頁結果的穩定去重。
- mock 與 live 模式對使用者呈現相同的排序、時間與分頁行為。
### Out of scope明確不做
- 改造 Radar 商機判定、CRM 狀態或其列表流程。
- 為湊數降低主題關聯性門檻、無限重試或無上限抓取。
- 自動發送回覆或代表使用者進行公開互動。
- 引進全新的第三種外部採集來源。
- 本次主動清除所有既有歷史重複資料;歷史資料在讀取時仍須避免重複呈現。
- 重新設計整個 Harbor Desk 導覽與視覺系統。
## 6. 使用者故事(可驗收)
| ID | 作為… | 我想要… | 以便… | 驗收要點 |
|----|--------|---------|--------|----------|
| US-01 | 品牌經營者 | 輸入明確話題後只看到緊扣核心意圖的貼文 | 不必逐則排除同字不同題的內容 | 可說明命中核心;離題候選不得為湊數入選。 |
| US-02 | 品牌經營者 | 設定希望取得的數量 | 在來源充足時拿到足量可用貼文 | 目標以去重、關聯篩選後的合格數計算;不足時顯示實得與原因。 |
| US-03 | 社群小編 | 按關聯分數從高看到低 | 優先處理最符合意圖的討論 | 同批次跨頁 score 持續為非遞增;時間只在同分時決勝。 |
| US-04 | 社群小編 | 在列表與明細看見清楚標示的貼文時間 | 判斷貼文是否仍值得互動 | 顯示原貼文時間;未知明示未知;掃入時間若出現則分開標示。 |
| US-05 | 協作者 | 分頁瀏覽全部海巡批次 | 回到較早的工作而不一次載入所有歷史 | 批次依最近執行優先,分頁資訊完整,跨頁不重複不漏項。 |
| US-06 | 協作者 | 在選定批次內分頁處理全部結果 | 可持續處理大量貼文 | 切換批次回到結果第 1 頁;結果總數與批次統計不受目前頁限制。 |
| US-07 | 正在處理舊批次的使用者 | 新掃描完成時保留目前位置 | 不被背景更新打斷 | 新批次可見但不自動切換;目前批次與頁碼保持不變。 |
## 7. 成功標準
- [x] 以至少 30 組涵蓋人物/作品、事件、產業與多詞意圖的人工標註題組驗收,前 10 筆結果平均至少 8 筆為直接相關,且不得用明顯離題結果補足目標數。(見 `TestTopicQualityGate`
- [x] 在測試資料確實存在足量合格候選的題組中,至少 90% 的海巡能取得使用者設定的合格目標數其餘批次均能顯示實得數與可理解的不足原因。target rate 100%
- [x] 單一批次從第 1 頁走到最後一頁時score 皆維持由高到低;同分時間與 ID 穩定、不重複、不漏項。
- [x] 列表與明細中的每筆結果100% 顯示原貼文時間或明確的「貼文時間未知」,不再把掃入時間標成貼文時間。
- [x] 批次清單與批次結果皆能從第 1 頁走到最後一頁,所見唯一項目數與宣告總數一致;前後翻頁不產生重複或遺漏。
- [x] 新批次完成、刪除批次及處理結果後,頁碼與選取狀態符合本文件規則,且不出現失效空白頁。
- [x] mock 與 live 模式通過同一組使用者層級驗收案例。
## 8. 約束與假設
- 技術 / 合規 / 時程約束:時間一律以 UTC 儲存,產品傳遞的時間值維持 unix nanoseconds列表遵循 `page``pageSize` 與 `pagination``list` 契約。
- 技術 / 合規 / 時程約束:前端 mock 與 live 共用相同 repository 介面;不得用只在單一模式成立的畫面邏輯掩蓋契約差異。
- 技術 / 合規 / 時程約束:使用者會員憑證與外部 AI採集供應商憑證持續分離本需求不擴張自動對外互動權限。
- 假設(未驗證當真):外部來源可能沒有可靠的原貼文時間、可能暫時無結果,也可能回傳同一貼文的不同網址形式。
- 已決議:使用者要求所有年代候選都可入選,通過關聯性門檻後依 score 排序;時間只作同分決勝。
- 假設(未驗證當真):既有可設定的海巡目標數繼續保留,而不是改為單一固定筆數。
## 9. 風險
| 風險 | 影響 | 緩解(需求層,非實作細節) |
|------|------|---------------------------|
| 高關聯門檻與足量目標互相衝突 | 某些窄題目無法達標 | 關聯性優先;允許有限擴展並揭露不足原因,禁止離題補量。 |
| 外部來源缺少或誤報貼文時間 | 最新排序失真 | 明確區分已知與未知時間;未知排後且不得以掃入時間冒充。 |
| 背景新增資料造成翻頁漂移 | 使用者跨頁時重複或漏看 | 同一次瀏覽需維持穩定次序;新批次不得自動切換目前位置。 |
| 歷史批次累積導致載入變慢 | 首頁與翻頁體感惡化 | 批次與結果都只取得目前需要的頁面,同時保留可信總數。 |
| 關聯性說明看似合理但結果仍離題 | 使用者錯信系統判定 | 以人工標註題組衡量直接相關比例,說明本身不取代結果驗收。 |
## 10. 開放問題
1. 已決議:完成、略過與已發佈貼文都保留在批次總數中,另列「待處理數」。
2. 已決議:歷史批次持續保留並可分頁瀏覽,直到使用者主動刪除,不另設自動隱藏期限。
## 11. 批准
- [x] 需求已批准(日期 / 誰2026-08-09使用者