40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import json
|
||
|
|
from typing import Any
|
||
|
|
|
||
|
|
|
||
|
|
def build_risk_rule_version_markdown(payload: dict[str, Any]) -> str:
|
||
|
|
metadata = payload.get("metadata") if isinstance(payload.get("metadata"), dict) else {}
|
||
|
|
fields = (
|
||
|
|
payload.get("inputs", {}).get("fields") if isinstance(payload.get("inputs"), dict) else []
|
||
|
|
)
|
||
|
|
field_labels = [
|
||
|
|
str(item.get("label") or item.get("key") or "").strip()
|
||
|
|
for item in fields
|
||
|
|
if isinstance(item, dict) and str(item.get("label") or item.get("key") or "").strip()
|
||
|
|
]
|
||
|
|
return "\n".join(
|
||
|
|
[
|
||
|
|
f"# {payload.get('name')}",
|
||
|
|
"",
|
||
|
|
"## 业务说明",
|
||
|
|
"",
|
||
|
|
str(payload.get("description") or ""),
|
||
|
|
"",
|
||
|
|
"## 自然语言原文",
|
||
|
|
"",
|
||
|
|
str(metadata.get("natural_language") or ""),
|
||
|
|
"",
|
||
|
|
"## 使用字段",
|
||
|
|
"",
|
||
|
|
"、".join(field_labels) or "未识别字段",
|
||
|
|
"",
|
||
|
|
"## 运行时 JSON",
|
||
|
|
"",
|
||
|
|
"```json",
|
||
|
|
json.dumps(payload, ensure_ascii=False, indent=2),
|
||
|
|
"```",
|
||
|
|
]
|
||
|
|
)
|