123 lines
4.1 KiB
Python
123 lines
4.1 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
from auto_test_domains.base import build_domain_report, make_local_data_id, run_pipeline_round
|
|
|
|
|
|
REMOTE_PROJECT_ID = "f3e02e84-e81c-4aa6-88d4-f5aa108c8227"
|
|
REMOTE_LAR_ID = "718a9883-8479-4963-a58c-234d1984b117"
|
|
LOCAL_PROJECT_ID = make_local_data_id("project", REMOTE_PROJECT_ID)
|
|
LOCAL_LAR_ID = make_local_data_id("lar", REMOTE_LAR_ID)
|
|
|
|
|
|
def run_case(config: dict[str, Any], report_root) -> dict[str, Any]:
|
|
"""
|
|
lar domain 回归。
|
|
|
|
LAR 随项目自动生成,因此重点验证:
|
|
|
|
1. round_1_create
|
|
- 既有 LAR 节点可正常加载并建立绑定。
|
|
2. round_2_update
|
|
- 同时修改主信息、搬迁信息、投资信息三个分组字段,确认 3 条 update API 都能走通。
|
|
"""
|
|
|
|
dataset_root = f"{config['project_root']}/tests/fixtures/auto_sync/datasource/lar"
|
|
filtered_root = f"{config['project_root']}/filtered_datasource/datasource/filtered"
|
|
base_dataset_files = [
|
|
"company_1.jsonl",
|
|
"project_1.jsonl",
|
|
]
|
|
local_lar_id = LOCAL_LAR_ID
|
|
project_id_remap = {
|
|
"remote_project_id": REMOTE_PROJECT_ID,
|
|
"local_project_id": LOCAL_PROJECT_ID,
|
|
"remap_node_types": {"project", "lar"},
|
|
}
|
|
|
|
rounds: list[dict[str, Any]] = []
|
|
|
|
round_1 = run_pipeline_round(
|
|
config=config,
|
|
dataset_dir=f"{dataset_root}/round_1_create",
|
|
previous_dataset_dir=None,
|
|
base_dataset_dir=filtered_root,
|
|
base_dataset_files=base_dataset_files,
|
|
domain_name="lar",
|
|
round_name="round_1_create",
|
|
purpose="首轮建立 LAR 基线绑定,确认项目级自动生成数据可被识别",
|
|
required_bindings={
|
|
"lar": [local_lar_id],
|
|
},
|
|
expected_bound_fields={
|
|
"remote": {
|
|
"lar": {
|
|
local_lar_id: {
|
|
"project_id": REMOTE_PROJECT_ID,
|
|
"completed_resettlement_pop": 83,
|
|
"completed_investment_amt": 24230.31,
|
|
"actual_rural_comp": 16644.28,
|
|
}
|
|
}
|
|
}
|
|
},
|
|
coverage={
|
|
"notes": "确认 LAR 可从 project all_info.lar 中加载并建立绑定。",
|
|
},
|
|
project_id_remap=project_id_remap,
|
|
report_root=report_root,
|
|
)
|
|
rounds.append(round_1)
|
|
|
|
round_2 = run_pipeline_round(
|
|
config=config,
|
|
dataset_dir=f"{dataset_root}/round_2_update",
|
|
previous_dataset_dir=f"{dataset_root}/round_1_create",
|
|
base_dataset_dir=filtered_root,
|
|
base_dataset_files=base_dataset_files,
|
|
domain_name="lar",
|
|
round_name="round_2_update",
|
|
purpose="第二轮同时修改主信息/搬迁/投资字段,验证 LAR 三条 update 子接口",
|
|
expected_changes={
|
|
"lar": {
|
|
local_lar_id: [
|
|
"actual_rural_comp",
|
|
"completed_resettlement_pop",
|
|
"completed_investment_amt",
|
|
]
|
|
}
|
|
},
|
|
required_bindings={
|
|
"lar": [local_lar_id],
|
|
},
|
|
expected_bound_fields={
|
|
"remote": {
|
|
"lar": {
|
|
local_lar_id: {
|
|
"actual_rural_comp": 16645.28,
|
|
"completed_resettlement_pop": 84,
|
|
"completed_investment_amt": 24231.31,
|
|
}
|
|
}
|
|
}
|
|
},
|
|
coverage={
|
|
"api": [
|
|
"PUT /lar/main",
|
|
"PUT /lar/resettlement",
|
|
"PUT /lar/investment",
|
|
],
|
|
"notes": "单轮同时命中 3 个 LAR 子 schema,确认 handler 分组更新逻辑与后端接口都可用。",
|
|
},
|
|
project_id_remap=project_id_remap,
|
|
report_root=report_root,
|
|
)
|
|
rounds.append(round_2)
|
|
|
|
return build_domain_report(
|
|
domain="lar",
|
|
description="移民征地 domain 的闭环测试。先绑定项目自动生成的 LAR 数据,再一次性验证主信息、搬迁、投资三条更新接口。",
|
|
rounds=rounds,
|
|
)
|