优化:edge resolve 只调 IoT 自动结单,去掉降级卡片更新
This commit is contained in:
@@ -176,47 +176,37 @@ async def edge_device_heartbeat(request: Request, _auth=Depends(_verify_edge_tok
|
||||
|
||||
|
||||
async def _resolve_card_update(alarm_id: str, resolve_type: str):
|
||||
"""边缘端 resolve 后异步处理:工单自动结单 + 更新卡片"""
|
||||
"""边缘端 resolve 后:调 IoT 自动结单,等 sync-status 回调更新告警+卡片"""
|
||||
try:
|
||||
from app.services.work_order_client import get_work_order_client
|
||||
from app.services.wechat_service import get_wechat_service
|
||||
from app.models import get_session, AlarmEventExt
|
||||
|
||||
# 工单自动结单
|
||||
wo_client = get_work_order_client()
|
||||
if wo_client.enabled:
|
||||
db = get_session()
|
||||
try:
|
||||
ext = db.query(AlarmEventExt).filter(
|
||||
AlarmEventExt.alarm_id == alarm_id,
|
||||
AlarmEventExt.ext_type == "WORK_ORDER",
|
||||
).first()
|
||||
order_id = ext.ext_data.get("order_id", "") if ext and ext.ext_data else ""
|
||||
finally:
|
||||
db.close()
|
||||
if order_id:
|
||||
remark_map = {
|
||||
"person_returned": "人员回岗自动关闭",
|
||||
"non_work_time": "非工作时间自动关闭",
|
||||
"intrusion_cleared": "入侵消失自动关闭",
|
||||
}
|
||||
remark = remark_map.get(resolve_type, f"边缘端自动结单: {resolve_type}")
|
||||
success = await wo_client.auto_complete_order(order_id, remark)
|
||||
if success:
|
||||
logger.info(f"IoT工单已自动结单,等待sync-status回调: alarm={alarm_id}, order={order_id}")
|
||||
return # IoT 回调 sync-status 会更新告警+卡片
|
||||
if not wo_client.enabled:
|
||||
return
|
||||
|
||||
# 降级:直接更新企微卡片到终态
|
||||
wechat = get_wechat_service()
|
||||
if wechat.enabled:
|
||||
response_code = wechat.get_response_code(alarm_id)
|
||||
if response_code:
|
||||
await wechat.update_alarm_card_terminal(
|
||||
response_code=response_code,
|
||||
user_ids=[],
|
||||
alarm_id=alarm_id,
|
||||
action="auto_resolve",
|
||||
)
|
||||
db = get_session()
|
||||
try:
|
||||
ext = db.query(AlarmEventExt).filter(
|
||||
AlarmEventExt.alarm_id == alarm_id,
|
||||
AlarmEventExt.ext_type == "WORK_ORDER",
|
||||
).first()
|
||||
order_id = ext.ext_data.get("order_id", "") if ext and ext.ext_data else ""
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
if order_id:
|
||||
remark_map = {
|
||||
"person_returned": "人员回岗自动关闭",
|
||||
"non_work_time": "非工作时间自动关闭",
|
||||
"intrusion_cleared": "入侵消失自动关闭",
|
||||
}
|
||||
remark = remark_map.get(resolve_type, f"边缘端自动结单: {resolve_type}")
|
||||
success = await wo_client.auto_complete_order(order_id, remark)
|
||||
if success:
|
||||
logger.info(f"IoT工单已自动结单,等待回调: alarm={alarm_id}, order={order_id}")
|
||||
else:
|
||||
logger.warning(f"IoT自动结单失败: alarm={alarm_id}, order={order_id}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"边缘端resolve后处理失败: alarm={alarm_id}, error={e}", exc_info=True)
|
||||
logger.error(f"边缘端resolve处理失败: alarm={alarm_id}, error={e}", exc_info=True)
|
||||
|
||||
Reference in New Issue
Block a user