Tracked under ADR 0002 — Phase B. Detail: implementation plan §B5.
Problem
The fixed nine questions live as a JS literal in static/js/script.js and are identical regardless of who is writing or what they are publishing. A Zenn technical tutorial needs questions about target stack, runtime, and prerequisite knowledge; a note essay needs opening episode, personal context, and reader emotion. Asking the wrong nine questions wastes the user's time and produces a brief that does not match the format.
Scope
Move the fixed-question definition server-side into internal/domain/brief/questions/:
base.go — common to all (theme, reader, exclusions).
narrative.go — extension for note_article + markdown_blog (opening_episode, personal_context, expected_reader_action, tone_stance, target_length_structure).
technical.go — extension for zenn_article + qiita_article (target_stack, runtime_env, prerequisite_knowledge, code_examples, references).
homepage.go — extension for homepage_section (target_conversion, primary_cta, brand_voice).
InterviewService composes base + persona_extension + format_extension at session start. Personas can also contribute extra questions (e.g., Cloudia could ask "クラウディア視点での感想は?").
Acceptance criteria
Dependencies
- B1 (Persona/Format domain), B3 (formats registered).
Tracked under ADR 0002 — Phase B. Detail: implementation plan §B5.
Problem
The fixed nine questions live as a JS literal in
static/js/script.jsand are identical regardless of who is writing or what they are publishing. A Zenn technical tutorial needs questions about target stack, runtime, and prerequisite knowledge; a note essay needs opening episode, personal context, and reader emotion. Asking the wrong nine questions wastes the user's time and produces a brief that does not match the format.Scope
Move the fixed-question definition server-side into
internal/domain/brief/questions/:base.go— common to all (theme, reader, exclusions).narrative.go— extension fornote_article+markdown_blog(opening_episode, personal_context, expected_reader_action, tone_stance, target_length_structure).technical.go— extension forzenn_article+qiita_article(target_stack, runtime_env, prerequisite_knowledge, code_examples, references).homepage.go— extension forhomepage_section(target_conversion, primary_cta, brand_voice).InterviewServicecomposesbase + persona_extension + format_extensionat session start. Personas can also contribute extra questions (e.g., Cloudia could ask "クラウディア視点での感想は?").Acceptance criteria
cloudia × zenn_articlesession asks technical questions includingtarget_stack.terisuke × note_articlesession is byte-identical to the current question set (regression safety).GET /api/brief-sessions/templates?persona_id=X&format_id=Yendpoint instead of hard-coded JS.Dependencies