"""为规划提供前端实际支持的物料目录""" from app.processor.base import BaseNode from app.processor.state import QueryState from app.resources.component import ComponentProvider from app.schemas.component_resource import ComponentQuery class ComponentResourceNode(BaseNode): name = "component_resource_node" def process(self, state: QueryState) -> QueryState: updated_state: QueryState = state.copy() # 当前目录较小,先提供全量,避免关键词筛选遗漏可用组件 result = ComponentProvider().query(ComponentQuery()) updated_state["component_resources"] = result updated_state["screen_plan"] = None if result.status != "resolved": updated_state["status"] = "failed" updated_state["failure_reason"] = result.message else: updated_state["status"] = "running" updated_state["failure_reason"] = None return updated_state if __name__ == "__main__": import json state: QueryState = {"request": {}} node = ComponentResourceNode() final_state = node.process(state) print( json.dumps( final_state, ensure_ascii=False, indent=2, default=lambda value: value.model_dump(mode="json"), ) )