From eb76cd9bcd4540562ca3e658466904571a638406 Mon Sep 17 00:00:00 2001 From: Mathieu Virbel Date: Thu, 2 Nov 2023 19:54:44 +0100 Subject: [PATCH] server/www: rename topic text field to transcript This aleviate the current issue with vercel deployment --- ...27dcb099_rename_back_text_to_transcript.py | 80 +++++++++++++++++++ .../9920ecfe2735_rename_transcript_to_text.py | 1 - server/reflector/db/transcripts.py | 2 +- .../reflector/pipelines/main_live_pipeline.py | 2 +- server/reflector/views/transcripts.py | 4 +- server/tests/test_transcripts_rtc_ws.py | 4 +- www/app/[domain]/transcripts/topicList.tsx | 2 +- .../[domain]/transcripts/webSocketTypes.ts | 2 +- www/app/api/models/GetTranscriptTopic.ts | 17 +++- 9 files changed, 101 insertions(+), 13 deletions(-) create mode 100644 server/migrations/versions/38a927dcb099_rename_back_text_to_transcript.py diff --git a/server/migrations/versions/38a927dcb099_rename_back_text_to_transcript.py b/server/migrations/versions/38a927dcb099_rename_back_text_to_transcript.py new file mode 100644 index 00000000..dffe6fa1 --- /dev/null +++ b/server/migrations/versions/38a927dcb099_rename_back_text_to_transcript.py @@ -0,0 +1,80 @@ +"""rename back text to transcript + +Revision ID: 38a927dcb099 +Revises: 9920ecfe2735 +Create Date: 2023-11-02 19:53:09.116240 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.sql import table, column +from sqlalchemy import select + + +# revision identifiers, used by Alembic. +revision: str = '38a927dcb099' +down_revision: Union[str, None] = '9920ecfe2735' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # bind the engine + bind = op.get_bind() + + # Reflect the table + transcript = table("transcript", column("id", sa.String), column("topics", sa.JSON)) + + # Select all rows from the transcript table + results = bind.execute(select([transcript.c.id, transcript.c.topics])) + + for row in results: + transcript_id = row["id"] + topics_json = row["topics"] + + # Process each topic in the topics JSON array + updated_topics = [] + for topic in topics_json: + if "text" in topic: + # Rename key 'text' back to 'transcript' + topic["transcript"] = topic.pop("text") + updated_topics.append(topic) + + # Update the transcript table + bind.execute( + transcript.update() + .where(transcript.c.id == transcript_id) + .values(topics=updated_topics) + ) + + +def downgrade() -> None: + # bind the engine + bind = op.get_bind() + + # Reflect the table + transcript = table("transcript", column("id", sa.String), column("topics", sa.JSON)) + + # Select all rows from the transcript table + results = bind.execute(select([transcript.c.id, transcript.c.topics])) + + for row in results: + transcript_id = row["id"] + topics_json = row["topics"] + + # Process each topic in the topics JSON array + updated_topics = [] + for topic in topics_json: + if "transcript" in topic: + # Rename key 'transcript' to 'text' + topic["text"] = topic.pop("transcript") + updated_topics.append(topic) + + # Update the transcript table + bind.execute( + transcript.update() + .where(transcript.c.id == transcript_id) + .values(topics=updated_topics) + ) diff --git a/server/migrations/versions/9920ecfe2735_rename_transcript_to_text.py b/server/migrations/versions/9920ecfe2735_rename_transcript_to_text.py index 90ff85ac..caecaefd 100644 --- a/server/migrations/versions/9920ecfe2735_rename_transcript_to_text.py +++ b/server/migrations/versions/9920ecfe2735_rename_transcript_to_text.py @@ -9,7 +9,6 @@ from typing import Sequence, Union from alembic import op import sqlalchemy as sa -import json from sqlalchemy.sql import table, column from sqlalchemy import select diff --git a/server/reflector/db/transcripts.py b/server/reflector/db/transcripts.py index 5d190bdc..6ac2e32a 100644 --- a/server/reflector/db/transcripts.py +++ b/server/reflector/db/transcripts.py @@ -63,7 +63,7 @@ class TranscriptTopic(BaseModel): summary: str timestamp: float duration: float | None = 0 - text: str | None = None + transcript: str | None = None words: list[ProcessorWord] = [] diff --git a/server/reflector/pipelines/main_live_pipeline.py b/server/reflector/pipelines/main_live_pipeline.py index bf11bdf3..477b0ce9 100644 --- a/server/reflector/pipelines/main_live_pipeline.py +++ b/server/reflector/pipelines/main_live_pipeline.py @@ -162,7 +162,7 @@ class PipelineMainBase(PipelineRunner): title=data.title, summary=data.summary, timestamp=data.timestamp, - text=data.transcript.text, + transcript=data.transcript.text, words=data.transcript.words, ) if isinstance(data, TitleSummaryWithIdProcessorType): diff --git a/server/reflector/views/transcripts.py b/server/reflector/views/transcripts.py index f724bcdc..77c3e149 100644 --- a/server/reflector/views/transcripts.py +++ b/server/reflector/views/transcripts.py @@ -121,7 +121,7 @@ class GetTranscriptTopic(BaseModel): title: str summary: str timestamp: float - text: str + transcript: str segments: list[GetTranscriptSegmentTopic] = [] @classmethod @@ -154,7 +154,7 @@ class GetTranscriptTopic(BaseModel): title=topic.title, summary=topic.summary, timestamp=topic.timestamp, - text=text, + transcript=text, segments=segments, ) diff --git a/server/tests/test_transcripts_rtc_ws.py b/server/tests/test_transcripts_rtc_ws.py index 8f8cac71..413c8b24 100644 --- a/server/tests/test_transcripts_rtc_ws.py +++ b/server/tests/test_transcripts_rtc_ws.py @@ -167,7 +167,7 @@ async def test_transcript_rtc_and_websocket( ev = events[eventnames.index("TOPIC")] assert ev["data"]["id"] assert ev["data"]["summary"] == "LLM SUMMARY" - assert ev["data"]["text"].startswith("Hello world.") + assert ev["data"]["transcript"].startswith("Hello world.") assert ev["data"]["timestamp"] == 0.0 assert "FINAL_LONG_SUMMARY" in eventnames @@ -316,7 +316,7 @@ async def test_transcript_rtc_and_websocket_and_fr( ev = events[eventnames.index("TOPIC")] assert ev["data"]["id"] assert ev["data"]["summary"] == "LLM SUMMARY" - assert ev["data"]["text"].startswith("Hello world.") + assert ev["data"]["transcript"].startswith("Hello world.") assert ev["data"]["timestamp"] == 0.0 assert "FINAL_LONG_SUMMARY" in eventnames diff --git a/www/app/[domain]/transcripts/topicList.tsx b/www/app/[domain]/transcripts/topicList.tsx index 56b02e6e..e7454f79 100644 --- a/www/app/[domain]/transcripts/topicList.tsx +++ b/www/app/[domain]/transcripts/topicList.tsx @@ -132,7 +132,7 @@ export function TopicList({ ))} ) : ( - <>{topic.text} + <>{topic.transcript} )} )} diff --git a/www/app/[domain]/transcripts/webSocketTypes.ts b/www/app/[domain]/transcripts/webSocketTypes.ts index abc67b33..112e7cc0 100644 --- a/www/app/[domain]/transcripts/webSocketTypes.ts +++ b/www/app/[domain]/transcripts/webSocketTypes.ts @@ -9,7 +9,7 @@ export type Topic = { title: string; summary: string; id: string; - text: string; + transcript: string; segments: SegmentTopic[]; }; diff --git a/www/app/api/models/GetTranscriptTopic.ts b/www/app/api/models/GetTranscriptTopic.ts index 7a7d4c90..460b8b39 100644 --- a/www/app/api/models/GetTranscriptTopic.ts +++ b/www/app/api/models/GetTranscriptTopic.ts @@ -19,6 +19,12 @@ import { exists, mapValues } from "../runtime"; * @interface GetTranscriptTopic */ export interface GetTranscriptTopic { + /** + * + * @type {any} + * @memberof GetTranscriptTopic + */ + id: any | null; /** * * @type {any} @@ -42,7 +48,7 @@ export interface GetTranscriptTopic { * @type {any} * @memberof GetTranscriptTopic */ - text: any | null; + transcript: any | null; /** * * @type {any} @@ -56,10 +62,11 @@ export interface GetTranscriptTopic { */ export function instanceOfGetTranscriptTopic(value: object): boolean { let isInstance = true; + isInstance = isInstance && "id" in value; isInstance = isInstance && "title" in value; isInstance = isInstance && "summary" in value; isInstance = isInstance && "timestamp" in value; - isInstance = isInstance && "text" in value; + isInstance = isInstance && "transcript" in value; return isInstance; } @@ -76,10 +83,11 @@ export function GetTranscriptTopicFromJSONTyped( return json; } return { + id: json["id"], title: json["title"], summary: json["summary"], timestamp: json["timestamp"], - text: json["text"], + transcript: json["transcript"], segments: !exists(json, "segments") ? undefined : json["segments"], }; } @@ -94,10 +102,11 @@ export function GetTranscriptTopicToJSON( return null; } return { + id: value.id, title: value.title, summary: value.summary, timestamp: value.timestamp, - text: value.text, + transcript: value.transcript, segments: value.segments, }; }