feat(t224): add incremental freight sync

This commit is contained in:
QiuSW
2026-07-29 00:26:05 +08:00
parent 433db45100
commit c69879650e
35 changed files with 2085 additions and 156 deletions
+53
View File
@@ -21,6 +21,20 @@ class FakeClient:
assert order_number == "SOURCE-12"
return raw_result()
def get_freight_details_by_created_range(
self,
created_from: str,
created_to: str,
) -> dict:
assert (created_from, created_to) == ("2026-07-22", "2026-07-28")
result = raw_result()
result["query"] = {
"mode": "CREATED_RANGE",
"createdFrom": created_from,
"createdTo": created_to,
}
return result
def test_query_requires_configured_service_key(monkeypatch) -> None:
monkeypatch.delenv("SHUNYUNBAO_SERVICE_API_KEY", raising=False)
@@ -56,3 +70,42 @@ def test_query_returns_only_normalized_fields(monkeypatch) -> None:
assert "receiverTel" not in encoded
assert "receiverAddr" not in encoded
assert "PRIVATE-QUERY" not in encoded
def test_created_range_query_returns_allowlisted_range(monkeypatch) -> None:
monkeypatch.setenv("SHUNYUNBAO_SERVICE_API_KEY", VALID_KEY)
monkeypatch.setattr(api, "get_client", lambda: FakeClient())
response = api.query_freight(
api.FreightQueryRequest(
mode="CREATED_RANGE",
created_from="2026-07-22",
created_to="2026-07-28",
),
None,
)
assert response["query"] == {
"mode": "CREATED_RANGE",
"created_from": "2026-07-22",
"created_to": "2026-07-28",
}
def test_created_range_rejects_mixed_mode_parameters(monkeypatch) -> None:
monkeypatch.setenv("SHUNYUNBAO_SERVICE_API_KEY", VALID_KEY)
monkeypatch.setattr(api, "get_client", lambda: FakeClient())
with pytest.raises(HTTPException) as raised:
api.query_freight(
api.FreightQueryRequest(
mode="CREATED_RANGE",
order_number="SOURCE-12",
created_from="2026-07-22",
created_to="2026-07-28",
),
None,
)
assert raised.value.status_code == 422
assert raised.value.detail == "ERP_QUERY_INVALID"