feat: [workflow] 统一飞书款式身份配置
This commit is contained in:
@@ -11,6 +11,7 @@ import pytest
|
||||
from gyxx_flow.adapters.workflow_config import (
|
||||
PostgresWorkflowConfigStore,
|
||||
WorkflowConfigConflictError,
|
||||
merge_lifecycle_style_records,
|
||||
normalize_config,
|
||||
normalize_style_config,
|
||||
)
|
||||
@@ -160,6 +161,107 @@ def test_normalize_style_config_owns_erp_once_and_platform_ids_per_child() -> No
|
||||
]
|
||||
|
||||
|
||||
def test_runtime_records_use_lifecycle_identity_and_keep_dynamic_targets() -> None:
|
||||
dynamic_records = [
|
||||
{
|
||||
"style_name": "款式甲",
|
||||
"brand": "旧品牌",
|
||||
"erp_codes": ["OLD-ERP"],
|
||||
"platform": "天猫",
|
||||
"item_ids": ["OLD-TM"],
|
||||
"sales_bitable_url": "https://example.feishu.cn/base/sales?table=tblSales",
|
||||
"tm_persona_bitable_url": "tm-persona",
|
||||
}
|
||||
]
|
||||
lifecycle_rows = [
|
||||
{
|
||||
"id": 8,
|
||||
"name": "款式甲",
|
||||
"brand": "光影行星",
|
||||
"erp_style_codes": ["NEW-ERP"],
|
||||
"platform_product_ids": {
|
||||
"tm": ["NEW-TM"],
|
||||
"jd": ["NEW-JD"],
|
||||
"jd_self": [],
|
||||
"dy": [],
|
||||
},
|
||||
}
|
||||
]
|
||||
|
||||
records = merge_lifecycle_style_records(dynamic_records, lifecycle_rows)
|
||||
|
||||
by_platform = {row["platform"]: row for row in records}
|
||||
assert by_platform["天猫"]["item_ids"] == ["NEW-TM"]
|
||||
assert by_platform["京东旗舰店"]["item_ids"] == ["NEW-JD"]
|
||||
assert by_platform["京东自营"]["item_ids"] == []
|
||||
assert by_platform["抖音"]["item_ids"] == []
|
||||
assert all(row["erp_codes"] == ["NEW-ERP"] for row in records)
|
||||
assert by_platform["天猫"]["sales_bitable_url"].endswith("table=tblSales")
|
||||
assert by_platform["天猫"]["tm_persona_bitable_url"] == "tm-persona"
|
||||
|
||||
|
||||
def test_runtime_records_empty_lifecycle_ids_clear_legacy_platform_ids() -> None:
|
||||
records = merge_lifecycle_style_records(
|
||||
[
|
||||
{
|
||||
"style_name": "研发款",
|
||||
"erp_codes": ["ERP-1"],
|
||||
"platform": "天猫",
|
||||
"item_ids": ["LEGACY-TM"],
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"id": 9,
|
||||
"name": "研发款",
|
||||
"erp_style_codes": ["ERP-1"],
|
||||
"platform_product_ids": {
|
||||
"tm": [],
|
||||
"jd": [],
|
||||
"jd_self": [],
|
||||
"dy": [],
|
||||
},
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
assert all(not row["item_ids"] for row in records)
|
||||
|
||||
|
||||
def test_lifecycle_merge_respects_disabled_dynamic_platform() -> None:
|
||||
records = merge_lifecycle_style_records(
|
||||
[
|
||||
{
|
||||
"style_name": "款式甲",
|
||||
"platform": "天猫",
|
||||
"item_ids": ["TM-1"],
|
||||
"enabled": False,
|
||||
},
|
||||
{
|
||||
"style_name": "款式甲",
|
||||
"platform": "京东旗舰店",
|
||||
"item_ids": ["JD-1"],
|
||||
"enabled": True,
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
"id": 10,
|
||||
"name": "款式甲",
|
||||
"erp_style_codes": ["ERP-1"],
|
||||
"platform_product_ids": {
|
||||
"tm": ["TM-1"],
|
||||
"jd": ["JD-1"],
|
||||
"jd_self": [],
|
||||
"dy": [],
|
||||
},
|
||||
}
|
||||
],
|
||||
)
|
||||
|
||||
assert {row["platform"] for row in records} == {"京东旗舰店", "京东自营", "抖音"}
|
||||
|
||||
|
||||
def test_normalize_style_config_supports_extensible_business_targets() -> None:
|
||||
payload = _payload()
|
||||
payload["destinations"] = [
|
||||
|
||||
Reference in New Issue
Block a user