File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11export { LiveInterview } from './ui/live/LiveInterview'
2+ export { InterviewTranscript } from './ui/InterviewTranscript'
23export { InterviewSetupForm } from './ui/setup/InterviewSetupForm'
34export type { DocOption } from './ui/setup/ContextDocumentPicker'
45export { useCreateSession } from './model/useCreateSession'
Original file line number Diff line number Diff line change 1+ import { isQuestion } from '@/domain/session'
2+ import { Spinner } from '@/shared/ui/Spinner'
3+ import { useSessionMessages } from '../model/useSessionMessages'
4+ import { QuestionBubble } from './live/QuestionBubble'
5+ import { AnswerBubble } from './live/AnswerBubble'
6+
7+ // 종료된 세션의 질문/답변 원문(읽기 전용). 라이브 버블을 재사용해
8+ // 음성 질문 재생(TTS)·음성 답변 재생도 그대로 노출한다.
9+ export function InterviewTranscript ( { sessionId } : { sessionId : number } ) {
10+ const { data, isLoading } = useSessionMessages ( sessionId )
11+
12+ if ( isLoading ) {
13+ return (
14+ < div className = "flex justify-center py-8" >
15+ < Spinner />
16+ </ div >
17+ )
18+ }
19+
20+ const items = [ ...( data ?? [ ] ) ] . sort (
21+ ( a , b ) => ( a . sequenceNumber ?? 0 ) - ( b . sequenceNumber ?? 0 ) ,
22+ )
23+ if ( items . length === 0 ) return null
24+
25+ return (
26+ < section className = "flex flex-col gap-4" >
27+ < h2 className = "text-h6 text-fg" > 질문 & 답변</ h2 >
28+ < div className = "flex flex-col gap-3" >
29+ { items . map ( ( m ) =>
30+ isQuestion ( m ) ? (
31+ < QuestionBubble key = { m . id } message = { m } />
32+ ) : (
33+ < AnswerBubble key = { m . id } message = { m } />
34+ ) ,
35+ ) }
36+ </ div >
37+ </ section >
38+ )
39+ }
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ import { SiteNav } from '@/widgets/site-nav'
33import { SiteFooter } from '@/widgets/site-footer'
44import { Button } from '@/shared/ui/Button'
55import { FeedbackReport , useFeedback } from '@/features/feedback'
6+ import { InterviewTranscript } from '@/features/interview'
67
78export default function SessionFeedbackPage ( ) {
89 const { id } = useParams < { id : string } > ( )
@@ -38,7 +39,12 @@ export default function SessionFeedbackPage() {
3839 </ div >
3940 ) }
4041
41- { data && < FeedbackReport feedback = { data } shareable /> }
42+ { data && (
43+ < >
44+ < FeedbackReport feedback = { data } shareable />
45+ < InterviewTranscript sessionId = { sessionId } />
46+ </ >
47+ ) }
4248 </ main >
4349 < SiteFooter />
4450 </ div >
You can’t perform that action at this time.
0 commit comments