This commit is contained in:
Marsway 2026-02-03 16:31:52 +08:00
parent 0ae1f4150e
commit 57d25c857e
2 changed files with 28 additions and 13 deletions

View File

@ -50,7 +50,7 @@ class HuobanyunClient:
return {}
async def query(self, payload: Dict[str, Any]) -> Dict[str, Any]:
url = f"{self._base_url()}/query"
url = f"{self._base_url()}/openapi/v1/item/list"
return await self._request("POST", url, payload)
async def writeback(self, payload: Dict[str, Any]) -> Dict[str, Any]:

View File

@ -150,24 +150,39 @@ class HuobanyunService:
return {"total": total, "items": mapped_items}
async def query(self, req: FeishuExternalQueryRequest) -> FeishuExternalQueryResponse:
payload = {
"keyword": req.keyword or "",
"page": req.page,
"page_size": req.page_size,
"filters": {f.key: f.value for f in req.filters},
"raw": req.raw or {},
}
raw = req.raw or {}
table_id = (
raw.get("table_id")
or raw.get("tableId")
or raw.get("table")
or "2100000015544940"
)
limit = min(max(req.page_size, 1), 100)
offset = max(req.page - 1, 0) * limit
payload: Dict[str, Any] = {"table_id": table_id, "limit": limit, "offset": offset}
if raw.get("filter"):
payload["filter"] = raw.get("filter")
elif req.keyword:
payload["filter"] = {"and": [{"field": "title", "query": {"eqm": [req.keyword]}}]}
if raw.get("order"):
payload["order"] = raw.get("order")
if raw.get("with_field_config") is not None:
payload["with_field_config"] = raw.get("with_field_config")
data = await self.client.query(payload)
data_block = data.get("data", {}) if isinstance(data, dict) else {}
items = data_block.get("items", []) if isinstance(data_block, dict) else []
total = data_block.get("filtered", data_block.get("total", len(items)))
parsed = HuobanyunQueryResponse(
total=data.get("total", 0),
total=total,
items=[
{
"id": item.get("id", ""),
"name": item.get("name", ""),
"value": item.get("value", ""),
"id": item.get("item_id", ""),
"name": item.get("title", ""),
"value": item.get("title", ""),
"extra": item,
}
for item in data.get("items", [])
for item in items
],
)
return FeishuExternalQueryResponse(