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.
 
 
 
 
 
 

156 lines
18 KiB

==== e2e-heavy-r2 开始 TS=095459(JVM=D:\IntelliJ IDEA 2025.1.3\jbr\bin\java.exe)====
== setup_heavy ==
pass [SETUP] 华南销售部 leader=admin
pass [SETUP] seed 销售甲(华南销售部/在职/启用) — id=760000000000000001
pass [SETUP] 甲乙丙 assign→BUDDY
BUDDY 名下 3 条:['e2c-交割-甲', 'e2c-交割-乙', 'e2c-交割-丙']
—— F-13 ——
== F-13 客户交割 ==
pass [F-13] preview 圈定 3 条(甲乙丙+残留) — 实际 3 条
pass [F-13] initiate reason 缺失 → 67011 — code=67011 如预期
pass [F-13] toDirectorId 不在可交接范围 → 67011 — code=67011 如预期
pass [F-13] initiate resign → 交接单 JG202609060005(D22 自动推导罗伟健) — status=0 totalCount=3
pass [F-13] totalCount=圈定全量(无 customerIds 字段=名下全量口径) — totalCount=3 vs 预览 3
pass [F-13] 存在未完成交接单重入 → 67010 — code=67010 如预期
pass [F-13] initiate 后客户 owner→接收总监(整批原子) — owner=739564171091247104
pass [F-13] 商机 owner 三列联动(owner/快照/部门) — e2c-联动-交割 owner=739564171091247104
pass [F-13] oplog 含交接编号+发起交接叙事 — 交割单【JG202609060005】发起交接:客户归属由【曾偲青】移交【罗伟健】
pass [F-13] detail 明细齐且全待分配 — minutes=3
pass [F-13] assignable 含销售甲且排除发起人/总监 — 共 6046 人
pass [F-13] assign 单条 甲→销售甲 — fails=[]
pass [F-13] 重复分配已分配明细 → 67012(失败行) — {'id': '750844484425613312', 'reason': 'ASSIGN_INVALID', 'message': '该客户已分配'}
pass [F-13] 分配给当前负责人 → 67012(失败行) — {'id': '750844485444829184', 'reason': 'ASSIGN_INVALID', 'message': '不能分配给当前负责人'}
pass [F-13] 分配对象不存在 → 67012(spec 66001 偏差记录) — code=67012 fails=[]
pass [F-13] 批量 assign 剩余成功 2/2 — fails=[]
pass [F-13] assignedCount==totalCount → 自动置已完成(D23) — assigned=3/3 status=1
pass [F-13] 交接单已完成不可再分配(67004 或失败行收口) — code=0 fails=[{'id': '750844484425613312', 'reason': 'STATUS_NOT_ALLOWED', 'message': '交接单已完成,不可再分配'}]
pass [F-13] assign 后客户/商机 owner→销售甲 — cust=760000000000000001 opp=760000000000000001
pass [F-13] page 交接编号过滤命中 — 命中 1 条
pass [F-13] 交接编号当日续号不重号 — max=JG202609060005 vs 本单 JG202609060005
—— F-14 ——
== F-14 客户导入 ==
pass [F-14] 模板下载(RFC5987 文件名+xlsx 魔数) — CD=attachment; filename*=UTF-8''%E5%AE%A2%E6%88%B7%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D
pass [F-14] importMode 非法 → 67013 — code=67013 如预期
pass [F-14] 模板表头不符 → 67013 — code=67013 如预期
pass [F-14] 文件内无数据行 → 67013 — code=67013 如预期
pass [F-14] APPEND_ONLY 预检:t=7 insert=1 fail=5(含已存在) suspect=1 — t=7 i=1 u=0 f=5 s=1
pass [F-14] 行级判定:已存在 FAIL / 文件内重复组 FAIL(D24) / 相似 SUSPECT — r2=FAIL r3=文件内多行匹配同一客户(重复时不导入),请合并为 r7=SUSPECT
pass [F-14] UPDATE_ONLY 预检:update=1(按编号) insert=0 — u=1 i=0
pass [F-14] UPSERT 同名(新编号)→SUSPECT 不按名称匹配 — r1=SUSPECT 疑似重复:客户名称与已有客户相似,本次不写入,请走新增/编辑
pass [F-14] confirm DRAFT→RUNNING 异步执行 — taskId=751742215566393344
pass [F-14] 重复 confirm → 67014 — code=67014 如预期
pass [F-14] 执行完成 DONE:insert=2(客户r1+联系人甲) fail=7 suspect=1 — status=2 i=2 u=0 f=7 s=1
pass [F-14] 失败明细 8 行 — None;None;None
pass [F-14] confirm UPDATE_ONLY 任务 — taskId=751742217114091520
pass [F-14] UPDATE_ONLY 执行 DONE:update=2(transfer2 星级→4) — status=2 u=2 f=7 unchanged=1
pass [F-14] r1 落库 biz=0 relation=0(D-05 同族占位)/r2 星级=4(UPDATE 通路) — r1=落库 biz=0 rel=0 r2星=4
pass [F-14] 最近导入仅提交人可见(creator 过滤) — admin 有=True buddy 有=False
—— F-15 ——
== F-15 提醒规则族 ==
pass [F-15] GET 单例可读(记录当前值,不预设——重跑时规则可能留测试态) — master=1 first=1/30 second=1/7
pass [F-15] save 全量覆盖保存即生效 — first=1
pass [F-15] firstTriggerDays=0 → 64023 — code=64023 如预期
pass [F-15] secondIntervalDays=-1 → 64023 — code=64023 如预期
pass [F-15] 64023 校验失败未落库(1/1 保持) — first=1 second=1
pass [F-15] 开关缺省 → 0(缺省禁用口径) — master=0 first=0 second=0
-- 重启服务带 CRM_CUSTOMER_REMINDERCRON=*/30 * * * * ? --
-- 起服 D:\IntelliJ IDEA 2025.1.3\jbr\bin\java.exe extra_env={'CRM_CUSTOMER_REMINDERCRON': '*/30 * * * * ?'} --
.. 服务已起(28s)
pass [F-15] Job 落待发:首链 plan=2026-08-08(锚点+first=1)status=0 — 链长=2(每轮补下一条属正常) status=0 type=FOLLOW_OVERDUE target=739564171091247104 plan=2026-08-08 09:54:25
pass [F-15] payload 快照(remindSeq/anchor/规则参数) — {'remindSeq': 0, 'overdueDays': '30', 'anchor': '2026-08-07T09:54:25', 'firstTriggerDays': 1, 'secon
pass [F-15] 未到期/公海/归档客户均未落待发 — 待办=0 公海+归档=0
pass [F-15] 幂等:同计划时刻任意状态占位不重写 — 重复 plan 组=0;链长 5 条(每轮补下一条,r1 口径)
pass [F-15] 锚点被跟进刷新 → 旧未发提醒置已失效 — 旧锚点行 5 条;其中仍待发 0 条
pass [F-15] 提醒规则还原出厂值(30/7) — {'id': '1', 'masterEnabled': 1, 'firstTriggerEnabled': 1, 'firstTriggerDays': 30, 'secondIntervalEnabled': 1, 'secondIntervalDays': 7, 'updateTime': '2026-09-06 09:59:17'}
-- 还原服务(默认 cron 凌晨 4 点) --
-- 起服 D:\IntelliJ IDEA 2025.1.3\jbr\bin\java.exe extra_env=默认 --
.. 服务已起(25s)
py : Traceback (most recent call last):
所在位置 行:1 字符: 50
+ ... ing]::UTF8; py -X utf8 .scratch/customer-e2e/e2e-heavy-r2.py > .scrat ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Traceback (most recent call last)::String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\pymysql\connections.py", line
810, in _read_bytes
data = self._rfile.read(num_bytes)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\socket.py", line 719, in readinto
return self._sock.recv_into(b)
~~~~~~~~~~~~~~~~~~~~^^^
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\ssl.py", line 1304, in recv_into
return self.read(nbytes, buffer)
~~~~~~~~~^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\ssl.py", line 1138, in read
return self._sslobj.read(len, buffer)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:\code\crm-backend-matt\.scratch\customer-e2e\e2e-heavy-r2.py", line 944, in main
teardown_heavy()
~~~~~~~~~~~~~~^^
File "E:\code\crm-backend-matt\.scratch\customer-e2e\e2e-heavy-r2.py", line 230, in teardown_heavy
n += dbx("UPDATE customer SET owner_user_id=%s, owner_user_name_snapshot='罗伟健', "
~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"owner_dept_id=744841292348915712, owner_dept_name_snapshot='广东保伦电子股份有限公司', "
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"enter_pool_time=NULL WHERE id=%s", (ADMIN, C[k]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\code\crm-backend-matt\.scratch\customer-e2e\e2e-heavy-r2.py", line 67, in dbx
cur.execute(sql, args)
~~~~~~~~~~~^^^^^^^^^^^
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\pymysql\cursors.py", line 159,
in execute
result = self._query(query)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\pymysql\cursors.py", line 330,
in _query
conn.query(q)
~~~~~~~~~~^^^
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\pymysql\connections.py", line
582, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\pymysql\connections.py", line
847, in _read_query_result
result.read()
~~~~~~~~~~~^^
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\pymysql\connections.py", line
1245, in read
first_packet = self.connection._read_packet()
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\pymysql\connections.py", line
772, in _read_packet
packet_header = self._read_bytes(4)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\pymysql\connections.py", line
816, in _read_bytes
raise err.OperationalError(
...<2 lines>...
)
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query ([WinError 10054] 远程主机强迫关闭了一个现有的连接。)
')
pass [F-15] 服务还原后 smoke
—— F-16 ——
== F-16 查重设置消费侧(单例已落地:返工票 04,RuleBackedCustomerDedupSettingProvider 读单例) ==
pass [F-16] check-credit-code 命中已有信用代码 — {'exists': True, 'masked': False, 'customerId': '750844478243209216', 'customerN
pass [F-16] 创建撞已有信用代码 → 67003 硬拦 — code=67003 如预期
pass [F-16] check-name 相似命中(阈值 80 生效) — [{'customerId': '750844478243209216', 'customerName': 'e2c-恒信达科技有限公司', 'ownerNam
pass [F-16] 创建名称相似 → needConfirm 弹窗未落库 — needConfirm=True
pass [F-16] check-phone 跨客户软提示命中 — [{'contactId': '750844500171030528', 'contactName': '张关键', 'jobTitleName': '采购总监
pass [F-16] 导入侧消费:名称相似 → SUSPECT 不写入(f14 14.9 实测引用) — 见 F-14
pass [F-16] customer_dedup_rule 单例已落地(返工票 04)→ RuleBackedCustomerDedupSettingProvider 读单例驱动内建查重 — GET/POST /api/rule/customer/dedup 配置面用例见 r2 票 02 增量套件;本流程验证出厂态消费行为与 round-1 一致
== f14_cleanup ==
已清导入新客户 751742220704415744
乙名称/星级已还原
== teardown_heavy ==
fail [MAIN] 骨架异常: (2013, 'Lost connection to MySQL server during query ([WinError 10054] 远程主机强迫关闭了一个现有的连接。)')
== teardown_heavy ==
还原客户 owner 1 条;商机 owner 已还原 admin;BUDDY 部门/leader 已还原
==== 结果:✅60 ⚠0 ❌1 ====
checks/specimens/defects 已落盘(specimens 20 端点)