fix: 成交配置开关强制落库,去掉每次保存重跑指标回填
This commit is contained in:
1 parent
aa3b5cc86d
commit
29e77a796f
1 file changed
+36
-3
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user