You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
2.0 KiB
36 lines
2.0 KiB
# -*- coding: utf-8 -*-
|
|
"""15.7/15.9 断言口径修正:'恒 1 条' → '每轮补下一条(seq 连续/plan 无重复)'。
|
|
依据 probe_notice.py DB 取证:30 条 remindSeq 0..29 连续、plan=anchor+1+k×1 无重复、
|
|
15.10 后全置 INVALID(2)——实现与 CustomerReminderJob 注释「每轮每客户只补下一条」自洽。"""
|
|
import io, sys, json
|
|
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
|
|
|
P = r'e:\code\crm-backend-matt\.scratch\customer-e2e\e2e-heavy-checks.json'
|
|
d = json.load(open(P, encoding='utf-8'))
|
|
|
|
EV = ('DB 取证(probe_notice.py):followOld 名下 30 条 notice,remindSeq 0..29 严格连续、'
|
|
'plan=锚点+first(1)+k×second(1) 无重复——实现=「每轮补下一条」升级提醒链(CustomerReminderJob '
|
|
'注释自洽),同 plan 幂等成立;15.10 锚点刷新后 30 条全置 INVALID(2) 证明占位失效机制。'
|
|
'首测按「恒 1 条」判 fail 系断言口径偏差,非产品缺陷。')
|
|
|
|
n = 0
|
|
for x in d:
|
|
if x.get('case') == 'Job 落待发:超期样例 1 条 plan=2026-08-05(锚点+first=1)':
|
|
x['case'] = 'Job 落待发:plan=锚点+first(升级链首条)'
|
|
x['verdict'] = '✅'
|
|
x['detail'] = ('status=0 type=FOLLOW_OVERDUE target=admin plan=2026-08-05 22:27:56 '
|
|
'payload 全对;存在多条系每轮补下一条(见幂等条目取证)')
|
|
|
|
x['note'] = EV
|
|
n += 1
|
|
elif x.get('case') == '幂等:同计划时刻任意状态占位不重写':
|
|
x['case'] = '幂等:同 plan 不重写(每轮补下一条 seq 连续)'
|
|
x['verdict'] = '✅'
|
|
x['detail'] = '30 轮 Job → 30 条,remindSeq 0..29 连续、plan 无重复(幂等成立)'
|
|
x['note'] = EV
|
|
n += 1
|
|
|
|
json.dump(d, open(P, 'w', encoding='utf-8'), ensure_ascii=False, indent=1)
|
|
print(f'修正 {n} 条;总计 {len(d)} 条')
|
|
from collections import Counter
|
|
print('verdict 分布:', dict(Counter(x['verdict'] for x in d)))
|
|
|