== 瀹㈡埛鍩熷閲忓浠讹紙r2 绁?02锛?= TS=620535 PFX=e2c-r2i == setup锛氬す鍏峰鎴?A/B == pass [SETUP] 澶瑰叿瀹㈡埛 A/B 灏变綅锛堝揩鐓?NULL / 缂栧彿鍥炲~锛?鈥?A=KH202609050016 B=KH202609050017 == I-01 鎴樼暐鍗忚鍏ㄩ摼 == pass [I-01] 鏂板鎴峰崗璁垪琛ㄤ负绌猴紙List 闈炲垎椤碉紝鏃堕棿鍊掑簭锛?鈥?[] pass [I-01] 鏂板鎴峰揩鐓?NULL=鏈 鈥?snapshot=None pass [I-01] create 缂?customerId 鈫?67001锛堝叆鍙傞潪娉曪級 鈥?code=67001 濡傞鏈? pass [I-01] create 骞界伒瀹㈡埛 鈫?67002锛堥槻鎺㈡祴鍚岀爜锛?鈥?code=67002 濡傞鏈? pass [I-01] create agreementLevel=9 瓒婄晫 鈫?67017 鈥?code=67017 濡傞鏈? pass [I-01] create 缂?agreementLevel 鈫?67017锛堢瓑绾х己澶憋級 鈥?code=67017 濡傞鏈? pass [I-01] create 鍥炲崗璁?id锛圧esult锛?鈥?id=751577913299566592 pass [I-01] 蹇収鑱斿姩锛歝reate 鍚?2锛堟渶鏂颁竴鏉″洖鍐欙紝涓?bump version锛?鈥?snapshot=2 pass [I-01] list 鍚柊鍗忚 鈥?ids=['751577913299566592'] pass [I-01] detail 鍥炴樉锛堢瓑绾?褰掑睘/瀹㈡埛鍚嶅揩鐓?閲戦鏂囨湰锛?鈥?{'id': '751577913299566592', 'createTime': '2026-09-05 23:02:18', 'updateTime': '2026-09-05 23:02:18', 'customerId': '751577905737236480', ' pass [I-01] edit 鎴愬姛锛圧esult锛?鈥?code=0 pass [I-01] 蹇収鑱斿姩锛歟dit 鍚?3 鈥?snapshot=3 pass [I-01] 褰掑睘涓嶅彲鎹紙dto.customerId 蹇界暐锛岀紪杈戜互搴撳唴褰掑睘涓哄噯锛?鈥?detail.customerId=751577905737236480 B蹇収=None pass [I-01] amount 65 瀛楄秴闀?鈫?67017 鈥?code=67017 濡傞鏈? pass [I-01] detail 骞界伒鍗忚 鈫?67017 鈥?code=67017 濡傞鏈? pass [I-01] edit 骞界伒鍗忚 鈫?67017 鈥?code=67017 濡傞鏈? pass [I-01] delete 骞界伒鍗忚 鈫?67017 鈥?code=67017 濡傞鏈? pass [I-01] delete 鎴愬姛锛堣蒋鍒狅級 鈥?code=0 pass [I-01] 蹇収鑱斿姩锛氬垹绌哄悗=NULL锛堟湭绛撅級 鈥?snapshot=None pass [I-01] list 缁堟€佺┖ 鈥?[] pass [I-01] oplog 璁?AGREEMENT_ADD/EDIT/DELETE 涓夊啓鍔ㄤ綔 鈥?actions=['AGREEMENT_DELETE', 'AGREEMENT_EDIT', 'AGREEMENT_EDIT', 'AGREEMENT_ADD', 'CREATE'] warn [I-01] oplog detail 绛夌骇鏂囨锛堟柊澧炴垬鐣ュ崗璁€愪簩绾с€戯級 鈥?detail=鏂板鎴樼暐鍗忚銆愪簩绾с€? == I-02 鑱旂郴浜?oplog锛圕ONTACT_*锛?= pass [I-02] contact create 鍥?id 鈥?id=751577926985580544 pass [I-02] contact edit 鎴愬姛 鈥?code=0 pass [I-02] contact delete 鎴愬姛锛堣蒋鍒狅級 鈥?code=0 pass [I-02] 鍏鏂?action 榻愮幇锛圓GREEMENT 脳3 + CONTACT 脳3锛?鈥?缂?[] pass [I-02] 鍏ㄩ儴 action 钀藉湪 17 绉嶅€煎煙鍐?鈥?瓒婄晫=[] pass [I-02] action= 杩囨护鐢熸晥锛堜粎 AGREEMENT_ADD锛?鈥?n=1 actions=['AGREEMENT_ADD'] == I-03 鏌ラ噸璁剧疆锛坈rm-rule 瀹㈡埛瑙勫垯鏃忥級== pass [I-03] GET 鍗曚緥鍙锛圕ustomerXxxRuleInitializer 棣栬绉嶅瓙锛?鈥?{'id': '1', 'masterEnabled': 1, 'nameEnabled': 1, 'nameMatchMode': 2, 'similarityThreshold': 80, 'phoneEnabled': 1, 'upd pass [I-03] save 鍏ㄩ噺瑕嗙洊锛氬搷搴斿洖鏄句繚瀛樺悗鍗曚緥锛堢簿纭?60%锛?鈥?{'id': '1', 'masterEnabled': 1, 'nameEnabled': 1, 'nameMatchMode': 1, 'similarityThreshold': 60, 'phoneEnabled': 1, 'upd pass [I-03] save鈫抔et 鍥炶涓€鑷?鈥?{'id': '1', 'masterEnabled': 1, 'nameEnabled': 1, 'nameMatchMode': 1, 'similarityThreshold': 60, 'phoneEnabled': 1, 'upd pass [I-03] 寮€鍏崇己鐪佲啋0 / 鏂瑰紡缂虹渷鈫掓ā绯?2) / 闃堝€兼樉寮忎繚鐣?鈥?{'id': '1', 'masterEnabled': 0, 'nameEnabled': 0, 'nameMatchMode': 2, 'similarityThreshold': 90, 'phoneEnabled': 0, 'upd pass [I-03] 闃堝€肩己鐪?鈫?鍑哄巶 80锛堥潪闈欓粯淇濈暀 90锛宎7-3-3-2 搂4.1 鍙e緞锛?鈥?{'id': '1', 'masterEnabled': 0, 'nameEnabled': 0, 'nameMatchMode': 1, 'similarityThreshold': 80, 'phoneEnabled': 0, 'upd pass [I-03] nameMatchMode=9 鈭?{1,2} 鈫?64023 鈥?code=64023 濡傞鏈? pass [I-03] similarityThreshold=101 鍑?[0,100] 鈫?64023 鈥?code=64023 濡傞鏈? pass [I-03] similarityThreshold=-1 鍑?[0,100] 鈫?64023 鈥?code=64023 濡傞鏈? pass [I-03] 64023 鏍¢獙澶辫触鏈惤搴擄紙绮剧‘/80 淇濇寔锛?鈥?{'id': '1', 'masterEnabled': 0, 'nameEnabled': 0, 'nameMatchMode': 1, 'similarityThreshold': 80, 'phoneEnabled': 0, 'upd pass [I-03] 鏌ラ噸璁剧疆杩樺師鍘熷€?鈥?鍘?{'masterEnabled': 1, 'nameEnabled': 1, 'nameMatchMode': 2, 'similarityThreshold': 80, 'phoneEnabled': 1} 鐜?{'id': '1', 'masterEnabled': 1, 'nameEnabled': 1, 'nameMatchMode': 2, 'similarit == I-04 鎵归噺宸ュ晢鏇存柊锛坈ompany-lookup/batch-update锛?= pass [I-04] 涓ゅ鎴?stub 鎭?NO_HIT锛堜簲鐘舵€佽蒋澶勭疆锛沠illedFields=0锛?鈥?[{'customerId': '751577905737236480', 'customerName': 'e2c-r2i-A-620535', 'status': 'NO_HIT', 'filledFields': 0, 'message': '宸ュ晢婧愭湭鏌ヨ鍒板尮閰嶄紒涓?}, {'customerId': '7515 pass [I-04] NO_HIT 鏃犲洖濉細妗f鍓嶅悗鍏ㄧ瓑锛堝彧琛ョ┖缂虹殑绌鸿浆璇佹嵁锛?鈥?before={'A': ('e2c-r2i-A-620535', None, 'gov'), 'B': ('e2c-r2i-B-620535', None, 'gov')} after={'A': ('e2c-r2i-A-620535', None, 'gov'), 'B': ('e2c-r2i-B-620535', None, 'gov')} pass [I-04] 骞界伒瀹㈡埛 鈫?琛岀骇 NOT_FOUND锛堜笉鏁村崟澶辫触锛?鈥?[{'customerId': '999999999999999', 'customerName': None, 'status': 'NOT_FOUND', 'filledFields': 0, ' fail [I-04] 绌?ids 鈫?67001/400 鎷掔粷 鈥?code=40001 msg=缂哄皯蹇呭~鍙傛暟锛歩ds pass [I-04] 鍗曟瓒呬笂闄?100 鈫?67001 鈥?code=67001 濡傞鏈? == I-05 璇︽儏瑙﹁揪 viewTouch锛坈ustomer_view_log锛?= pass [I-05] 棣栬 detail-head 鎻掑叆 view_log锛圲NIQUE(user_id,customer_id)锛?鈥?rows=1 t1=2026-09-05 23:02:25 pass [I-05] 鍐嶈 upsert锛氫粛 1 琛?+ last_view_time 鍒锋柊锛圧ECENT 瑙嗗浘閿氱偣锛?鈥?rows=1 t1=2026-09-05 23:02:25 t2=2026-09-05 23:02:26 pass [I-05] 涓嶅悓鐢ㄦ埛鍚勫崰涓€琛岋紙user 缁村害闅旂锛?鈥?rows=2 == I-06 褰㈡€佸亸濂斤紙crm-preference view-form锛?= pass [I-06] get 鍥?String锛坣ull=鏈缃紝鍓嶇榛樿 list锛?鈥?orig='list' pass [I-06] save split 鈫?get=split 鈥?get='split' pass [I-06] save board 鈫?get=board锛堢櫧鍚嶅崟涓夊€肩殕鍚堟硶锛?鈥?get='board' pass [I-06] 璺ㄧ敤鎴烽殧绂伙紙B 鍐欎笉涓?S锛?鈥?S get='board' pass [I-06] viewForm=card 鈭?{list,split,board} 鈫?68001 鈥?code=68001 濡傞鏈? warn [I-06] pool路board 琚帴鍙?鈿?濂戠害婕傜Щ锛埪?.14 绉版嫆缁濓紱瀹炵幇鐧藉悕鍗曟棤 pool 鐗瑰垽锛夆€斺€旇妗o紝绁?06 鑱氬悎 鈥?code=0锛堟紓绉婚潪缂洪櫡锛氬綊 Bruno/API-SUMMARY 鏂囨。渚у缃級 pass [I-06] mine 杩樺師涓?'list' 鈥?get='list' pass [I-06] pool 杩樺師涓?'list' == I-07 瀵煎叆 duplicateStrategy锛團8锛?= pass [I-07] SKIP 涓婁紶锛氬洖鏄?SKIP + 閲嶅缁勫叏澶辫触涓嶅啓鍏ワ紙t=2 i=0 u=0锛?鈥?{'taskId': '751577964377800704', 'importMode': 'UPDATE_ONLY', 'duplicateStrategy': 'SKIP', 'totalCount': 2, 'insertCount': 0, 'updateCount': 0, 'failCount': 2, pass [I-07] OVERWRITE 涓婁紶锛氬洖鏄?OVERWRITE + 浠呮湯琛岀敓鏁堬紙u=1锛?鈥?{'taskId': '751577965476708352', 'importMode': 'UPDATE_ONLY', 'duplicateStrategy': 'OVERWRITE', 'totalCount': 2, 'insertCount': 0, 'updateCount': 1, 'failCount' pass [I-07] duplicateStrategy=BOGUS 闈炴硶 鈫?67013 鈥?code=67013 濡傞鏈? pass [I-07] SKIP 鎵ц DONE锛氭槦绾?3 鈥?star=3 pass [I-07] OVERWRITE 鎵ц DONE锛氭槦绾?5 鈥?star=5 == teardown锛氭闂?archive + DB 鍏滃簳娓呮壂 == pass [TEARDOWN] 瀹㈡埛 A 姝i棬 archive 鈥?code=0 pass [TEARDOWN] 瀹㈡埛 B 姝i棬 archive 鈥?code=0 pass [TEARDOWN] e2c-r2i-* DB 鍏滃簳娓呮壂锛堝惈 oplog/contact/agreement/view_log锛?鈥?瀹㈡埛琛?2 缁? 瀵煎叆浠诲姟鐣欑棔锛堝榻?heavy F-14 鍏堜緥锛屼笉浣滄竻鐞嗭級 == 姹囨€?== 鉁?0 鈿? 鉂? 鑰楁椂 20s specimens=20 鉁?钀界洏 e2e-incr-checks.json / specimens-incr.json