fix: 加宽 skill_trajectory_links.atom_id 列 VARCHAR(36)->128 修复 DataError(1406);TraceIdFilter 从 root logger 移至 handler 修复子 logger %(trace_id)s KeyError 日志刷屏;evolution scheduler 循环增加 db.rollback() 兜底;附带 models.py CRLF->LF 归一。
CI / gate (push) Has been cancelled

This commit is contained in:
QihuAI Design committed 2026-07-20 19:02:40 +08:00
1 parent 5def2697de
commit 71a6403e5b
5 files changed
+1194 -1165

No files matched your search

+9 -1
View File
@@ -128,7 +128,15 @@ def setup_file_logging():
root_logger.setLevel(logging.INFO)
root_logger.addHandler(app_handler)
root_logger.addHandler(error_handler)
root_logger.addFilter(TraceIdFilter())
# TraceIdFilter 必须挂在 handler 上,而非 root logger。
# logger 级 filter 只对「直接经该 logger 发射」的记录生效;子 logger 的记录向上冒泡
# 到 root 的 handler 时不会经过 root 的 logger 级 filter,导致 %(trace_id)s 缺失并抛
# KeyError('trace_id')。handler 级 filter 对经它格式化的每条记录都生效。
_tid_filter = TraceIdFilter()
app_handler.addFilter(_tid_filter)
error_handler.addFilter(_tid_filter)
access_handler.addFilter(_tid_filter)
# 配置访问日志专用logger
access_logger = logging.getLogger("aiflow.access")
+1159 -1159
View File
File diff suppressed because it is too large. Load diff
@@ -96,10 +96,24 @@ class PipelineScheduler:
self._process_trajectory(db, traj)
except Exception as e:
logger.error(f"处理轨迹 {traj.id} 失败: {e}")
traj.error_msg = str(e)[:500]
traj.retry_count = (traj.retry_count or 0) + 1
traj.status = "error"
db.commit()
# 先回滚失效事务(_process_trajectory 内 commit 失败会让 session
# 进入 rolled-back 状态,不回滚直接再 commit 会抛 PendingRollbackError
# 并级联到外层日志),再写错误状态。
try:
db.rollback()
except Exception:
pass
try:
traj.error_msg = str(e)[:500]
traj.retry_count = (traj.retry_count or 0) + 1
traj.status = "error"
db.commit()
except Exception as ce:
logger.error(f"更新轨迹 {traj.id} 错误状态失败: {ce}")
try:
db.rollback()
except Exception:
pass
finally:
db.close()
except Exception as e: