# my_tickets.dspy - 客户工单列表(I5: 本人/本机构过滤, admin 全量) # DataViewer 数据源:返回顶层 {total, rows}(框架 PageDataLoader 契约) # 入参: status?(可选过滤), page?, pagerows? user_id = await get_user() if not user_id: return {"widgettype": "Error", "options": {"title": "Authorization Error", "message": "Please login", "timeout": 3}} org_id = await get_userorgid() status = (params_kw.get('status') or '').strip() page = int(params_kw.get('page') or 1) pagerows = int(params_kw.get('pagerows') or params_kw.get('rows') or 20) rows = await list_customer_tickets(user_id, org_id, status=status, limit=1000) total = len(rows) start = (page - 1) * pagerows page_rows = rows[start:start + pagerows] return {"total": total, "rows": page_rows}