refactor(intelligent-eval): reduce nesting complexity in supplement_decision_logs

Extract helper functions _supplement_executing and _supplement_completed
to flatten the nested conditional logic. This improves readability and
makes the code easier to test and maintain.

Addresses code review finding: supplement_decision_logs nested complexity
This commit is contained in:
sinohqb 2026-08-24 01:53:15 +08:00
parent da7dd434dd
commit 09ff2ed123

View File

@ -130,47 +130,16 @@ def list_decision_logs(eval_id: str, session: Session) -> list[dict]:
return [_log_to_dict(log) for log in logs]
def supplement_decision_logs(session: Session) -> int:
"""Platform audit backfill for decision logs.
方案③的决策日志由 OpenClaw agent 上报LLM 自主尽力而为异常路径
如卡死恢复后重试agent 可能跳过上报导致决策过程页面为空这里按评估
状态推导决策并补录
- EXECUTING欠账completed < estimated execute_session所有会话
完成后补 start_analysis
- COMPLETED历史评估/异常路径可能完全没有决策日志回填 execute_session
plan 时段逐条+ start_analysis让旧报告也有决策过程可看
只补"该类型缺失"不重复且只记录状态不改变 agent 的实际执行
Returns:
补录的决策日志条数
"""
evals = session.exec(
select(IntelligentEvalDB).where(
IntelligentEvalDB.status.in_(
[
IntelligentEvalStatus.EXECUTING.value,
IntelligentEvalStatus.COMPLETED.value,
]
)
)
).all()
def _supplement_executing(
ev: IntelligentEvalDB,
sessions: list,
completed: int,
estimated: int,
types: set[str],
session: Session,
) -> int:
"""Supplement decision logs for EXECUTING evals."""
added = 0
for ev in evals:
plan = ev.get_plan() if ev.plan else {}
estimated = plan.get("estimated_sessions", 0)
sessions = session.exec(select(IntelligentEvalSessionDB).where(IntelligentEvalSessionDB.eval_id == ev.id)).all()
completed = sum(1 for s in sessions if s.status == "completed")
types = {
x.decision_type
for x in session.exec(
select(IntelligentEvalDecisionLogDB).where(IntelligentEvalDecisionLogDB.eval_id == ev.id)
).all()
}
if ev.status == IntelligentEvalStatus.EXECUTING.value:
if "execute_session" not in types and completed < estimated:
_append_row(
ev.id,
@ -191,8 +160,20 @@ def supplement_decision_logs(session: Session) -> int:
session,
)
added += 1
elif ev.status == IntelligentEvalStatus.COMPLETED.value:
# 历史回填completed 评估决策日志全缺失时,按时段补 execute_session
return added
def _supplement_completed(
ev: IntelligentEvalDB,
sessions: list,
completed: int,
estimated: int,
plan: dict,
types: set[str],
session: Session,
) -> int:
"""Supplement decision logs for COMPLETED evals (historical backfill)."""
added = 0
if "execute_session" not in types:
slots = plan.get("time_distribution") or []
if slots:
@ -233,3 +214,54 @@ def supplement_decision_logs(session: Session) -> int:
)
added += 1
return added
def supplement_decision_logs(session: Session) -> int:
"""Platform audit backfill for decision logs.
方案③的决策日志由 OpenClaw agent 上报LLM 自主尽力而为异常路径
如卡死恢复后重试agent 可能跳过上报导致决策过程页面为空这里按评估
状态推导决策并补录
- EXECUTING欠账completed < estimated execute_session所有会话
完成后补 start_analysis
- COMPLETED历史评估/异常路径可能完全没有决策日志回填 execute_session
plan 时段逐条+ start_analysis让旧报告也有决策过程可看
只补"该类型缺失"不重复且只记录状态不改变 agent 的实际执行
Returns:
补录的决策日志条数
"""
evals = session.exec(
select(IntelligentEvalDB).where(
IntelligentEvalDB.status.in_(
[
IntelligentEvalStatus.EXECUTING.value,
IntelligentEvalStatus.COMPLETED.value,
]
)
)
).all()
added = 0
for ev in evals:
plan = ev.get_plan() if ev.plan else {}
estimated = plan.get("estimated_sessions", 0)
sessions = session.exec(
select(IntelligentEvalSessionDB).where(IntelligentEvalSessionDB.eval_id == ev.id)
).all()
completed = sum(1 for s in sessions if s.status == "completed")
types = {
x.decision_type
for x in session.exec(
select(IntelligentEvalDecisionLogDB).where(IntelligentEvalDecisionLogDB.eval_id == ev.id)
).all()
}
if ev.status == IntelligentEvalStatus.EXECUTING.value:
added += _supplement_executing(ev, sessions, completed, estimated, types, session)
elif ev.status == IntelligentEvalStatus.COMPLETED.value:
added += _supplement_completed(ev, sessions, completed, estimated, plan, types, session)
return added