41 lines
1.3 KiB
Python
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"),
|
|
)
|
|
)
|