feat: add intelligent support workflow
This commit is contained in:
113
backend/apps/tickets/migrations/0015_support_evaluation.py
Normal file
113
backend/apps/tickets/migrations/0015_support_evaluation.py
Normal file
@@ -0,0 +1,113 @@
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("tickets", "0014_customerreplytask_channel_approval"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name="SupportEvaluationCase",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("key", models.SlugField(max_length=120, unique=True)),
|
||||
("name", models.CharField(max_length=200)),
|
||||
("source_kind", models.CharField(default="synthetic", max_length=32)),
|
||||
("input_manifest", models.JSONField(default=dict)),
|
||||
("expected_solution_ids", models.JSONField(default=list)),
|
||||
("expected_auto_resolve", models.BooleanField(default=False)),
|
||||
("expected_manual_fallback", models.BooleanField(default=True)),
|
||||
("notes", models.TextField(blank=True)),
|
||||
("enabled", models.BooleanField(default=True)),
|
||||
("created_at", models.DateTimeField(auto_now_add=True)),
|
||||
("updated_at", models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
options={
|
||||
"ordering": ["key"],
|
||||
"indexes": [
|
||||
models.Index(
|
||||
fields=["source_kind", "enabled"],
|
||||
name="tickets_sup_source__864444_idx",
|
||||
)
|
||||
],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name="SupportEvaluationResult",
|
||||
fields=[
|
||||
(
|
||||
"id",
|
||||
models.BigAutoField(
|
||||
auto_created=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
verbose_name="ID",
|
||||
),
|
||||
),
|
||||
("actual_candidate_solution_ids", models.JSONField(default=list)),
|
||||
("actual_citation_ranks", models.JSONField(default=list)),
|
||||
("matched_expected_solution", models.BooleanField(default=False)),
|
||||
("actual_auto_resolved", models.BooleanField(default=False)),
|
||||
("actual_manual_fallback", models.BooleanField(default=False)),
|
||||
("incorrect_auto_reuse", models.BooleanField(default=False)),
|
||||
("citations_valid", models.BooleanField(default=False)),
|
||||
("passed", models.BooleanField(default=False)),
|
||||
("details", models.JSONField(blank=True, default=dict)),
|
||||
("created_at", models.DateTimeField(auto_now_add=True)),
|
||||
("updated_at", models.DateTimeField(auto_now=True)),
|
||||
(
|
||||
"analysis",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
related_name="evaluation_results",
|
||||
to="tickets.ticketsupportanalysis",
|
||||
),
|
||||
),
|
||||
(
|
||||
"case",
|
||||
models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.PROTECT,
|
||||
related_name="results",
|
||||
to="tickets.supportevaluationcase",
|
||||
),
|
||||
),
|
||||
(
|
||||
"reviewed_by",
|
||||
models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="reviewed_support_evaluations",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
"ordering": ["-updated_at"],
|
||||
"indexes": [
|
||||
models.Index(
|
||||
fields=["case", "updated_at"],
|
||||
name="tickets_sup_case_id_1fef4b_idx",
|
||||
)
|
||||
],
|
||||
"constraints": [
|
||||
models.UniqueConstraint(
|
||||
fields=("case", "analysis"),
|
||||
name="unique_support_case_analysis_result",
|
||||
)
|
||||
],
|
||||
},
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user