fix: 成交配置开关强制落库,去掉每次保存重跑指标回填

This commit is contained in:
XingQue committed 2026-08-10 17:58:15 +08:00
1 parent aa3b5cc86d
commit 29e77a796f
1 file changed
+36 -3
+36 -3
View File
@@ -689,11 +689,44 @@ def save_deal_config(club_id: str, data: dict, updated_by: str = '') -> dict:
row.updated_by = (updated_by or '')[:32]
_persist_deal_config_row(row)
# 保存后触发一次历史回填,保证抢单池马上能刷到成交率/罚款率
# 强制按主键再写一遍开关字段,避免偶发 save 未落 bool、前端「保存成功又弹回」
from jituan.models import ClubOrderDealConfig
try:
ClubOrderDealConfig.objects.filter(pk=row.pk).update(
auto_settle_enabled=bool(row.auto_settle_enabled),
auto_settle_enabled_at=row.auto_settle_enabled_at,
dispatch_block_enabled=bool(getattr(row, 'dispatch_block_enabled', False)),
stats_enabled=bool(row.stats_enabled),
stats_since=row.stats_since,
hours_platform=int(row.hours_platform or 48),
hours_merchant=int(row.hours_merchant or 48),
dispatch_block_hours=int(getattr(row, 'dispatch_block_hours', None) or 24),
updated_by=(row.updated_by or '')[:32],
)
except Exception as e:
logger.error('deal config 开关二次写入失败 club=%s: %s', row.club_id, e, exc_info=True)
raise
# minutes 列可能尚未迁移:单独尝试,失败忽略
try:
ClubOrderDealConfig.objects.filter(pk=row.pk).update(
minutes_platform=getattr(row, 'minutes_platform', None),
minutes_merchant=getattr(row, 'minutes_merchant', None),
dispatch_block_minutes=getattr(row, 'dispatch_block_minutes', None),
)
except Exception as e:
logger.warning('deal config minutes 二次写入跳过 club=%s: %s', row.club_id, e)
row.refresh_from_db()
logger.info(
'deal config saved club=%s auto=%s block=%s stats=%s by=%s',
row.club_id,
row.auto_settle_enabled,
getattr(row, 'dispatch_block_enabled', False),
row.stats_enabled,
row.updated_by,
)
# 保存后触发一次历史回填(幂等;勿每次删标记,否则会拖垮保存请求)
try:
from jituan.models import DealStatEvent
from jituan.services.deal_stats import ensure_club_stats_bootstrapped
DealStatEvent.objects.filter(event_key=f'{row.club_id}:stats_bootstrap_v1').delete()
ensure_club_stats_bootstrapped(row.club_id)
except Exception as e:
logger.warning('保存成交配置后回填失败 club=%s: %s', row.club_id, e)