fix(console): 真實性稽核修正——時區統一台北、精耕層數字、今日完成接 sprint 任務板 #37

Merged
Leo merged 1 commits from fix/console-truth-audit into main 2026-07-07 12:35:35 +00:00
Owner

草稿 PR(稽核輪產物,總管審後才 merge;本輪紅線:不 merge、不部署)

背景

Mira console 逐頁真假稽核(leo 兩質疑+三裁決)後的修正包。稽核結論摘要:

  • 458,732 是真數字(cypher /kbdb/entries?limit=1 與 base 一手同值),但混了 14-E 搬遷遺產(block 53,185+note 14,022+value 388,797…)與精耕層——leo 裁:遺產 deprecated 不再顯示
  • 憑證日期 7/6 也是真的:raw created_at=1783349834 =台北 2026-07-06 22:57。問題是①只顯示日期沒時分(深夜建立被誤讀成「差一天」)②用瀏覽器本地時區渲染,換裝置就換日期。
  • 另抓到一個真 bug:dashboard-data 的 entries 計數沒帶 owner_id,混到別租戶(459,137 vs leo 的 458,732)。

改動

B1 時區統一 Asia/Taipei:新 lib/taipei-time.ts——server 判定(#36 台北日同套)與頁面 client JS 單一來源,等價性由單測互鎖(new Function 求值 client 版逐案對照)。憑證頁顯示「YYYY-MM-DD HH:MM(台北)」。

B2 精耕層數字:新 GET /console/kb-scale-data(wiki 卡/三元組/已嵌入+最近寫入;limit=1/現成 stats 聚合,3 subrequests 不掃庫)。總庫搜尋頁頂與設定頁系統資訊改讀它;搜尋仍搜全庫、結果 wiki_card 加「精耕」綠標;dashboard 駕駛艙「總庫規模」列改「精耕層 wiki 卡」。

B3 設定頁誠實升級:vectorize 文案改具體事實(部署端 config.yaml kbdb_embed: trueacr update,#32 形態 config 同步教訓)+live 探測狀態(今日實測 live 已是 mode=semantic);新增 MCP token TTL 誠實佔位(GET /console/settings-data,可調功能=Arcrun#19,實作前部署端 env 調,不假裝能遠端改)。

C 今日完成/今日路線接 sprint 任務板(leo 拍板「到底完成了多少事」):比照 #36 等leo清單模式,同一輪 Gitea fetch(90s CF cache 共用)解析「## 任務板」;「今日完成」只認「完成(今天台北日)」標記、[x] 無日期不冒領;快取存原始 completed_days(跨台北午夜不誤算);板今天沒 commit → 誠實標「今日任務板未更新(最後 N 小時前)」;dash_task 降 fallback;燈號判定維持 #36 原則不變。parser 用 live 07a/07b 檔實測過(棄「首個粗體」標題法——實讀發現會抽到「完成(…)」註記)。

驗證

  • tsc --noEmit exit 0
  • vitest run 82/83(唯一失敗=pre-existing executor「不存在的零件」,stash 回 main 複驗同紅,非本次引入)
  • 新測試:taipei-time 10 案例(跨日/跨年/client-server 等價/leo 實測 epoch 1783349834→2026-07-06 22:57)+任務板 parser/模型 7 案例+cache 層 board 回放
  • 兩頁 inline JS:渲染 HTML→抽 <script>node --check 全過(mistakes #24 手法)
  • live sprint 檔實測:今日(07-07)今日完成 0/11、開項 11 條標題乾淨(誠實——板今天沒新勾選)

部署後 leo 會看到什麼(5.5 留總管)

  • 駕駛艙「今日完成 0 / 11 件」+今日路線=07b 任務板 8 項+07a 殘 3 項,來源標「sprint 任務板・更新於 N 小時前」
  • 總庫搜尋頁頂:「精耕層 wiki 卡 4・三元組 51・已嵌入 65・最近寫入 …」(458,732 不再出現在招牌位)
  • 憑證頁:「建立於 2026-07-06 22:57(台北)」
  • 設定頁:vectorize 顯示「已啟用(live 探測 mode=semantic)」+開關真相文案;新 MCP TTL 區塊「目前生效 2,592,000 秒(約 30 天)・未設 env,用預設值」
> 草稿 PR(稽核輪產物,總管審後才 merge;本輪紅線:不 merge、不部署) ## 背景 Mira console 逐頁真假稽核(leo 兩質疑+三裁決)後的修正包。稽核結論摘要: - **458,732 是真數字**(cypher `/kbdb/entries?limit=1` 與 base 一手同值),但混了 14-E 搬遷遺產(block 53,185+note 14,022+value 388,797…)與精耕層——leo 裁:**遺產 deprecated 不再顯示**。 - **憑證日期 7/6 也是真的**:raw `created_at=1783349834` =台北 2026-07-06 **22:57**。問題是①只顯示日期沒時分(深夜建立被誤讀成「差一天」)②用瀏覽器本地時區渲染,換裝置就換日期。 - 另抓到一個真 bug:dashboard-data 的 entries 計數**沒帶 owner_id**,混到別租戶(459,137 vs leo 的 458,732)。 ## 改動 **B1 時區統一 Asia/Taipei**:新 `lib/taipei-time.ts`——server 判定(#36 台北日同套)與頁面 client JS 單一來源,等價性由單測互鎖(`new Function` 求值 client 版逐案對照)。憑證頁顯示「YYYY-MM-DD HH:MM(台北)」。 **B2 精耕層數字**:新 `GET /console/kb-scale-data`(wiki 卡/三元組/已嵌入+最近寫入;limit=1/現成 stats 聚合,3 subrequests 不掃庫)。總庫搜尋頁頂與設定頁系統資訊改讀它;搜尋仍搜全庫、結果 `wiki_card` 加「精耕」綠標;dashboard 駕駛艙「總庫規模」列改「精耕層 wiki 卡」。 **B3 設定頁誠實升級**:vectorize 文案改具體事實(部署端 `config.yaml` `kbdb_embed: true`+`acr update`,#32 形態 config 同步教訓)+live 探測狀態(今日實測 live 已是 `mode=semantic`);新增 MCP token TTL 誠實佔位(`GET /console/settings-data`,可調功能=Arcrun#19,實作前部署端 env 調,不假裝能遠端改)。 **C 今日完成/今日路線接 sprint 任務板**(leo 拍板「到底完成了多少事」):比照 #36 等leo清單模式,同一輪 Gitea fetch(90s CF cache 共用)解析「## 任務板」;「今日完成」只認「完成(今天台北日)」標記、`[x]` 無日期不冒領;快取存原始 completed_days(跨台北午夜不誤算);板今天沒 commit → 誠實標「今日任務板未更新(最後 N 小時前)」;dash_task 降 fallback;燈號判定維持 #36 原則不變。parser 用 live 07a/07b 檔實測過(棄「首個粗體」標題法——實讀發現會抽到「完成(…)」註記)。 ## 驗證 - `tsc --noEmit` exit 0 - `vitest run` **82/83**(唯一失敗=pre-existing executor「不存在的零件」,stash 回 main 複驗同紅,非本次引入) - 新測試:taipei-time 10 案例(跨日/跨年/client-server 等價/leo 實測 epoch 1783349834→`2026-07-06 22:57`)+任務板 parser/模型 7 案例+cache 層 board 回放 - 兩頁 inline JS:渲染 HTML→抽 `<script>`→`node --check` 全過(mistakes #24 手法) - live sprint 檔實測:今日(07-07)今日完成 0/11、開項 11 條標題乾淨(誠實——板今天沒新勾選) ## 部署後 leo 會看到什麼(5.5 留總管) - 駕駛艙「今日完成 0 / 11 件」+今日路線=07b 任務板 8 項+07a 殘 3 項,來源標「sprint 任務板・更新於 N 小時前」 - 總庫搜尋頁頂:「精耕層 wiki 卡 4・三元組 51・已嵌入 65・最近寫入 …」(458,732 不再出現在招牌位) - 憑證頁:「建立於 2026-07-06 22:57(台北)」 - 設定頁:vectorize 顯示「已啟用(live 探測 mode=semantic)」+開關真相文案;新 MCP TTL 區塊「目前生效 2,592,000 秒(約 30 天)・未設 env,用預設值」
Leo added 1 commit 2026-07-07 12:26:27 +00:00
稽核輪(fix/console-truth-audit,總管派工+leo 三裁決):

B1 時區:console 全站日期/時間顯示統一 Asia/Taipei(新 lib/taipei-time.ts,
   server 判定與頁面 client JS 同一套、等價性單測互鎖)。原本用瀏覽器本地
   getter——換裝置就換日期;憑證頁改顯「日期+時分(台北)」:raw 1783349834
   =台北 2026-07-06 22:57,7/6 顯示是真的,缺的是時分與固定時區。

B2 總庫數字(leo 裁:14-E 遺產 deprecated 不再顯示):總庫搜尋/設定頁頭部
   統計改讀新 GET /console/kb-scale-data(精耕層 wiki 卡/三元組/已嵌入+最近
   寫入,全 live、limit=1/stats 聚合不掃庫);搜尋仍搜全庫、結果 wiki_card
   加「精耕」綠標;dashboard-data 的 entries 計數補 owner_id(原混租戶:
   459,137 vs leo 458,732)。

B3 設定頁:vectorize 文案改具體事實(config kbdb_embed+acr update,#32
   教訓)+live 狀態;新增 MCP token TTL 誠實佔位(GET /console/settings-data,
   可調功能=Arcrun#19,不假裝能遠端改)。

C 今日完成/今日路線接 sprint 任務板(leo 拍板):比照 #36 等leo清單模式,
   同一輪 Gitea fetch(90s CF cache 共用)解析「## 任務板」checkbox;「今日
   完成」只認「完成(今天台北日)」標記,[x] 無日期不冒領;快取存原始
   completed_days,跨台北午夜不誤算;板檔今天沒 commit → 頁面誠實標「今日
   任務板未更新」;dash_task 降 fallback、燈號判定不變。parser 以 live
   07a/07b 檔實測(標題抽取棄「首個粗體」——實讀發現會抽到完成註記)。

驗證:tsc exit 0;vitest 82/83(1 失敗=pre-existing executor「不存在的
零件」,stash 於 main 複驗同樣紅);新增 taipei-time 10 案例(含跨日/跨年/
client-server 等價/leo 實測 epoch)+任務板 parser 7 案例;兩頁 inline JS
渲染後抽 <script> node --check 全過(mistakes #24 手法)。
Author
Owner

[總管] 審查 內容全數核實通過,去 WIP 標題即可 merge(mergeable:False 純 WIP 前綴,非衝突——main 是 ancestor)。

核實通過(稽核修得很正)

  • owner_id 混租戶 bug 真修:dashboard-data 的 entries/wiki_card 計數補 owner_id:tenant(實測 459,137→leo 458,732)=抓到的是真 bug,改對。
  • 時區統一台北taipei-time.ts 固定 +8(台北無 DST,用 UTC getter+固定位移,不依賴 Intl 資料庫)=正確且輕;client/server 單一來源+單測互鎖(new Function 求值 client 版對照)=防兩份漂移,讚。leo 實測 epoch 1783349834→2026-07-06 22:57 有測試釘住。
  • 今日完成不冒領:只認「完成(今天台北日)」標記,[x] 無日期→不歸任何一天(寧略過不誤判)=防假綠的正確設計。板今天沒 commit→誠實標「未更新 N 小時前」,dash_task 降 fallback,燈號沿用 #36 原則。
  • 精耕層數字kb-scale-data limit=1/stats 聚合 3 subrequest 不掃庫;458,732 從招牌位下架(14-E 搬遷遺產 deprecated 不顯示,對齊 leo 裁決)。
  • 本機實跑:taipei-time 10+dashboard-model 相關 28/28 綠tsc 過;PR 自報 82/83(唯一 fail=main 既有 executor,非本次)核實屬實。

一個確認(不擋)

這輪同 #36 一樣打 Gitea 讀 sprint——確認共用同一個 90s CF cache(PR 說「同一輪 Gitea fetch 共用」)而非各開一路,別讓稽核頁與 dashboard 頁各打一輪 Gitea。看 code 是共用 cachedGiteaWaiting 家族=對,記一筆。

去 WIP 貼 mergeable:true 後我這邊放行。這輪把你『首頁對不上進度』的三個不信任(數字混搬遷/憑證看似差一天/換裝置換日期)全對症了,是實打實的真實性修復。

[總管] 審查 ✅ **內容全數核實通過,去 WIP 標題即可 merge**(mergeable:False 純 WIP 前綴,非衝突——main 是 ancestor)。 ## 核實通過(稽核修得很正) - **owner_id 混租戶 bug 真修**:dashboard-data 的 entries/wiki_card 計數補 `owner_id:tenant`(實測 459,137→leo 458,732)=抓到的是真 bug,改對。 - **時區統一台北**:`taipei-time.ts` 固定 +8(台北無 DST,用 UTC getter+固定位移,不依賴 Intl 資料庫)=正確且輕;client/server 單一來源+單測互鎖(`new Function` 求值 client 版對照)=防兩份漂移,讚。leo 實測 epoch 1783349834→`2026-07-06 22:57` 有測試釘住。 - **今日完成不冒領**:只認「完成(今天台北日)」標記,`[x]` 無日期→不歸任何一天(寧略過不誤判)=防假綠的正確設計。板今天沒 commit→誠實標「未更新 N 小時前」,dash_task 降 fallback,燈號沿用 #36 原則。 - **精耕層數字**:`kb-scale-data` limit=1/stats 聚合 3 subrequest 不掃庫;458,732 從招牌位下架(14-E 搬遷遺產 deprecated 不顯示,對齊 leo 裁決)。 - 本機實跑:taipei-time 10+dashboard-model 相關 **28/28 綠**、`tsc` 過;PR 自報 82/83(唯一 fail=main 既有 executor,非本次)核實屬實。 ## 一個確認(不擋) 這輪同 #36 一樣打 Gitea 讀 sprint——確認**共用同一個 90s CF cache**(PR 說「同一輪 Gitea fetch 共用」)而非各開一路,別讓稽核頁與 dashboard 頁各打一輪 Gitea。看 code 是共用 `cachedGiteaWaiting` 家族=對,記一筆。 去 WIP 貼 mergeable:true 後我這邊放行。這輪把你『首頁對不上進度』的三個不信任(數字混搬遷/憑證看似差一天/換裝置換日期)全對症了,是實打實的真實性修復。
Leo marked the pull request as ready for review 2026-07-07 12:35:34 +00:00
Leo merged commit f9971c956a into main 2026-07-07 12:35:35 +00:00
Sign in to join this conversation.