ai: call transcripts (each side recorded, merged by time) and summaries; search on Recordings
ci / check (push) Successful in 1m22s
ci / images (push) Successful in 27s

This commit is contained in:
iamdoubz committed 2026-10-21 19:10:02 -05:00
1 parent d9f9c6e444
commit 4d331fb70e
56 files changed
+5186 -37

No files matched your search

@@ -0,0 +1,4 @@
ALTER TABLE "recordings" ADD COLUMN "transcript" jsonb;--> statement-breakpoint
ALTER TABLE "recordings" ADD COLUMN "summary" text;--> statement-breakpoint
ALTER TABLE "recordings" ADD COLUMN "ai_done_at" timestamp with time zone;--> statement-breakpoint
ALTER TABLE "recordings" ADD COLUMN "ai_error" text;
File diff suppressed because it is too large. Load diff
@@ -50,6 +50,13 @@
"when": 1792624567407,
"tag": "0006_voicemail_transcript",
"breakpoints": true
},
{
"idx": 7,
"version": "7",
"when": 1792626762332,
"tag": "0007_recording_transcripts",
"breakpoints": true
}
]
}
+6
View File
@@ -533,6 +533,12 @@ export const recordings = pgTable('recordings', {
startedAt: tstz().notNull(),
durationMs: integer(),
sizeBytes: bigint({ mode: 'number' }),
/** Spec 10 §3: [{ side: 'caller' | 'other', at: seconds, text }], in time order. */
transcript: jsonb().$type<{ side: 'caller' | 'other'; at: number; text: string }[]>(),
summary: text(),
/** When the transcript job finished with it (null: not yet); aiError: why it has none. */
aiDoneAt: tstz(),
aiError: text(),
...timestamps,
});