debug(audit): 添加X光调试-追踪断点
This commit is contained in:
@ -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)
|
||||
Reference in New Issue
Block a user