本卡屬 FR-166(母卡 CM-3109 延伸),批 1,compliance-manager-fe repo。
白話
決策者要的行為:閒置 15 分鐘跳提醒「要繼續使用嗎」,30 分鐘登出。主系統 src/layout/AppTopbar.vue 有這段程式但提醒被註解掉(『IDLE Confirm 先Mark起來』),目前只會 30 分鐘直接登出;Agent 主控台完全沒有前端閒置處理,只靠 Agent 後端 session 30 分鐘失效。
怎麼做
- 【new,抽共用】src/composables/useIdleLogout.js:{ warnAfterMs, logoutAfterMs, onWarn, onLogout },監聽 mousemove/mousedown/keypress/touchmove,回 start/stop/reset。把 AppTopbar.vue 那段(idleTimer/warningTimer/resetTimers/startTimers/stopTimers)改用它;src/config/idel-handler/idel-handler.js 若無人用就刪。
- 主系統:打開 15 分鐘提醒(ConfirmDialog,繼續使用/登出),30 分鐘登出不變。
- 主控台:console/Shell.vue 用同一支 composable;提醒用 PrimeVue Dialog(主控台沒掛 ConfirmationService 就用 Dialog);按繼續使用要打 consoleApi.me() 讓 Agent 後端 session 滑動續期;30 分鐘到了打登出並回登入頁(reason=AGENT_CONSOLE_SESSION_REQUIRED)。
- i18n 兩語系。
驗證
- composable 單元測試(fake timers:15 分鐘 onWarn、30 分鐘 onLogout、有活動重設)。build 與 build:CONSOLE 過。
紀律
- 要寫任何新函式/元件/composable/service 方法之前,第一步不是寫,是查:按行為 grep 真實程式碼,再查 docs/claude/domain-capabilities.md 與 FE frontend-overview.md §4。三擇一、預設不新增:reuse → extend → 確認沒有才新增。回寫列出 reuse 了哪些、新增了哪些、為什麼不能 reuse。
- BE 動到 api/app/infra 時 .claude/rules/security/ 自動載入,照著做;FE 規則在 FE repo .claude/rules/security/frontend.md,跨 repo 改 FE 不會自動載入,動手前自己讀。回寫列出本卡對到哪幾條、怎麼滿足。
- 不做義大利麵式程式:「怎麼做」每項已標 reuse/extend/new。extend 就改既有那支,不另開一支;紅旗:複製一段改兩行、開 XxxV2、同一行為兩條路徑。
- 檔案內註解只寫「為什麼」與「陷阱」(一到兩行),做了什麼進 commit message。
- 顯式 git add <檔名>,禁 -am;不切 branch(feature/FR-139);做完立刻 commit +本卡 append 回寫(含 commit hash、手測清單)+狀態改「修正待驗證」;push 等決策者。
建議模型與思考強度(首腦判斷)
Stage 1/Model opus/Effort medium/Repo fe。主系統 AppTopbar 有一份被註解掉的提醒;要抽共用給主控台,屬結構調整。
狀態先設「暫緩」:決策者 2026-10-28 指示首腦本 session 直接實作,不交工作坊派;做完首腦回寫並改「修正待驗證」。
已完成修正(首腦本 session 實作,2026-10-28)