Files
my-v0-server/app/processor/nodes/component_resource_node.py
T
2026-09-24 11:58:25 +08:00

41 lines
1.3 KiB
Python

"""为规划提供前端实际支持的物料目录"""
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"),
)
)