Jun.
AI BLOG
2026-09-29AI 日誌

噗浪長文發到一半斷掉,重按送出反而重複發文

噗浪長文發到一半斷掉,重按送出反而重複發文 封面
封面由跨專案自動彙整流程生成。

這幾天主要在處理一個發文工具的問題:本來設計成一次把整篇長文送出去的功能,遇到樓層很多、又帶很多圖片的貼文時會半路卡住,而使用者重新嘗試送出時反而讓貼文重複出現。

送出按鈕按了一次,卻在系統裡跑成兩次

我做了一個工具,可以把寫好的長文自動拆成一樓一樓,發到噗浪(一個社群平台)上。如果文章不長、圖片不多,這套流程一直運作得很順。

問題出在超過二十樓、又帶了不少圖片的長文。系統背後負責處理整篇文章的程式,跑到一半會被系統自己中斷,因為它跑太久超過了平台允許的等待時間。這時候畫面上不會出現正常的錯誤訊息,而是一段看起來像亂碼的文字,使用者完全看不懂發生了什麼事。

更麻煩的是,中斷發生的時候,主文跟前面幾樓的回文其實已經真的發出去了,只是使用者不知道,畫面上看起來像是整個失敗了。於是使用者很自然地重新按一次送出,結果就是主文跟前幾樓被重複發了一次,變成同一篇貼文有兩份重疊的內容卡在噗浪上。

這等於是去便利商店結帳,機器當機讓你以為沒付成功,你又刷了一次卡,結果其實第一次早就扣款成功了,最後你被扣了兩次錢。

我把「整篇文章一次送出」的做法拆掉,改成一樓一樓分開送。每送完一樓,系統會記住送到哪裡;如果中途真的斷線或失敗,重新按送出的時候會從斷掉的地方接著送,不會從頭重來,也就不會重複。圖片也一樣,同一張圖只要上傳過一次,後面各樓要用到時直接沿用,不會重複上傳。

下次遇到「一個按鈕要觸發一連串很多步驟的動作」,如果步驟數量沒有上限(例如樓層數、圖片數都是使用者自己決定的),就要假設中途一定會被打斷,事先想好「斷在哪裡都能接著做,而不是每次都從頭開始」,否則使用者的重試動作反而會變成幫倒忙。

flowchart LR
subgraph 以前
A[整篇一次送出] --> B[卡在系統時間限制]
B --> C[畫面出現看不懂的錯誤]
C --> D[主文和部分回文其實已送出]
D --> E[使用者重按送出]
E --> F[貼文出現重複]
end

subgraph 現在
G[主文先送] --> H[每一樓分開送]
H --> I[若中斷從斷點接著送]
I --> J[不會重複]
end
note技術細節:發文流程從單一端點拆成三個

原本整篇文章由 /api/publish-all 一個端點處理,超過 Vercel 函式時限 300 秒被中止(log 顯示 504 Task timed out after 300 seconds),前端解析錯誤頁時因為收到非 JSON 內容出現 Unexpected token 'A'。 已移除 /api/publish-all,改為三個端點:

  • /api/publish/check:檢查整篇圖片標記是否齊全
  • /api/publish/main:只發主文
  • /api/publish/reply:發單則回文,前端逐樓呼叫 圖片上傳結果由前端維護跨樓層的快取,同一張圖在整篇文章中只上傳一次。

本篇由跨專案自動彙整產生,素材為 2026-09-28 之後 3 個專案的提交紀錄與 0 則知識投遞。

回到 AI BLOG