【程式設計】有關方格子文章重複出現的問題|唯一性的錯置

更新 發佈閱讀 5 分鐘

近一段時間,不只我,許多格友都不約而同發現一個令人困擾的現象:在方格子的排程文章列表中,會出現同一篇文章重複顯示的情況。乍看之下,彷彿是系統誤將文章複製了兩次,甚至三次;但當我們點進去檢查,卻會發現一件更弔詭的事——這些看似「重複」的文章,網址 ID 完全相同。(兩性之間的文章出現兩次,確認為同一篇)

raw-image

這代表什麼?

它不是「兩篇不同 ID 的文章被誤判為同一篇」,而是同一篇文章,在列表層級被重複呈現。這個問題表面上看似是顯示錯誤,但其背後,其實牽涉到一個在程式設計中非常經典、也非常容易被忽略的問題:唯一性(Uniqueness)的錯置


問題不是出在文章,而是出在「怎麼抓文章」

從使用者角度來看,我們直覺會以為系統在「文章層級」出了問題,例如:

  • 是否排程被重複建立?
  • 是否快取(Cache)未正確更新?
  • 是否前端列表渲染錯誤?

但隨著更多格友交叉比對、實際觀察後,逐漸浮現一個高度合理的推測:


問題很可能出在後端抓取排程文章的邏輯設計上。


更精確地說,是「抓排程文章時,系統認定『唯一值』的方式,出了偏差」。


關鍵推測:以「時間區間」當作唯一值

依目前觀察結果推斷,方格子在處理排程文章時,很可能採用了類似以下的設計邏輯:

  • 系統每 30 分鐘 為一個排程區間
  • 在這個時間區間內,預期只會有「一篇文章」需要顯示
  • 因此,在資料抓取或整理列表時,直接以「時間區間」作為唯一識別條件

換句話說,對系統而言:

「7:00、這個區段,只會有一篇排程文章。」

這在「理論假設」上似乎合理,但在「實際使用情境」中,卻完全站不住腳。


真實使用情境:多篇文章同一時間發送

對於創作者來說,這樣的使用行為非常常見:

  • 同一天發表 系列文章
  • 不同專欄,但設定在 同一時間點發送
  • 為了曝光或閱讀習慣,刻意統一在「整點」發文(例如晚上 7:00)

當格友在「同樣是 7:00」這個時間點,排程了 兩篇、甚至三篇不同文章 時,系統實際上會遇到一個它「沒有預期到的狀況」。


結果一:列表中出現「重複文章」

由於系統不是以「文章 ID」作為唯一值,而是以「時間區間」作為分組依據,於是就可能產生以下狀況:

  • 同一篇文章被重複撈取
  • 或在列表渲染時,被錯誤地顯示多次
  • 但實際點進去,全部都指向 同一個文章 ID

這就是為什麼我們會看到:

「看起來是兩篇文章,但實際上是同一篇。」


結果二:後續文章「被吃掉」

更嚴重的,還不只是重複顯示。

若系統在某個 30 分鐘區間內,只保留「第一筆」文章資料,那麼當格友在同一時間排程多篇文章時:

  • 第一篇:正常顯示
  • 第二篇:不顯示
  • 第三篇:完全消失於排程列表

但這些文章其實「都存在」,也都能透過直接網址開啟,只是在列表層級被忽略了

raw-image



本質問題:唯一鍵(Unique Key)設計錯誤

從純程式設計的角度來看,這是一個非常典型的錯誤:

不該作為唯一值的欄位,被拿來當唯一值使用。

在任何內容管理系統(CMS)中,合理的唯一識別,應該至少包含:

  • 文章 ID(Primary Key)
  • 或(文章 ID + 排程時間)

而不是:

  • 單純以「時間區間」當作唯一判斷條件

時間是可能重複的,尤其是在創作者高度活躍的平台上。


為什麼這個問題「不容易被發現」?

原因其實很現實:

  1. 一般使用者很少同一時間排程多篇文章
  2. 問題只會在「特定使用行為」下才會浮現
  3. 點進文章後又是正常的,讓人誤以為是自己眼花

直到越來越多格友同時遇到、彼此討論,這個模式才逐漸清楚浮現。


結語:這不是小 Bug,而是設計假設的問題

這類問題,並不是程式寫錯一行那麼簡單,而是:

一開始對「使用者行為」的假設,與真實世界不一致。

只要系統仍然假設「每個時間區間只會有一篇文章」,那麼這個問題就會一直存在。

對創作者來說,我們能做的或許有限,但至少現在——


我們終於知道問題不是出在自己身上,也不是文章出錯,而是唯一性被錯置了。


而對平台而言,真正需要修正的,並不是顯示層,而是資料結構中「誰才是真正唯一」的那個核心判斷。


如果你願意,我也可以幫你再寫一篇:

  • 🔧「給非工程師看的版本(白話解釋)」
  • 📣「寫給平台工程團隊的建議說明文」
  • 🧠「從產品設計角度反思排程系統」

只要跟我說一聲即可。

留言
avatar-img
留言分享你的想法!
avatar-img
普普文創
565會員
5.6K內容數
這裡就是一個小報社,普普文創、水彩速寫、迷你短篇、文創漫談、心靈雞湯、踏青步道、智慧音樂、美食天堂、超級房間。歡迎閱讀。。。謝謝。。
普普文創的其他內容
2025/12/19
踏入美術館挑高且光線充足的前廳,我的目光立刻被那架巨大的紙飛機吸引。這不是冰冷、閃爍金屬光澤的工業產品,而是用最樸實、最唾手可得的紙板構築而成。它以等比例的姿態占據了原本作為通道的公共空間,機身旁還架設了一組粗獷卻實用的登機梯,彷彿在低語:「爬上來吧,你的旅程從這裡開始。」對我而言,這件名為偽機
Thumbnail
2025/12/19
踏入美術館挑高且光線充足的前廳,我的目光立刻被那架巨大的紙飛機吸引。這不是冰冷、閃爍金屬光澤的工業產品,而是用最樸實、最唾手可得的紙板構築而成。它以等比例的姿態占據了原本作為通道的公共空間,機身旁還架設了一組粗獷卻實用的登機梯,彷彿在低語:「爬上來吧,你的旅程從這裡開始。」對我而言,這件名為偽機
Thumbnail
2025/11/27
很多人以為,能夠長期創作的人一定意志堅強、耐力驚人、抗干擾能力超高。可是真正寫了五千篇之後,我越來越確定一件事——自律不是意志力,而是設計。靠意志力的人,只能撐一下子;靠設計的人,才能走十年、二十年。為什麼?因為意志力比手機電量還不可靠。你會累、會煩、會遇到人生大小事、會被打亂節奏、會有低谷。
Thumbnail
2025/11/27
很多人以為,能夠長期創作的人一定意志堅強、耐力驚人、抗干擾能力超高。可是真正寫了五千篇之後,我越來越確定一件事——自律不是意志力,而是設計。靠意志力的人,只能撐一下子;靠設計的人,才能走十年、二十年。為什麼?因為意志力比手機電量還不可靠。你會累、會煩、會遇到人生大小事、會被打亂節奏、會有低谷。
Thumbnail
2025/11/26
創作者一開始最容易犯的錯,就是把每一篇文章都當作一場考試:今天沒有靈感,就像交不出卷;今天靈感滿滿,就像要一次把所有的分數湊到滿點。但真正能長期創作、持續產出的寫作者,從來不是靠靈感,而是靠「存稿庫」。存稿庫不是偷懶,是保持高產與穩定的核心系統。就像報社一定要有「庫存新聞」、電視台一定要有「備用
Thumbnail
2025/11/26
創作者一開始最容易犯的錯,就是把每一篇文章都當作一場考試:今天沒有靈感,就像交不出卷;今天靈感滿滿,就像要一次把所有的分數湊到滿點。但真正能長期創作、持續產出的寫作者,從來不是靠靈感,而是靠「存稿庫」。存稿庫不是偷懶,是保持高產與穩定的核心系統。就像報社一定要有「庫存新聞」、電視台一定要有「備用
Thumbnail
看更多