feat(console): 收件夾改裝=全部待辦分流台(三欄 80/15/5 + per-project 過濾)(#9) #41

Merged
Leo merged 1 commits from feat/console-triage-inbox into main 2026-07-08 15:13:59 +00:00
Owner

對應 issue #9(kb-ingest SDD R7 消費端):console 頁 7「收件夾」改裝成「全部待辦分流台」。issue 的「UI 改裝 + task 資料模型可先做」那半——triage engine / ingest 實資料另案(#8 灌入中)。

實作說明

資料源二合一GET /console/triage-data,取代 /console/inbox-data——後者唯一消費者就是本頁,一起改裝不留死端點;仍鎖 console session):

  • entry_type=todo(Logseq 萃取,Arcrun#8 ingest 線):content JSON 契約 {"text","marker","owner_tier":"ai|collab|leo","project","source","status":"new|done"} 照 render
  • entry_type=inbox(Telegram):沿用 {"text","from","status"}

三欄分流 80/15/5:ai=AI 會幫我搞定/collab=AI 做完你接手/leo=非我不可。各項顯示 text、project 徽章、source、marker;status:done 預設隱藏、頁尾一鍵切換顯示。

per-project 過濾:chips(全部/各 project/未分項),同一包資料前端過濾、零額外請求(leo 手機看,省來回)。手機直排沿 console 單檔薄殼;讀 KBDB 走既有 kbdbBase HTTP 慣例,不新增 binding。

分層:契約解析/分欄/計數=純函式 lib/console-triage-model.ts(比照 console-dashboard-model / PR#36-#40 模式),route 只做 IO,頁面只渲染。

契約/設計偏移(兩處,皆有理由)

  1. 無 tier 者:issue 給「未分類欄 或 預設 collab」二選——採歸 collab 欄+「未分流」徽章(不另開第四欄,80/15/5 的三欄故事不破;不冒領 ai、不誤判 leo;triage engine 回填後徽章自然消失)。
  2. 舊詞容錯:issue 原文 tier 詞彙是 mira80/collab15/leo5,契約定案是 ai/collab/leo——兩套都認(同義映射),ingest 端若照舊詞灌,UI 不至於整欄蒸發。

測試證據

  • 新增 tests/console-triage-model.test.ts 11 測全綠;紅→綠驗證:抽掉實作模組同測試即紅(module not found)
  • 全套 vitest:98 passed / 1 failed——唯一失敗為 pre-existing executor.test.ts「不存在的零件」訊息斷言(main 同紅,與本 PR 無關)
  • tsc --noEmit:新增/修改檔零錯誤(main 既有 12 行 ExecutionContext 錯誤不變)
  • console.ts 模板內兩個 <script> 區塊還原跳脫後 new Function parse 全過
  • 本機 wrangler dev --local 端到端 smoke(未部署):/console 200 且含分流台 UI;/console/triage-data 無 session 401、真 session 回誠實空模型 {"items":[],...counts 全 0}

不部署:未跑 wrangler deploy / acr update,部署與 live 寫入閘依 issue 由總管與 leo 確認。

[總管-subagent]

🤖 Generated with Claude Code

對應 issue #9(kb-ingest SDD R7 消費端):console 頁 7「收件夾」改裝成「全部待辦分流台」。issue 的「UI 改裝 + task 資料模型可先做」那半——triage engine / ingest 實資料另案(#8 灌入中)。 ## 實作說明 **資料源二合一**(`GET /console/triage-data`,取代 `/console/inbox-data`——後者唯一消費者就是本頁,一起改裝不留死端點;仍鎖 console session): - `entry_type=todo`(Logseq 萃取,Arcrun#8 ingest 線):content JSON 契約 `{"text","marker","owner_tier":"ai|collab|leo","project","source","status":"new|done"}` 照 render - `entry_type=inbox`(Telegram):沿用 `{"text","from","status"}` **三欄分流 80/15/5**:ai=AI 會幫我搞定/collab=AI 做完你接手/leo=非我不可。各項顯示 text、project 徽章、source、marker;`status:done` 預設隱藏、頁尾一鍵切換顯示。 **per-project 過濾**:chips(全部/各 project/未分項),同一包資料前端過濾、零額外請求(leo 手機看,省來回)。手機直排沿 console 單檔薄殼;讀 KBDB 走既有 kbdbBase HTTP 慣例,不新增 binding。 **分層**:契約解析/分欄/計數=純函式 `lib/console-triage-model.ts`(比照 console-dashboard-model / PR#36-#40 模式),route 只做 IO,頁面只渲染。 ## 契約/設計偏移(兩處,皆有理由) 1. **無 tier 者**:issue 給「未分類欄 或 預設 collab」二選——採**歸 collab 欄+「未分流」徽章**(不另開第四欄,80/15/5 的三欄故事不破;不冒領 ai、不誤判 leo;triage engine 回填後徽章自然消失)。 2. **舊詞容錯**:issue 原文 tier 詞彙是 mira80/collab15/leo5,契約定案是 ai/collab/leo——兩套都認(同義映射),ingest 端若照舊詞灌,UI 不至於整欄蒸發。 ## 測試證據 - 新增 `tests/console-triage-model.test.ts` **11 測全綠**;紅→綠驗證:抽掉實作模組同測試即紅(module not found) - 全套 vitest:**98 passed / 1 failed**——唯一失敗為 pre-existing `executor.test.ts`「不存在的零件」訊息斷言(**main 同紅**,與本 PR 無關) - `tsc --noEmit`:新增/修改檔零錯誤(main 既有 12 行 ExecutionContext 錯誤不變) - console.ts 模板內兩個 `<script>` 區塊還原跳脫後 `new Function` parse 全過 - 本機 `wrangler dev --local` 端到端 smoke(未部署):`/console` 200 且含分流台 UI;`/console/triage-data` 無 session 401、真 session 回誠實空模型 `{"items":[],...counts 全 0}` **不部署**:未跑 wrangler deploy / acr update,部署與 live 寫入閘依 issue 由總管與 leo 確認。 [總管-subagent] 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Leo added 1 commit 2026-07-08 14:45:36 +00:00
console 頁 7 從 Telegram 訊息清單改裝成三欄分流台:
- 資料源二合一:entry_type=todo(Logseq 萃取,Arcrun#8 ingest 線)+ entry_type=inbox
  (Telegram),/console/inbox-data → /console/triage-data(唯一消費者是本頁,一起改
  裝不留死端點;仍鎖 console session——待辦原文屬機敏)
- 三欄 80/15/5:ai=AI 會幫我搞定/collab=協作/leo=非我不可;owner_tier 缺席或看
  不懂(triage engine 還沒判)→ 歸 collab 欄+「未分流」徽章,不冒領 ai、不誤判 leo
- 各項顯示 text/project 徽章/source/marker;status:done 預設隱藏可切換
- per-project chips 過濾(全部/各 project/未分項),前端同包資料過濾零額外請求
- 手機直排沿 console 單檔薄殼;讀 KBDB 走既有 kbdbBase HTTP 慣例,不新增 binding

契約解析/分欄/計數=純函式 lib/console-triage-model.ts(比照 console-dashboard-model
模式,route 只做 IO),tests/console-triage-model.test.ts 11 測全綠(紅→綠驗證:抽掉
實作模組同測試即紅)。全套 vitest 98 passed,唯一失敗為 pre-existing executor
「不存在的零件」訊息斷言(main 同紅,與本 PR 無關)。

[總管-subagent]

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Leo merged commit 1bc83c7124 into main 2026-07-08 15:13:59 +00:00
Sign in to join this conversation.