ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: OpenAI pipeline и voice sessions

This commit is contained in:
DCCONSTRUCTIONS
2026-04-24 17:53:26 +03:00
parent 3c19c3175f
commit 1a20e19a93
7 changed files with 823 additions and 33 deletions
@@ -0,0 +1,142 @@
# Generated by Codex on 2026-04-24
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import uuid
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
("db", "0124_workspace_ai_settings_and_credentials"),
]
operations = [
migrations.CreateModel(
name="VoiceTaskSession",
fields=[
(
"created_at",
models.DateTimeField(auto_now_add=True, verbose_name="Created At"),
),
(
"updated_at",
models.DateTimeField(auto_now=True, verbose_name="Last Modified At"),
),
("deleted_at", models.DateTimeField(blank=True, null=True, verbose_name="Deleted At")),
(
"id",
models.UUIDField(
db_index=True,
default=uuid.uuid4,
editable=False,
primary_key=True,
serialize=False,
unique=True,
),
),
(
"status",
models.CharField(
choices=[
("uploaded", "Uploaded"),
("transcribing", "Transcribing"),
("transcribed", "Transcribed"),
("parsing", "Parsing"),
("parsed", "Parsed"),
("failed", "Failed"),
],
default="uploaded",
max_length=32,
),
),
("audio_duration_seconds", models.FloatField(blank=True, null=True)),
("audio_content_type", models.CharField(blank=True, max_length=100)),
("audio_size", models.PositiveIntegerField(blank=True, null=True)),
("transcript", models.TextField(blank=True)),
("intent", models.CharField(blank=True, max_length=40)),
("parsed_json", models.JSONField(blank=True, default=dict)),
("client_context", models.JSONField(blank=True, default=dict)),
("error_code", models.CharField(blank=True, max_length=80)),
("error_message", models.TextField(blank=True)),
(
"created_by",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="%(class)s_created_by",
to=settings.AUTH_USER_MODEL,
verbose_name="Created By",
),
),
(
"created_task",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="created_by_voice_sessions",
to="db.issue",
),
),
(
"updated_by",
models.ForeignKey(
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="%(class)s_updated_by",
to=settings.AUTH_USER_MODEL,
verbose_name="Last Modified By",
),
),
(
"updated_task",
models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
related_name="updated_by_voice_sessions",
to="db.issue",
),
),
(
"user",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="voice_task_sessions",
to=settings.AUTH_USER_MODEL,
),
),
(
"workspace",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="voice_task_sessions",
to="db.workspace",
),
),
],
options={
"verbose_name": "Voice Task Session",
"verbose_name_plural": "Voice Task Sessions",
"db_table": "voice_task_sessions",
"ordering": ("-created_at",),
},
),
migrations.AddIndex(
model_name="voicetasksession",
index=models.Index(
fields=["workspace", "user", "-created_at"],
name="voice_task_session_user_idx",
),
),
migrations.AddIndex(
model_name="voicetasksession",
index=models.Index(
fields=["workspace", "status", "-created_at"],
name="voice_task_session_status_idx",
),
),
]