25 lines
1.2 KiB
Plaintext
25 lines
1.2 KiB
Plaintext
# ticket_staff_reply.dspy - 人工回复客户(T8: human_processing→staff_replied)
|
||
# 入参: ticket_id, content, internal?(1=内部备注不迁状态), attachments?(multipart 文件字段,可多个)
|
||
|
||
user_id = await get_user()
|
||
if not user_id:
|
||
return json.dumps({"success": False, "error": "请先登录"}, ensure_ascii=False)
|
||
|
||
ticket_id = (params_kw.get('ticket_id') or '').strip()
|
||
content = (params_kw.get('content') or '').strip()
|
||
internal = (params_kw.get('internal') or '').strip().lower() in ('1', 'true', 'yes')
|
||
if not ticket_id:
|
||
return json.dumps({"success": False, "error": "缺少 ticket_id"}, ensure_ascii=False)
|
||
|
||
# 附件:multipart 上传时 ahserver 已落 FileStorage,params_kw['attachments']
|
||
# 为 webpath 字符串(单文件)或 list(多文件同名字段)
|
||
attachments = params_kw.get('attachments')
|
||
|
||
ok, result = await ticket_staff_reply(ticket_id, user_id, content, internal=internal,
|
||
attachments=attachments)
|
||
if ok:
|
||
return json.dumps({"success": True, "message": result.get('message', ''),
|
||
"data": result}, ensure_ascii=False)
|
||
code, msg = result
|
||
return json.dumps({"success": False, "error": msg, "code": code}, ensure_ascii=False)
|