Ny jobbtype `tts_generate` som kaller ElevenLabs text-to-speech API, lagrer MP3-lyd i CAS, og oppretter media-node med has_media-edge. Voice-preferanse løses i tre lag: eksplisitt i payload → nodens metadata.voice_preference → ELEVENLABS_DEFAULT_VOICE env. Dette er "mottaker-preferanse i metadata" — en node kan sette voice_preference i sin metadata for å styre hvilken stemme som brukes. Ny migrasjon 009: resource_usage_log-tabell for sporing av ressursforbruk (TTS, AI, Whisper, CAS). Ref: docs/features/ressursforbruk.md Endringer: - maskinrommet/src/tts.rs: TTS-handler med ElevenLabs-integrasjon - maskinrommet/src/intentions.rs: POST /intentions/generate_tts - maskinrommet/src/jobs.rs: Dispatcher for tts_generate - migrations/009_resource_usage_and_tts.sql: resource_usage_log - scripts/maskinrommet-env.sh: ELEVENLABS_* env-variabler Krever: ELEVENLABS_API_KEY i /srv/synops/.env (placeholder lagt til) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
21 lines
940 B
SQL
21 lines
940 B
SQL
-- Migration 009: resource_usage_log + TTS-støtte
|
|
--
|
|
-- 1. Oppretter resource_usage_log for sporing av ressursforbruk (AI, Whisper, TTS, CAS, etc.)
|
|
-- 2. Legger grunnlaget for TTS-jobber (voice_preference i node-metadata)
|
|
--
|
|
-- Ref: docs/features/ressursforbruk.md
|
|
|
|
CREATE TABLE resource_usage_log (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
target_node_id UUID NOT NULL REFERENCES nodes(id),
|
|
triggered_by UUID REFERENCES nodes(id),
|
|
collection_id UUID REFERENCES nodes(id),
|
|
resource_type TEXT NOT NULL,
|
|
detail JSONB NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX idx_resource_usage_target ON resource_usage_log(target_node_id);
|
|
CREATE INDEX idx_resource_usage_triggered ON resource_usage_log(triggered_by);
|
|
CREATE INDEX idx_resource_usage_collection ON resource_usage_log(collection_id);
|
|
CREATE INDEX idx_resource_usage_type_time ON resource_usage_log(resource_type, created_at);
|