Legg til transcription_segments-migrasjon (oppgave 7.5)

Oppretter tabellen som lagrer transkripsjons-segmenter med tidsstempler.
Master-kopi for alle transkripsjoner — SRT og ren tekst er avledede formater.
Inkluderer GIN-indeks for norsk fulltekstsøk og unik constraint per kjøring.

Ref: docs/concepts/podcastfabrikken.md § 3

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
vegard 2026-03-17 18:15:01 +01:00
parent edafbc9a12
commit af14edd671

View file

@ -0,0 +1,26 @@
-- Migration 005: Transkripsjonssegmenter
-- Ref: docs/concepts/podcastfabrikken.md § 3
--
-- Master-kopi av alle transkripsjoner. SRT og ren tekst er avledede
-- eksportformater som genereres fra denne tabellen.
-- Universell for all lyd: podcast, møter, voice memos.
CREATE TABLE transcription_segments (
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
node_id UUID NOT NULL REFERENCES nodes(id) ON DELETE CASCADE,
transcribed_at TIMESTAMPTZ NOT NULL, -- grupperer segmenter fra samme kjøring
seq INT NOT NULL,
start_ms INT NOT NULL,
end_ms INT NOT NULL,
content TEXT NOT NULL,
edited BOOLEAN DEFAULT false,
UNIQUE (node_id, transcribed_at, seq)
);
-- Hovedindeks for oppslag: hent segmenter for en node, sortert
CREATE INDEX idx_segments_node ON transcription_segments (node_id, transcribed_at, seq);
-- Fulltekstsøk på tvers av transkripsjoner (norsk)
CREATE INDEX idx_segments_fts ON transcription_segments
USING gin(to_tsvector('norwegian', content));