通知提示
本頁包含通知來源、三個動詞、提醒、合併與工作階段統計;三軸與可見度見可見度, 通知島與實機驗收見呈現與驗證,文案見通知訊息。
計數與來源
Core/Notifications/NotificationCenter保存執行中與近期完成的不可變快照。- 成功才計入「已完成」;失敗另列數字,降級與取消在明細標示。項目到期時分子、分母一起扣除。
SqlMetadataCatalog.TryLoad在實際查詢入口追蹤,涵蓋預載、快取更新、各層按需載入、 系統物件與執行個體名單。等待共享閘與退避不另計數;同步巢狀查詢合併至外層工作。 快取命中以Trace記錄,只進統計不上畫面。SqlAssistPlatformGuard.Begin追蹤一般背景工作,三軸由呼叫端明寫;初始化與 F12 在原有 錯誤處理內接線。BeginProbe不整批追蹤,避免週期性連線探測與無工作的預載呼叫反覆閃現 提示——「重新確認連線」那一則由該處自己開,不改BeginProbe的行為。- 按鍵、游標停手就跑一次的判斷走
SqlAssistPlatformGuard.RunAsync,不開通知:多半的結論是 什麼都不做,包成Begin會每停一次手冒一列「已完成」,看起來像一直在跑重的東西。 判斷之後真的做了事,由那一段自己回報;已經發生的結果用Post。 Run一族攔下的未預期例外經Core/Notifications/UnexpectedFailureNotice送一則失敗(Unclassified、 不帶操作名稱與例外),只寫紀錄檔的話使用者只看到功能安靜地不作用。同一操作 60 秒一次,送出途中 同執行緒再失敗不送:按鍵處理常式與通知島重畫壞掉時都會連續失敗。- 標題與完成後的敘述只有
Core/Notifications/NotificationCatalog一份出處,呼叫端不組字串。 Document與Source保存啟動時的名稱,不隨焦點更新;無檔名時Document用穩定編輯區 編號,中繼資料層只填得出Source。不保存完整路徑、SQL、認證或例外內容。- 最近結果最多 100 項,不截掉執行中的工作;最近 30 項失敗可從「關於與診斷 → 通知失敗」 回看。紀錄只存在記憶體,重開診斷視窗更新列表。
Activity一詞只剩「最近活動」(SqlAssistActivity,記錄使用者最後做了什麼),與通知無關。
三個動詞與提醒
| 動詞 | 用在 | 怎麼結束 |
|---|---|---|
Begin | 有執行期間的工作 | 範圍釋放寫回結果,依保留期限淡出 |
Post | 當下已經發生的事件 | 以完成狀態入列,依保留期限淡出 |
Prompt | 需要使用者決定的事 | 使用者按按鈕或叉號,呼叫 Resolve |
前兩種是活動;NotificationItem.Actions 不是空的就是提醒,不另加一軸:沒有按鈕的提醒 只能等叉號,有按鈕卻會到期則是使用者還沒看到就消失的決定。
Post給擷取被丟棄、容量越過警戒這類沒有執行期間的事:不經過 Running,不成為環境父工作, 也不被joinParent接手。借Begin開了立刻關會先冒出一列執行中再改寫、讓同一刻的巢狀查詢 併進來,耗時也只是雜訊。完成後的帳由Finish與Post共用同一條路徑,新增紀錄不會漏掉事件。Status只收已完成的結果,傳Running擲例外;三軸與Status都沒有預設值。- 提醒內容只來自目錄建好的
NotificationPrompt(鍵、標題、訊息、嚴重度、按鈕),三軸照舊由呼叫端明寫。 - 按鈕是
NotificationAction:NotificationActionIds的穩定識別字、標籤、Primary/Secondary 與參數, 每則最多一個 Primary。存識別字而不存委派:快照才能比對,「略過這一版」這類決定才能由呼叫端落地保存。 - 同一個 (
Kind、Key) 取代舊的那一則並換新身分;被取代的不算處理。 Resolve(itemId, actionId)的actionId為 null 是叉號,語意是「稍後」:只在這次工作階段收起, 同鍵的新提醒也不再出現,下次啟動照常送出;真正的拒絕由按鈕表達。來源是User的提醒不理會 「稍後」並解除它:使用者自己按「檢查更新」得到的答案不能安靜地消失。- 按鈕由
Notifications/NotificationActionRouter派送:套件初始化時登記識別字對應的處理常式, 按下時先TryResolve收掉那一則、拿到按鈕與參數,再在 Guard 裡派送。 - 提醒不逾時、不合併、不受活動的叉號影響;上限 20 則(丟最舊),不跟最近 100 項搶位置, 不進工作階段統計、最近失敗與逐次完成紀錄。詳細診斷在處理時寫
id/kind/key/action,不寫文字。
合併與工作階段統計
合併收攏畫面,統計回答「哪些動作在重複」。合併只影響畫面,每一次呼叫仍逐次計入統計與詳細診斷。
Core/Notifications/NotificationMerge 依 (Kind、Title、Subject、Document、Source) 合併, 提醒原樣保留,只合併已完成且結果相同的項目:執行中的各自成列才保得住進度感,失敗與降級不併入成功。 代表列沿用群組中最早那一項的 Id、位置與耗時;換成最新的那一項,每重複一次就換一個身分, 畫面又回到每次重畫一列。NotificationItem.Repeat 是這一列代表幾次呼叫,畫面上是 ×N 徽章。 抬頭的「N 項工作 · 成功數/總數」與進度條都以合併後的列數計算:三次相同的成功是 1/1,不是 3/3。
Core/Notifications/NotificationDigest 依 (Kind、Title、Subject) 累計呼叫次數、 總耗時、平均、最大、失敗數與降級數。統計不受可見度影響:隱藏的種類、Trace 與快取命中 一樣計入,否則預設隱藏的四個高頻種類正是最需要回答的那幾類。鍵數上限 200,之後的新鍵 併進「其他」一列。合併的巢狀查詢不另計一次,與抬頭計數的口徑相同。只留次數與耗時。
畫面入口與排序見設定入口。