AgentEvalTool/migrations/versions/3f8a2c91d4e7_add_acceptance_criteria_to_scenarios.py
sinohqb c956da7686
All checks were successful
CI / test (pull_request) Successful in 4m3s
feat(v1.3.1): Phase 2 让成本/放弃率/Go-No-Go 基础设施真正生效
- token 用量接入:ModelGateway 经 adapter.parse_usage 累计评测侧 LLM 调用的
  token 消耗,引擎写入 run.summary.eval_token_usage,报告透出
- 放弃率落地:CaseOutcome 新增 abandoned 标记(对话中途发送/接收失败),
  build_run_summary 统计 abandoned_cases / abandonment_rate
- Go/No-Go 可配置:Scenario 新增 acceptance_criteria 字段(DB 列 + 幂等迁移),
  报告按场景标准出 verdict,缺省回退全局默认;标准变更不触发考纲升版
2026-08-25 18:38:18 +08:00

43 lines
1.3 KiB
Python

"""add acceptance_criteria column to scenarios
Revision ID: 3f8a2c91d4e7
Revises: d5f6193ba7c8
Create Date: 2026-08-25 10:00:00.000000
"""
from typing import Sequence, Union
import sqlalchemy as sa
from alembic import op
from sqlalchemy import inspect
# revision identifiers, used by Alembic.
revision: str = '3f8a2c91d4e7'
down_revision: Union[str, Sequence[str], None] = 'd5f6193ba7c8'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def _column_exists(inspector, table_name: str, column_name: str) -> bool:
columns = inspector.get_columns(table_name)
return any(col['name'] == column_name for col in columns)
def upgrade() -> None:
"""Add scenarios.acceptance_criteria for per-scenario go/no-go thresholds."""
conn = op.get_bind()
inspector = inspect(conn)
if not _column_exists(inspector, 'scenarios', 'acceptance_criteria'):
with op.batch_alter_table('scenarios', schema=None) as batch_op:
batch_op.add_column(sa.Column('acceptance_criteria', sa.Text(), nullable=True))
def downgrade() -> None:
conn = op.get_bind()
inspector = inspect(conn)
if _column_exists(inspector, 'scenarios', 'acceptance_criteria'):
with op.batch_alter_table('scenarios', schema=None) as batch_op:
batch_op.drop_column('acceptance_criteria')