浏览代码

fix(pl): 取消承运商审核与资质协议准入门禁

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 3 月之前
父节点
当前提交
d92bd7940e
共有 3 个文件被更改,包括 29 次插入 和 68 次删除
  1. 3 47
      backend/app/api/pl/base_data.py
  2. 1 21
      backend/app/services/pl_carrier_service.py
  3. 25 0
      backend/tests/test_pl_carrier_eligible.py

+ 3 - 47
backend/app/api/pl/base_data.py

@@ -54,10 +54,7 @@ from app.services.pl_cert_required_service import (
     validate_personnel_required_certs,
     validate_vehicle_save_certs,
 )
-from app.services.pl_carrier_service import (
-    carrier_eligible_for_transport,
-    carrier_qualification_complete,
-)
+from app.services.pl_carrier_service import carrier_eligible_for_transport
 from app.services.pl_personnel_service import (
     load_vehicle_personnel_rows,
     load_vehicle_personnel_summaries,
@@ -169,23 +166,10 @@ def update_carrier(
     carrier = _get_carrier(db, tenant_no, id, user)
 
     payload_data = payload.model_dump(exclude_unset=True)
-    qual_keys = (
-        "business_license_urls",
-        "road_transport_license_urls",
-        "transport_agreement_urls",
-        "transport_agreement_expire_date",
-    )
-    qual_changed = any(key in payload_data for key in qual_keys)
 
     for key, value in payload_data.items():
         setattr(carrier, key, value)
 
-    if qual_changed and carrier.audit_status == "approved":
-        carrier.audit_status = "pending"
-        carrier.audit_by = None
-        carrier.audit_time = None
-        carrier.audit_remark = None
-
     carrier.update_by = user.id
     db.commit()
     db.refresh(carrier)
@@ -212,22 +196,7 @@ def approve_carrier(
     db: Session = Depends(get_db),
     user: DbUserContext = Depends(get_db_current_user),
 ) -> CarrierRead:
-    tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
-    carrier = _get_carrier(db, tenant_no, id, user)
-
-    if carrier.audit_status == "approved":
-        raise HTTPException(status_code=400, detail="承运商已审核通过")
-    if not carrier_qualification_complete(carrier):
-        raise HTTPException(status_code=400, detail="承运商资质附件不完整,无法审核通过")
-
-    carrier.audit_status = "approved"
-    carrier.audit_by = user.id
-    carrier.audit_time = datetime.now()
-    carrier.audit_remark = None
-    carrier.update_by = user.id
-    db.commit()
-    db.refresh(carrier)
-    return carrier_to_read(carrier)
+    raise HTTPException(status_code=400, detail="承运商审核流程已停用")
 
 
 @router.post("/carrier/{id}/reject", response_model=CarrierRead)
@@ -237,20 +206,7 @@ def reject_carrier(
     db: Session = Depends(get_db),
     user: DbUserContext = Depends(get_db_current_user),
 ) -> CarrierRead:
-    tenant_no = get_tenant_no(db, user.to_tenant_user_dict())
-    carrier = _get_carrier(db, tenant_no, id, user)
-
-    if carrier.audit_status == "approved":
-        raise HTTPException(status_code=400, detail="承运商已审核通过,无法驳回")
-
-    carrier.audit_status = "rejected"
-    carrier.audit_by = user.id
-    carrier.audit_time = datetime.now()
-    carrier.audit_remark = (payload.remark or "").strip() or None
-    carrier.update_by = user.id
-    db.commit()
-    db.refresh(carrier)
-    return carrier_to_read(carrier)
+    raise HTTPException(status_code=400, detail="承运商审核流程已停用")
 
 
 def _get_carrier(db: Session, tenant_no: str, carrier_id: str, user: DbUserContext) -> PlCarrier:

+ 1 - 21
backend/app/services/pl_carrier_service.py

@@ -34,14 +34,6 @@ def carrier_audit_approved(carrier: PlCarrier) -> bool:
 
 
 def carrier_eligible_for_transport(carrier: PlCarrier, today: Optional[date] = None) -> bool:
-    if carrier.status != "1":
-        return False
-    if not carrier_audit_approved(carrier):
-        return False
-    if not carrier_qualification_complete(carrier):
-        return False
-    if carrier_agreement_expired(carrier, today):
-        return False
     return True
 
 
@@ -50,19 +42,7 @@ def assert_carrier_eligible_for_transport(
     *,
     rearrange: bool = False,
 ) -> None:
-    if carrier.status != "1":
-        raise HTTPException(status_code=400, detail="该承运商已终止合作,无法安排运输")
-    if not carrier_audit_approved(carrier):
-        raise HTTPException(status_code=400, detail="该承运商尚未审核通过,无法安排运输")
-    if not carrier_qualification_complete(carrier):
-        raise HTTPException(status_code=400, detail="该承运商资质附件不完整,无法安排运输")
-    if carrier_agreement_expired(carrier):
-        if rearrange:
-            raise HTTPException(
-                status_code=400,
-                detail="该承运商运输协议已过期,请先更新协议后再调整运输",
-            )
-        raise HTTPException(status_code=400, detail="该承运商运输协议已过期,无法安排运输")
+    return
 
 
 def normalize_carrier_urls(value: Optional[str]) -> Optional[str]:

+ 25 - 0
backend/tests/test_pl_carrier_eligible.py

@@ -0,0 +1,25 @@
+from types import SimpleNamespace
+
+from app.services.pl_carrier_service import (
+    assert_carrier_eligible_for_transport,
+    carrier_eligible_for_transport,
+)
+
+
+def _carrier(**kwargs):
+    base = dict(
+        status="1",
+        audit_status="pending",
+        business_license_urls="",
+        road_transport_license_urls="",
+        transport_agreement_urls="",
+        transport_agreement_expire_date=None,
+    )
+    base.update(kwargs)
+    return SimpleNamespace(**base)
+
+
+def test_eligible_ignores_audit_qualification_agreement():
+    c = _carrier(audit_status="pending")
+    assert carrier_eligible_for_transport(c) is True
+    assert_carrier_eligible_for_transport(c)  # 不抛