136 lines
9.1 KiB
Python
136 lines
9.1 KiB
Python
# Generated by Django 6.0.8 on 2026-09-09 02:53
|
|
|
|
import django.db.models.deletion
|
|
import uuid
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='AgentRun',
|
|
fields=[
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('title', models.CharField(max_length=160, verbose_name='标题')),
|
|
('status', models.CharField(choices=[('pending', '等待'), ('running', '运行中'), ('waiting_approval', '等待确认'), ('succeeded', '成功'), ('failed', '失败'), ('cancelled', '已取消')], default='pending', max_length=32, verbose_name='状态')),
|
|
('lock_version', models.PositiveBigIntegerField(default=0, verbose_name='锁版本')),
|
|
('input_summary', models.JSONField(default=dict, verbose_name='输入摘要')),
|
|
('output_summary', models.JSONField(blank=True, null=True, verbose_name='输出摘要')),
|
|
('agent_name', models.CharField(default='job_research', max_length=100, verbose_name='Agent 名称')),
|
|
('agent_version', models.CharField(blank=True, max_length=40, verbose_name='Agent 版本')),
|
|
('instruction_version', models.CharField(blank=True, max_length=40, verbose_name='指令版本')),
|
|
('toolset_version', models.CharField(blank=True, max_length=40, verbose_name='工具集版本')),
|
|
('model_name', models.CharField(blank=True, max_length=100, verbose_name='模型名称')),
|
|
('trace_id', models.CharField(blank=True, max_length=128, verbose_name='追踪标识')),
|
|
('started_at', models.DateTimeField(blank=True, null=True, verbose_name='开始时间')),
|
|
('finished_at', models.DateTimeField(blank=True, null=True, verbose_name='结束时间')),
|
|
('duration_ms', models.PositiveBigIntegerField(blank=True, null=True, verbose_name='耗时毫秒')),
|
|
('input_tokens', models.PositiveBigIntegerField(blank=True, null=True, verbose_name='输入 Token')),
|
|
('output_tokens', models.PositiveBigIntegerField(blank=True, null=True, verbose_name='输出 Token')),
|
|
('estimated_cost', models.DecimalField(blank=True, decimal_places=6, max_digits=12, null=True, verbose_name='估算费用')),
|
|
('error_code', models.CharField(blank=True, max_length=80, verbose_name='错误码')),
|
|
('error_summary', models.TextField(blank=True, verbose_name='错误摘要')),
|
|
('owner', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='%(app_label)s_%(class)s_items', to=settings.AUTH_USER_MODEL, verbose_name='所属用户')),
|
|
],
|
|
options={
|
|
'ordering': ('-created_at',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='AgentRunEvent',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('sequence', models.PositiveBigIntegerField(verbose_name='事件序号')),
|
|
('event_type', models.CharField(max_length=64, verbose_name='事件类型')),
|
|
('summary', models.CharField(max_length=240, verbose_name='摘要')),
|
|
('payload_summary', models.JSONField(default=dict, verbose_name='数据摘要')),
|
|
('occurred_at', models.DateTimeField(verbose_name='发生时间')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='记录时间')),
|
|
('run', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='events', to='agent_runtime.agentrun')),
|
|
],
|
|
options={
|
|
'ordering': ('sequence',),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='HumanApproval',
|
|
fields=[
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
|
|
('request_key', models.CharField(max_length=128, verbose_name='请求键')),
|
|
('approval_type', models.CharField(max_length=64, verbose_name='确认类型')),
|
|
('status', models.CharField(choices=[('pending', '待处理'), ('approved', '已通过'), ('rejected', '已拒绝'), ('expired', '已过期'), ('cancelled', '已取消')], default='pending', max_length=20, verbose_name='状态')),
|
|
('request_summary', models.JSONField(default=dict, verbose_name='请求摘要')),
|
|
('decision_summary', models.JSONField(blank=True, null=True, verbose_name='处理摘要')),
|
|
('requested_at', models.DateTimeField(verbose_name='请求时间')),
|
|
('resolved_at', models.DateTimeField(blank=True, null=True, verbose_name='处理时间')),
|
|
('resolved_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='resolved_agent_approvals', to=settings.AUTH_USER_MODEL)),
|
|
('run', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='approvals', to='agent_runtime.agentrun')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='ToolCall',
|
|
fields=[
|
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
|
('call_id', models.CharField(max_length=128, verbose_name='调用标识')),
|
|
('tool_name', models.CharField(max_length=100, verbose_name='工具名称')),
|
|
('tool_version', models.CharField(blank=True, max_length=40, verbose_name='工具版本')),
|
|
('idempotency_key', models.CharField(blank=True, max_length=128, verbose_name='幂等键')),
|
|
('status', models.CharField(choices=[('started', '已开始'), ('succeeded', '成功'), ('failed', '失败')], default='started', max_length=20, verbose_name='状态')),
|
|
('arguments_summary', models.JSONField(default=dict, verbose_name='参数摘要')),
|
|
('result_summary', models.JSONField(blank=True, null=True, verbose_name='结果摘要')),
|
|
('error_code', models.CharField(blank=True, max_length=80, verbose_name='错误码')),
|
|
('error_summary', models.TextField(blank=True, verbose_name='错误摘要')),
|
|
('started_at', models.DateTimeField(verbose_name='开始时间')),
|
|
('finished_at', models.DateTimeField(blank=True, null=True, verbose_name='结束时间')),
|
|
('duration_ms', models.PositiveBigIntegerField(blank=True, null=True, verbose_name='耗时毫秒')),
|
|
('run', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='tool_calls', to='agent_runtime.agentrun')),
|
|
],
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='agentrun',
|
|
index=models.Index(fields=['owner', 'created_at'], name='run_owner_created_idx'),
|
|
),
|
|
migrations.AddConstraint(
|
|
model_name='agentrun',
|
|
constraint=models.CheckConstraint(condition=models.Q(('lock_version__gte', 0)), name='run_lock_nonnegative'),
|
|
),
|
|
migrations.AddConstraint(
|
|
model_name='agentrunevent',
|
|
constraint=models.UniqueConstraint(fields=('run', 'sequence'), name='event_run_sequence_uniq'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='humanapproval',
|
|
index=models.Index(fields=['status', 'requested_at'], name='approval_status_time_idx'),
|
|
),
|
|
migrations.AddConstraint(
|
|
model_name='humanapproval',
|
|
constraint=models.UniqueConstraint(fields=('run', 'request_key'), name='approval_run_key_uniq'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='toolcall',
|
|
index=models.Index(fields=['run', 'started_at'], name='tool_run_started_idx'),
|
|
),
|
|
migrations.AddConstraint(
|
|
model_name='toolcall',
|
|
constraint=models.UniqueConstraint(fields=('run', 'call_id'), name='tool_run_call_uniq'),
|
|
),
|
|
migrations.AddConstraint(
|
|
model_name='toolcall',
|
|
constraint=models.UniqueConstraint(condition=models.Q(('idempotency_key', ''), _negated=True), fields=('run', 'idempotency_key'), name='tool_run_idempotency_uniq'),
|
|
),
|
|
]
|