debug(audit): 添加X光调试-追踪断点

This commit is contained in:
DXC
2026-04-20 15:01:20 +08:00
parent 1c8def7e6f
commit decb7f5e1f
2 changed files with 21 additions and 2 deletions

View File

@ -98,6 +98,7 @@ def _store_audit_details(module, target_id, action, details):
'action': action,
'details': details
}
print(f"💾 [X光-存储] 已存入 g.audit_details, key: {key}, details: {details}")
# ============================================================
@ -106,7 +107,10 @@ def _store_audit_details(module, target_id, action, details):
def before_update_listener(mapper, connection, target):
"""SQLAlchemy before_update 监听器"""
print(f"🔔 [X光-监听器] before_update 被调用, target: {target.__class__.__name__}")
if not _is_audit_model(mapper):
print(f"⏭️ [X光-监听器] 跳过非审计模型: {mapper.class_.__name__}")
return
# ★ 使用 inspect(target) 而非 inspector._instance_state(target)
@ -125,13 +129,21 @@ def before_update_listener(mapper, connection, target):
'new': _serialize_value(new_val)
}
print(f"📊 [X光-监听器] 计算完成, changes: {changes}")
if changes:
module = _get_module_name(mapper)
target_id, target_name = _extract_unique_key(target)
# ★ 将变更存入 g
details = {'changes': changes}
# ★ X光调试确认监听器是否成功算出 changes
print(f"🚀 [X光-监听器] 成功触发! target: {target}, changes: {changes}")
_store_audit_details(module, target_id, 'update', details)
else:
print(f"⚠️ [X光-监听器] 无变更,跳过")
def before_delete_listener(mapper, connection, target):
@ -155,6 +167,7 @@ def before_delete_listener(mapper, connection, target):
# ★ 将删除快照存入 g
details = {'deleted_snapshot': deleted_snapshot}
print(f"🗑️ [X光-监听器] delete 触发, target_id: {target_id}")
_store_audit_details(module, target_id, 'delete', details)
@ -178,6 +191,7 @@ def after_insert_listener(mapper, connection, target):
# ★ 将新增数据存入 g
details = {'created': new_snapshot}
print(f" [X光-监听器] insert 触发, target_id: {target_id}")
_store_audit_details(module, target_id, 'create', details)
@ -214,4 +228,4 @@ def register_audit_listeners(db):
except Exception as e:
current_app.logger.warning(f'[审计] 绑定模型 {model.__name__} 失败: {e}')
return len(audit_models)
return len(audit_models)