# ticket_create.dspy - 客户建单(R1) # 入参: title, description, category?, priority?, attachments?(multipart 文件字段,可多个) user_id = await get_user() if not user_id: return json.dumps({"success": False, "error": "请先登录"}, ensure_ascii=False) org_id = await get_userorgid() title = (params_kw.get('title') or '').strip() description = (params_kw.get('description') or '').strip() category = (params_kw.get('category') or 'other').strip() priority = (params_kw.get('priority') or 'normal').strip() # 附件:Form(uitype=file,multiple) 走 FormData multipart,ahserver 已把文件落 # FileStorage,params_kw['attachments'] 为 webpath 字符串(单文件)或 list(多文件)。 # 旧 JSON 数组字符串契约由 core.normalize_attachments 兼容。 attachments = params_kw.get('attachments') ok, result = await create_ticket(user_id, org_id, title, description, category=category, priority=priority, attachments=attachments) if ok: return json.dumps({"success": True, "message": "工单已提交,智能助手正在处理", "data": result}, ensure_ascii=False) code, msg = result return json.dumps({"success": False, "error": msg, "code": code}, ensure_ascii=False)