新增征信员工HTML样本并改造Mock解析
This commit is contained in:
@@ -2,7 +2,7 @@ import json
|
||||
import random
|
||||
from datetime import date, timedelta
|
||||
from pathlib import Path
|
||||
from typing import Dict, List
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
|
||||
class CreditPayloadService:
|
||||
@@ -12,8 +12,15 @@ class CreditPayloadService:
|
||||
self.schema_path = schema_path
|
||||
self.schema = self._load_schema()
|
||||
|
||||
def generate_payload(self, model: str, h_type: str, filename: str) -> dict:
|
||||
rng = random.Random(self._build_seed(model, h_type, filename))
|
||||
def generate_payload(
|
||||
self,
|
||||
model: str,
|
||||
h_type: str,
|
||||
filename: str,
|
||||
subject_identity: Optional[Dict[str, str]] = None,
|
||||
) -> dict:
|
||||
identity = subject_identity or {}
|
||||
rng = random.Random(self._build_seed(model, h_type, filename, identity))
|
||||
payload = {
|
||||
"lx_header": {},
|
||||
"lx_debt": {},
|
||||
@@ -24,7 +31,7 @@ class CreditPayloadService:
|
||||
domain = item["domain"]
|
||||
field = item["field"]
|
||||
field_type = item["type"]
|
||||
payload[domain][field] = self._generate_value(field, field_type, item, rng)
|
||||
payload[domain][field] = self._generate_value(field, field_type, item, rng, identity)
|
||||
|
||||
return payload
|
||||
|
||||
@@ -35,8 +42,17 @@ class CreditPayloadService:
|
||||
return json.loads(schema_file.read_text(encoding="utf-8"))
|
||||
|
||||
@staticmethod
|
||||
def _build_seed(model: str, h_type: str, filename: str) -> str:
|
||||
return f"{model}|{h_type}|{filename}"
|
||||
def _build_seed(
|
||||
model: str,
|
||||
h_type: str,
|
||||
filename: str,
|
||||
subject_identity: Dict[str, str],
|
||||
) -> str:
|
||||
return (
|
||||
f"{model}|{h_type}|{filename}|"
|
||||
f"{subject_identity.get('staff_name', '')}|"
|
||||
f"{subject_identity.get('staff_id_card', '')}"
|
||||
)
|
||||
|
||||
def _generate_value(
|
||||
self,
|
||||
@@ -44,9 +60,10 @@ class CreditPayloadService:
|
||||
field_type: str,
|
||||
item: dict,
|
||||
rng: random.Random,
|
||||
subject_identity: Dict[str, str],
|
||||
) -> str:
|
||||
if field_type == "string":
|
||||
return self._generate_string(field, rng)
|
||||
return self._generate_string(field, rng, subject_identity)
|
||||
if field_type == "amount":
|
||||
return f"{rng.uniform(0, 500000):.2f}"
|
||||
if field_type == "count":
|
||||
@@ -55,7 +72,16 @@ class CreditPayloadService:
|
||||
return rng.choice(item["options"])
|
||||
raise ValueError(f"Unsupported field type: {field_type}")
|
||||
|
||||
def _generate_string(self, field: str, rng: random.Random) -> str:
|
||||
def _generate_string(
|
||||
self,
|
||||
field: str,
|
||||
rng: random.Random,
|
||||
subject_identity: Dict[str, str],
|
||||
) -> str:
|
||||
if field == "query_cert_no" and subject_identity.get("staff_id_card"):
|
||||
return subject_identity["staff_id_card"]
|
||||
if field == "query_cust_name" and subject_identity.get("staff_name"):
|
||||
return subject_identity["staff_name"]
|
||||
if field == "query_cert_no":
|
||||
return self._generate_cert_no(rng)
|
||||
if field == "query_cust_name":
|
||||
|
||||
Reference in New Issue
Block a user