退路留言要帶「為什麼發不出去」,不是只帶閘的判定(inkstone/ISEP#93)
2026-08-28 第一版漏了這一格,而它剛好就在實測時咬到: 閘判定 pass、Telegram 卻 404(實例上找不到 notify_leo 工作流), 退路留言貼上票之後**只看得到 pass**——真正的斷點一個字都沒進票。 ⇒ 下一個人會去修閘,而斷點根本不在那裡。 把留言內文抽成 fallback_body()(獨立成一支就是為了測得到), 測試從「看原始碼有沒有那個字串」改成**真的產一份留言出來檢查**: 斷點原因、原文、身份欄三格都要在。36 條全綠。
This commit is contained in:
@@ -19,6 +19,7 @@ set -u
|
||||
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT="$(cd "$HERE/../.." && pwd)"
|
||||
NAG="$ROOT/scripts/isep-nag"
|
||||
export NOTIFY_PATH="$ROOT/scripts/isep-notify"
|
||||
NOTIFY="$ROOT/scripts/isep-notify"
|
||||
HOOK="$ROOT/hooks/overdue-nag-guard.sh"
|
||||
|
||||
@@ -128,6 +129,26 @@ has "$OUT" "測試訊息 ABC" && ok "㉑ 原文照抄在輸出裡(看到的人
|
||||
|| no "㉑ 原文照抄" "實得:$OUT"
|
||||
has "$OUT" "leo 的手機上沒有出現這則" && ok "㉒ 明著說 leo 沒收到(不是「送出成功」)" \
|
||||
|| no "㉒ 明著說沒收到" "實得:$OUT"
|
||||
# 🔴 「為什麼發不出去」要跟著訊息一起留下來。2026-08-28 第一版漏了這一格:
|
||||
# 閘明明 pass,退路留言裡卻只看得到 pass,真正的斷點(實例上沒有那支工作流)
|
||||
# 一個字都沒進票 ⇒ 下一個人會去修閘,而斷點根本不在那裡。
|
||||
FB=$(python3 - <<'PYX'
|
||||
import importlib.machinery, importlib.util, os
|
||||
ld = importlib.machinery.SourceFileLoader("n", os.environ["NOTIFY_PATH"])
|
||||
sp = importlib.util.spec_from_loader("n", ld); m = importlib.util.module_from_spec(sp)
|
||||
ld.exec_module(m)
|
||||
fact = {"verdict": "pass", "version": "0.11.0", "guard": "/x/prod-write-guard.sh",
|
||||
"confidence": "high", "source": "測試", "reason": "閘放行"}
|
||||
body = m.fallback_body("要發的原文 XYZ", fact,
|
||||
"通道本身斷了:實例上找不到 notify_leo 工作流")
|
||||
ok = ("找不到 notify_leo" in body # 真正的斷點有進票
|
||||
and "要發的原文 XYZ" in body # 原文有進票
|
||||
and body.splitlines()[0].startswith("【身份】")) # 身份欄在第一行
|
||||
print("HAS_WHY" if ok else "NO_WHY:" + body[:120])
|
||||
PYX
|
||||
)
|
||||
[ "$FB" = "HAS_WHY" ] && ok "㉒b 退路留言帶著「為什麼發不出去」,不是只帶閘的判定" \
|
||||
|| no "㉒b 退路帶原因" "實得:$FB"
|
||||
|
||||
echo "── E 群:閘的版本是查得到的事實,不是假設 ────────────────────────"
|
||||
G=$(python3 "$NOTIFY" --gate 2>&1)
|
||||
|
||||
Reference in New Issue
Block a user