完善Page类型和入口文件

This commit is contained in:
jingrow 2025-11-01 00:24:20 +08:00
parent a1eb5917a2
commit aaac5da9a9
2 changed files with 45 additions and 0 deletions

View File

@ -106,6 +106,45 @@ def get_meta(pagetype: str):
"""获取 pagetype 的元数据,返回后端适配器的原始结果结构。"""
return Page(pagetype).get_meta()
def get_field_mapping_from_jingrow(pagetype: str):
"""获取字段的label到fieldname的映射返回 {label: fieldname} 的映射字典。"""
return Page(pagetype).get_field_mapping_from_jingrow()
def get_field_value_from_jingrow(pagetype: str, name: str, fieldname: str):
"""从Jingrow获取字段的当前值返回字段的当前值如果为空则返回None。"""
return Page(pagetype).get_field_value_from_jingrow(name, fieldname)
def map_fields_by_labels(field_map: list, ai_outputs: dict, label_to_fieldname: dict) -> dict:
"""
根据 field_map ai_outputs 映射为记录字段数据
- field_map: [{ 'from': '来源字段', 'to': '目标label或字段名' }]
- ai_outputs: 上游节点聚合的输出
- label_to_fieldname: 来自 Jingrow label 到字段名映射
返回: dict 记录字段数据
"""
record_data = {}
fieldname_set = set(label_to_fieldname.values())
for mapping in field_map or []:
source_key = mapping.get('from')
to_raw = mapping.get('to')
if not source_key or to_raw is None:
continue
value = ai_outputs.get(source_key)
if value is None:
continue
# 目标字段既支持label也支持字段名
to_field = label_to_fieldname.get(str(to_raw).strip())
if not to_field and str(to_raw).strip() in fieldname_set:
to_field = str(to_raw).strip()
if not to_field:
continue
record_data[to_field] = value
return record_data
def _ensure_logging_configured() -> None:
# 统一在 root logger 上配置输出与格式,这样通过名为 "jingrow" 的 logger 打印时,

View File

@ -106,5 +106,11 @@ class Page:
def get_single(self) -> Dict[str, Any]:
return self.adapter.get_single_pagetype(self.pagetype)
def get_field_mapping_from_jingrow(self) -> Dict[str, str]:
return self.adapter.get_field_mapping_from_jingrow(self.pagetype)
def get_field_value_from_jingrow(self, name: str, fieldname: str) -> Optional[Any]:
return self.adapter.get_field_value_from_jingrow(self.pagetype, name, fieldname)