Conversation
清單目前回的是全站每一個人的卡,沒有辦法只看某一位成員開的。 每一列本來就寫著開卡人,所以缺的是篩選不是資料。 說明裡寫明它是單純的字串比對、不做身分解析:打錯的成員代號會回 一個空清單,而空清單與「這個人真的沒有卡」逐字相同。 三份說明副本(API 說明、x-mcp.description、legacy descriptor) 一併更新,產生器的一致性檢查通過;mcp-catalog.json 為重跑產生器 產生,未手改。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
[why] 任務結案只掃「綁在這張任務上」的卡,沒綁任務的請示不會被掃到。 被遣散的外包開的那幾張因此留在 owner 的等我回覆,開卡人已經不存在, 答了也送不回去。成員解僱與交接換人兩條路本來就依開卡人掃,只有結案 這道門沒有。 清單那一側回的是全站每一個人的卡,看不出某一位成員在等什麼。 [how] dismissOutsourceWorkersForTask 改成回傳被釋出的外包 id,由 closeTask 在鎖外、緊接既有的 expireWaitingCardsForTask 之後逐一掃。 卡片寫入會碰到 releaseCardHold、task DAL 與 SSE hub,不能在 outsourceMu 之內做;沿用既有的 best-effort 姿態,掃卡失敗只記 log。 清單新增選用的 opened_by,篩選排在 limit 截斷之前——排在之後的話, 帶 limit 的呼叫會先被別人的卡佔滿名額再被篩掉,而那個短少的輸出與 「這個人真的沒有卡」逐字相同。 ocapi_gen.go 與 frontend schema.ts 為重跑產生器產生,未手改;八道 drift- 檢查全過。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
[why] 獨立審查造的兩顆 mutant 改壞了卻沒有任何測試紅。 其一:把 `openedBy != ""` 換成 `params.OpenedBy != nil`,空字串就從 「不過濾」變成「過濾掉所有人」回空面板,而整包全綠。行為維持現狀 (空字串=不過濾,與 limit 的 0/負數=整個面板同一個慣例),缺的是 說明與測試。 其二:dismissOutsourceWorkersForTask 的中間那條出口——外包列表讀取 失敗時仍要回報已經釋出的 id——被改成 `return nil` 也沒有東西紅。那 幾位已經被遣散,卡卻會永遠留在 owner 面板上。 [how] spec/openapi.json 的 opened_by 描述補一句空字串視同沒傳,措辭 比照同一份檔案裡 limit 那段;mcp-catalog.json 為重跑產生器產生。 TestHandleListReplyCardsApiReplyCardsGet 補一格空字串與純空白的面板 比對;TestCloseTask 補一格讓外包列表讀取在釋出之後才壞(沿用既有的 corrupt member read value 手法),釘住已釋出的 id 仍被回報、卡仍被 標為過期。 八道 drift- 檢查全過。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
「never an empty one」在面板本來就沒有任何卡的時候不成立。 收緊成「the filter is what never empties it」,講的才是這段 真正要講的事:過濾被丟掉了,不是站上沒有卡。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
外包在任務停在可結案時開的卡,按下結案那一刻它就被釋出, 答案沒有人接得住。系統不擋這一刻(owner 裁定),改用收尾 文字提醒,並點名用哪個工具查、查到了要怎麼判斷。 措辭經 owner 於 rc-0f5aa69f79a4 圈定。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
原本只講「仍需要答案就先不要結案」,沒講另一種情況。正職 自己結案時系統不會碰他的卡,那張卡會永遠留在 owner 的待 回覆面板上,而開卡人還活著、卻不會再回來看它。成員本來就 有權標掉自己開的卡。 owner 於 rc-1ce7a803b51e 圈定。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
前一顆寫的是他先圈、隨後又用文字覆寫掉的那個答案。這一顆 逐字採用他在 rc-946b0e424297 圈的版本 C:範圍是自己開的 每一張還在等回覆的卡,不依身分縮小。 範圍不縮小的理由寫在卡上:這張票的起因那一次,卡片跟任務 無關,照「只處理跟這張任務有關的」寫會漏掉它。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
[T-261]
任務結案而遣散外包時,那位外包開的、還沒被回覆的請示卡不會被清掉;owner 看到的畫面是「外包已釋出」,他後來的回答沒有任何人會接。本包補上四件事:
dismissOutsourceWorkersForTask上方那句「與任務結案同一個掃除」的假敘述改正;卡片掃除改為由closeTask在鎖釋放後執行(卡片寫入會觸及任務層與事件推送,不可在outsourceMu下做)。opened_by)。每一項都有一支把行為改壞就會失敗的測試釘住。
重接說明
本分支原本的基底是
c67268a4,今天 T-253(#533)與 T-259(#535)落地後重接到8d5ed343。git range-diff:七顆 commit 有六顆逐字相同;唯一有變動的那顆是因為 T-253 改寫了reclaimWorkerSession週邊結構,改動已逐行確認落在正確位置。spec/openapi.json與三個產生檔)。只手解來源檔spec/openapi.json;三個產生檔一律刪掉重跑產生器,沒有手解。drift-檢查全部通過;本機編譯通過、受影響測試 282 支 0 失敗。🤖 Generated with Claude Code
https://claude.ai/code/session_018LeoM4EPnidH6zmnbnhk6b