fix: relink legacy AUDIO questions to audio_conversation_type definition
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
0e31a08903
commit
1589813dae
|
|
@ -0,0 +1 @@
|
|||
-- Data fix is not reversed: legacy AUDIO relinks cannot be restored without a backup.
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
-- Legacy AUDIO questions (voice_prompt / sample_answer fields, no dynamic_payload) were linked to
|
||||
-- unrelated dynamic definitions (e.g. ielts_speaking_cue_card_part1). Ensure the canonical
|
||||
-- audio_conversation_type definition exists and relink affected rows.
|
||||
|
||||
INSERT INTO question_type_definitions (
|
||||
key,
|
||||
display_name,
|
||||
description,
|
||||
stimulus_component_kinds,
|
||||
response_component_kinds,
|
||||
stimulus_schema,
|
||||
response_schema,
|
||||
is_system,
|
||||
status
|
||||
)
|
||||
VALUES (
|
||||
'audio_conversation_type',
|
||||
'Audio Conversation',
|
||||
'Listen to a voice prompt and respond with a spoken answer. Maps to legacy AUDIO questions (voice_prompt, sample_answer_voice_prompt, audio_correct_answer_text).',
|
||||
ARRAY['QUESTION_TEXT', 'AUDIO_PROMPT']::TEXT[],
|
||||
ARRAY['AUDIO_RESPONSE']::TEXT[],
|
||||
'[
|
||||
{"id": "question_text_1", "kind": "QUESTION_TEXT", "label": "Question text", "required": false},
|
||||
{"id": "voice_prompt_1", "kind": "AUDIO_PROMPT", "label": "Voice prompt", "required": true},
|
||||
{"id": "sample_answer_voice_prompt_1", "kind": "AUDIO_PROMPT", "label": "Sample answer voice prompt", "required": false}
|
||||
]'::jsonb,
|
||||
'[
|
||||
{"id": "audio_response_1", "kind": "AUDIO_RESPONSE", "label": "Learner audio response", "required": true}
|
||||
]'::jsonb,
|
||||
TRUE,
|
||||
'ACTIVE'
|
||||
)
|
||||
ON CONFLICT (key) DO NOTHING;
|
||||
|
||||
UPDATE questions q
|
||||
SET
|
||||
question_type_definition_id = audio_def.id,
|
||||
updated_at = CURRENT_TIMESTAMP
|
||||
FROM question_type_definitions audio_def
|
||||
WHERE audio_def.key = 'audio_conversation_type'
|
||||
AND q.question_type = 'AUDIO'
|
||||
AND q.dynamic_payload IS NULL
|
||||
AND (
|
||||
q.question_type_definition_id IS NULL
|
||||
OR q.question_type_definition_id IS DISTINCT FROM audio_def.id
|
||||
);
|
||||
Loading…
Reference in New Issue
Block a user