feat: 增加 Agent Excel 批量测试

This commit is contained in:
2026-08-12 17:00:50 +08:00
parent c4231f268b
commit 3faecab6ac
26 changed files with 1327 additions and 6 deletions

View File

@@ -0,0 +1,74 @@
"""add persistent Agent batch tests
Revision ID: 0033_agent_batch_tests
Revises: 0032_message_feedback
"""
from alembic import op
import sqlalchemy as sa
revision = "0033_agent_batch_tests"
down_revision = "0032_message_feedback"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.create_table(
"sys_agent_batch_test",
sa.Column("id", sa.BigInteger(), primary_key=True, autoincrement=True),
sa.Column("name", sa.String(160), nullable=False),
sa.Column("original_filename", sa.String(255), nullable=False),
sa.Column("status", sa.String(20), nullable=False, server_default="pending"),
sa.Column("total_count", sa.Integer(), nullable=False, server_default="0"),
sa.Column("success_count", sa.Integer(), nullable=False, server_default="0"),
sa.Column("failed_count", sa.Integer(), nullable=False, server_default="0"),
sa.Column("processed_count", sa.Integer(), nullable=False, server_default="0"),
sa.Column("prompt_content", sa.Text(), nullable=False),
sa.Column("model_id", sa.BigInteger(), sa.ForeignKey("sys_model.id"), nullable=False),
sa.Column("model_name", sa.String(100), nullable=False),
sa.Column("knowledge_ids", sa.Text(), nullable=False),
sa.Column("knowledge_names", sa.Text(), nullable=False),
sa.Column("generation_config", sa.Text(), nullable=False),
sa.Column("created_by", sa.BigInteger(), sa.ForeignKey("sys_admin.id"), nullable=False),
sa.Column("started_at", sa.DateTime(), nullable=True),
sa.Column("finished_at", sa.DateTime(), nullable=True),
sa.Column("cancelled_at", sa.DateTime(), nullable=True),
sa.Column("created_at", sa.DateTime(), nullable=False, server_default=sa.func.now()),
sa.Column("updated_at", sa.DateTime(), nullable=False, server_default=sa.func.now()),
)
op.create_index("ix_agent_batch_test_creator_created", "sys_agent_batch_test", ["created_by", "created_at"])
op.create_index("ix_agent_batch_test_status_created", "sys_agent_batch_test", ["status", "created_at"])
op.create_table(
"sys_agent_batch_test_item",
sa.Column("id", sa.BigInteger(), primary_key=True, autoincrement=True),
sa.Column("batch_id", sa.BigInteger(), sa.ForeignKey("sys_agent_batch_test.id", ondelete="CASCADE"), nullable=False),
sa.Column("row_number", sa.Integer(), nullable=False),
sa.Column("external_no", sa.String(100), nullable=True),
sa.Column("question", sa.Text(), nullable=False),
sa.Column("answer", sa.Text(), nullable=True),
sa.Column("status", sa.String(20), nullable=False, server_default="pending"),
sa.Column("error_message", sa.Text(), nullable=True),
sa.Column("model_name", sa.String(100), nullable=True),
sa.Column("knowledge_ids", sa.Text(), nullable=True),
sa.Column("retrieve_count", sa.Integer(), nullable=True),
sa.Column("duration_ms", sa.Integer(), nullable=True),
sa.Column("attempt_count", sa.Integer(), nullable=False, server_default="0"),
sa.Column("max_attempts", sa.Integer(), nullable=False, server_default="2"),
sa.Column("next_run_at", sa.DateTime(), nullable=True),
sa.Column("locked_at", sa.DateTime(), nullable=True),
sa.Column("locked_by", sa.String(120), nullable=True),
sa.Column("started_at", sa.DateTime(), nullable=True),
sa.Column("finished_at", sa.DateTime(), nullable=True),
sa.Column("created_at", sa.DateTime(), nullable=False, server_default=sa.func.now()),
sa.Column("updated_at", sa.DateTime(), nullable=False, server_default=sa.func.now()),
)
op.create_index("ix_agent_batch_item_job_order", "sys_agent_batch_test_item", ["batch_id", "row_number"])
op.create_index("ix_agent_batch_item_claim", "sys_agent_batch_test_item", ["status", "next_run_at", "id"])
op.create_index("ix_agent_batch_item_stale", "sys_agent_batch_test_item", ["status", "locked_at"])
def downgrade() -> None:
op.drop_table("sys_agent_batch_test_item")
op.drop_table("sys_agent_batch_test")