fix(B27): gate warn notify on real Telegram delivery (V66a) + scan config.env bind
VOTE ULANG SEGERA never reached community channel though dashboard badge showed: - scan service lacked NFS config.env bind -> empty TELEGRAM_* -> send_text silent no-op - _notify_warn still record_notify'd -> fake dedup rows blocked future sends send_text/notify_warn now return delivery bool; record_notify only on True. scan service mounts config.env:/app/.env:ro.
This commit is contained in:
1 parent
8ad7df00f0
commit
c262b4677c
6 files changed
+48
-20
No files matched your search
+25
-4
@@ -312,7 +312,7 @@ def main():
|
||||
|
||||
sent = []
|
||||
_orig_warn = telegram.notify_warn
|
||||
telegram.notify_warn = lambda v: sent.append(v)
|
||||
telegram.notify_warn = lambda v: sent.append(v) or True
|
||||
try:
|
||||
gv._notify_warn(warn_now)
|
||||
check('V66 _notify_warn dipanggil', len(sent) == 1)
|
||||
@@ -333,14 +333,14 @@ def main():
|
||||
|
||||
# V66: _notify_warn — skip bila sudah diberi tahu pada urgensi ≥ saat ini
|
||||
sent.clear()
|
||||
telegram.notify_warn = lambda v: sent.append(v)
|
||||
telegram.notify_warn = lambda v: sent.append(v) or True
|
||||
try:
|
||||
gv._notify_warn(warn_now) # wrn1 sudah urgensi 2, wrn2 sudah urgensi 3
|
||||
check('V66 _notify_warn skip redundancy', len(sent) == 0)
|
||||
finally:
|
||||
telegram.notify_warn = _orig_warn
|
||||
|
||||
# V66: _notify_warn — escalation trigger (wrn1 dari 2→3)
|
||||
telegram.notify_warn = lambda v: sent.append(v) or True
|
||||
sent.clear()
|
||||
# Hapus lacak utk wrn1 supaya bisa test escalation dratch
|
||||
conn = sqlite3.connect(db.DB_PATH)
|
||||
@@ -356,7 +356,7 @@ def main():
|
||||
{'owner': 'wrn2', 'weight': '2.0', 'staked': 3000.0,
|
||||
'last_vote': wrn2_vote},
|
||||
], warn_now.isoformat(timespec='seconds'))
|
||||
telegram.notify_warn = lambda v: sent.append(v)
|
||||
telegram.notify_warn = lambda v: sent.append(v) or True
|
||||
try:
|
||||
gv._notify_warn(warn_now)
|
||||
check('V66 escalation trigger (2→3)', len(sent) == 1)
|
||||
@@ -367,6 +367,27 @@ def main():
|
||||
finally:
|
||||
telegram.notify_warn = _orig_warn
|
||||
|
||||
# V66: _notify_warn — ⊥ catat bila kirim gagal senyap (send_text no-op/Gagal)
|
||||
# Regresi: token kosong → telegram no-op → record_notify TETAP dicatat dulu
|
||||
# (dedup palsu memblokir kirim saat scan berikutnya). Kini hanya dicatat
|
||||
# bila notify_warn berhasil (return True).
|
||||
sent.clear()
|
||||
conn = sqlite3.connect(db.DB_PATH)
|
||||
conn.execute('DELETE FROM voter_notify') # bersihkan semua lacak
|
||||
conn.commit()
|
||||
conn.close()
|
||||
fail_warn = lambda v: sent.append(v) and False # gagal/no-op
|
||||
telegram.notify_warn = fail_warn
|
||||
try:
|
||||
gv._notify_warn(warn_now)
|
||||
check('V66 kirim gagal → dipanggil', len(sent) == 1)
|
||||
check('V66 kirim gagal → voter_notify ⊖ dicatat',
|
||||
db.get_notify_urgency('wrn1') is None)
|
||||
check('V66 kirim gagal → voter_notify wrn2 ⊖ dicatat',
|
||||
db.get_notify_urgency('wrn2') is None)
|
||||
finally:
|
||||
telegram.notify_warn = _orig_warn
|
||||
|
||||
print('\nSEMUA UJI PASS')
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user