"""记录类模块表单卡构造(RecordFields 组件的后端契约)。""" from __future__ import annotations from typing import Any from .enrichment_modules import ModuleSpec from .fsm import anchor_field_specs, component def record_card( profile: dict[str, Any], spec: ModuleSpec, value: dict[str, Any] | None = None ) -> dict[str, Any]: """anchor_note 仅描述;record_fields 按经历类型渲染核心字段。""" draft = profile["enrichment"]["module_draft"] entry = draft.get("entry") if isinstance(draft.get("entry"), dict) else {} record_type = ( draft.get("record_type") or entry.get("record_type") or spec.record_type or profile.get("anchor_type") ) is_note = spec.kind == "anchor_note" return component( "RecordFields", module=spec.name, record_type=record_type, title=spec.prompt, fields=[] if is_note else anchor_field_specs(record_type), show_description=True, require_description=is_note, skippable=spec.skippable, value=value, )