fix: response_code持久化到数据库 + 工单客户端加tenant-id
1. wechat_service: save/get_response_code 改为内存+数据库双写, 容器重启后边缘resolve仍能更新企微卡片 2. work_order_client: 请求头加 tenant-id,签名公式加 query_str 参数 3. config: WorkOrderConfig 新增 tenant_id 字段 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -83,12 +83,51 @@ class WeChatService:
|
||||
return self._access_token
|
||||
|
||||
def save_response_code(self, task_id: str, response_code: str):
|
||||
"""保存卡片的 response_code(用于后续更新卡片状态)"""
|
||||
"""保存卡片的 response_code(内存缓存 + 数据库持久化)"""
|
||||
self._response_codes[task_id] = response_code
|
||||
try:
|
||||
from app.models import get_session, AlarmEventExt
|
||||
db = get_session()
|
||||
try:
|
||||
ext = db.query(AlarmEventExt).filter(
|
||||
AlarmEventExt.alarm_id == task_id,
|
||||
AlarmEventExt.ext_type == "WECHAT_RESPONSE_CODE",
|
||||
).first()
|
||||
if ext:
|
||||
ext.ext_data = {"response_code": response_code}
|
||||
else:
|
||||
ext = AlarmEventExt(
|
||||
alarm_id=task_id,
|
||||
ext_type="WECHAT_RESPONSE_CODE",
|
||||
ext_data={"response_code": response_code},
|
||||
)
|
||||
db.add(ext)
|
||||
db.commit()
|
||||
finally:
|
||||
db.close()
|
||||
except Exception as e:
|
||||
logger.warning(f"持久化 response_code 失败: {e}")
|
||||
|
||||
def get_response_code(self, task_id: str) -> Optional[str]:
|
||||
"""获取并消耗 response_code(只能用一次)"""
|
||||
return self._response_codes.pop(task_id, None)
|
||||
"""获取 response_code(优先内存缓存,回退数据库查询)"""
|
||||
code = self._response_codes.pop(task_id, None)
|
||||
if code:
|
||||
return code
|
||||
try:
|
||||
from app.models import get_session, AlarmEventExt
|
||||
db = get_session()
|
||||
try:
|
||||
ext = db.query(AlarmEventExt).filter(
|
||||
AlarmEventExt.alarm_id == task_id,
|
||||
AlarmEventExt.ext_type == "WECHAT_RESPONSE_CODE",
|
||||
).first()
|
||||
if ext and ext.ext_data:
|
||||
return ext.ext_data.get("response_code", "")
|
||||
finally:
|
||||
db.close()
|
||||
except Exception as e:
|
||||
logger.warning(f"查询 response_code 失败: {e}")
|
||||
return None
|
||||
|
||||
# ==================== 媒体上传 ====================
|
||||
|
||||
|
||||
Reference in New Issue
Block a user