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:
parent
da7dd434dd
commit
09ff2ed123
@ -130,47 +130,16 @@ def list_decision_logs(eval_id: str, session: Session) -> list[dict]:
|
|||||||
return [_log_to_dict(log) for log in logs]
|
return [_log_to_dict(log) for log in logs]
|
||||||
|
|
||||||
|
|
||||||
def supplement_decision_logs(session: Session) -> int:
|
def _supplement_executing(
|
||||||
"""Platform audit backfill for decision logs.
|
ev: IntelligentEvalDB,
|
||||||
|
sessions: list,
|
||||||
方案③的决策日志由 OpenClaw agent 上报(LLM 自主,尽力而为)——异常路径
|
completed: int,
|
||||||
(如卡死恢复后重试)agent 可能跳过上报,导致决策过程页面为空。这里按评估
|
estimated: int,
|
||||||
状态推导决策并补录:
|
types: set[str],
|
||||||
|
session: Session,
|
||||||
- EXECUTING:欠账(completed < estimated)补 execute_session,所有会话
|
) -> int:
|
||||||
完成后补 start_analysis。
|
"""Supplement decision logs for EXECUTING evals."""
|
||||||
- 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
|
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:
|
if "execute_session" not in types and completed < estimated:
|
||||||
_append_row(
|
_append_row(
|
||||||
ev.id,
|
ev.id,
|
||||||
@ -191,8 +160,20 @@ def supplement_decision_logs(session: Session) -> int:
|
|||||||
session,
|
session,
|
||||||
)
|
)
|
||||||
added += 1
|
added += 1
|
||||||
elif ev.status == IntelligentEvalStatus.COMPLETED.value:
|
return added
|
||||||
# 历史回填:completed 评估决策日志全缺失时,按时段补 execute_session
|
|
||||||
|
|
||||||
|
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:
|
if "execute_session" not in types:
|
||||||
slots = plan.get("time_distribution") or []
|
slots = plan.get("time_distribution") or []
|
||||||
if slots:
|
if slots:
|
||||||
@ -233,3 +214,54 @@ def supplement_decision_logs(session: Session) -> int:
|
|||||||
)
|
)
|
||||||
added += 1
|
added += 1
|
||||||
return added
|
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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user