Procházet zdrojové kódy

fix(pl): keep driver/site tokens stable on rearrange.

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu před 1 měsícem
rodič
revize
4e3c2a9ffb

+ 2 - 3
backend/app/api/pl/transport.py

@@ -64,7 +64,6 @@ from app.services.pl_transport_stop_feedback_service import (
     ensure_transport_site_token,
     load_driver_stop_segments,
     load_site_stop_segments,
-    rotate_transport_site_token,
 )
 from app.services.pl_inventory_link_read import build_transport_inventory_link_read
 from app.services.pl_io_order_service import (
@@ -882,9 +881,9 @@ def arrange_transport(
     needs_site_link = plan_requires_site_link(db, tenant_no=tenant_no, plan=plan)
 
     if is_rearrange:
-        _rotate_driver_access_token(transport)
+        _ensure_driver_access_token(transport)
         if needs_site_link and plan_has_load_stop(db, tenant_no, plan.id):
-            rotate_transport_site_token(transport)
+            ensure_transport_site_token(transport)
         elif not needs_site_link:
             transport.site_access_token = None
             if plan.plan_type in ("inbound", "outbound"):

+ 29 - 0
backend/tests/test_pl_transport_rearrange_tokens.py

@@ -0,0 +1,29 @@
+"""调整运输默认不 rotate 司机/现场 token"""
+from app.api.pl import transport as transport_api
+from app.models.pl_models import PlTransport
+from app.services.pl_transport_stop_feedback_service import ensure_transport_site_token
+
+
+def test_ensure_driver_access_token_keeps_existing():
+    transport = PlTransport(id="tr-1", driver_access_token="driver-token-keep")
+    assert transport_api._ensure_driver_access_token(transport) == "driver-token-keep"
+    assert transport.driver_access_token == "driver-token-keep"
+
+
+def test_ensure_site_token_keeps_existing():
+    transport = PlTransport(id="tr-1", site_access_token="site-token-keep")
+    assert ensure_transport_site_token(transport) == "site-token-keep"
+    assert transport.site_access_token == "site-token-keep"
+
+
+def test_rearrange_branch_uses_ensure_not_rotate():
+    """政策:调整运输走 ensure;_rotate_* 仅保留备用,安排路径不再调用。"""
+    source = open(transport_api.__file__, encoding="utf-8").read()
+    arrange_idx = source.find("def arrange_transport")
+    assert arrange_idx > 0
+    # 截取安排函数前段(含 token 分支)
+    snippet = source[arrange_idx : arrange_idx + 12000]
+    assert "_ensure_driver_access_token(transport)" in snippet
+    assert "ensure_transport_site_token(transport)" in snippet
+    assert "_rotate_driver_access_token(transport)" not in snippet
+    assert "rotate_transport_site_token(transport)" not in snippet