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
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 端点)
|
|
|