fix: MeetingModePage 렌더링 크래시 수정
d3roPalette.indicator → d3roPalette.tag, d3roTypo.reading → d3roTypo.body, PhosphorText variant="reading" → "body", ScreenPanel sx prop 제거. bootstrap.ts require() → dynamic import() 변환.
This commit is contained in:
parent
d0c4f9ee53
commit
acab319589
2 changed files with 26 additions and 18 deletions
|
|
@ -275,13 +275,19 @@ async function initMeetingSummaryWiring(): Promise<void> {
|
|||
|
||||
captionService.on('session-saved', (summary: { sessionId: string }) => {
|
||||
// 회의 모드가 CaptionService를 사용 중이면 MeetingSummary 자동 생성 건너뛰기
|
||||
const { getMeetingModeService } = require('./services/MeetingModeService') as { getMeetingModeService: () => { isMeetingModeActive: () => boolean } }
|
||||
if (getMeetingModeService().isMeetingModeActive()) {
|
||||
logger.info('Skipping auto meeting summary: meeting mode active')
|
||||
return
|
||||
}
|
||||
summaryService.onCaptionSessionSaved(summary).catch((err) => {
|
||||
logger.warn('Auto meeting summary failed:', err)
|
||||
import('./services/MeetingModeService').then(({ getMeetingModeService }) => {
|
||||
if (getMeetingModeService().isMeetingModeActive()) {
|
||||
logger.info('Skipping auto meeting summary: meeting mode active')
|
||||
return
|
||||
}
|
||||
summaryService.onCaptionSessionSaved(summary).catch((err) => {
|
||||
logger.warn('Auto meeting summary failed:', err)
|
||||
})
|
||||
}).catch(() => {
|
||||
// MeetingModeService 로드 실패 시 기본 동작 수행
|
||||
summaryService.onCaptionSessionSaved(summary).catch((err) => {
|
||||
logger.warn('Auto meeting summary failed:', err)
|
||||
})
|
||||
})
|
||||
})
|
||||
} catch (err) {
|
||||
|
|
|
|||
|
|
@ -304,7 +304,7 @@ export function MeetingModePage(): React.ReactElement {
|
|||
{/* 상단 바 */}
|
||||
<Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 2 }}>
|
||||
<Box sx={{ display: 'flex', alignItems: 'center', gap: 2 }}>
|
||||
<FiberManualRecordIcon sx={{ color: d3roPalette.indicator.red, fontSize: 16, animation: 'pulse 1s infinite' }} />
|
||||
<FiberManualRecordIcon sx={{ color: d3roPalette.tag.red, fontSize: 16, animation: 'pulse 1s infinite' }} />
|
||||
<PhosphorText variant="label" sx={{ fontFamily: d3roFontMono }}>
|
||||
{formatTime(elapsedMs)}
|
||||
</PhosphorText>
|
||||
|
|
@ -333,7 +333,8 @@ export function MeetingModePage(): React.ReactElement {
|
|||
{/* 메인 패널: 전사 + 메모 */}
|
||||
<Box sx={{ flex: 1, display: 'flex', gap: 2, minHeight: 0 }}>
|
||||
{/* 좌: 실시간 전사 */}
|
||||
<ScreenPanel sx={{ flex: 1, overflow: 'hidden', display: 'flex', flexDirection: 'column' }}>
|
||||
<Box sx={{ flex: 1, overflow: 'hidden', display: 'flex', flexDirection: 'column' }}>
|
||||
<ScreenPanel>
|
||||
<PhosphorText variant="dim" sx={{ mb: 1, fontSize: 11 }}>
|
||||
{t('meeting.transcript')}
|
||||
</PhosphorText>
|
||||
|
|
@ -343,7 +344,7 @@ export function MeetingModePage(): React.ReactElement {
|
|||
flex: 1,
|
||||
overflow: 'auto',
|
||||
fontFamily: d3roFontMono,
|
||||
fontSize: d3roTypo.reading.fontSize,
|
||||
fontSize: d3roTypo.body.size,
|
||||
color: d3roPalette.text.primary,
|
||||
lineHeight: 1.8,
|
||||
}}
|
||||
|
|
@ -363,6 +364,7 @@ export function MeetingModePage(): React.ReactElement {
|
|||
))}
|
||||
</Box>
|
||||
</ScreenPanel>
|
||||
</Box>
|
||||
|
||||
{/* 우: 메모 입력 */}
|
||||
<Box sx={{ width: 300, display: 'flex', flexDirection: 'column' }}>
|
||||
|
|
@ -383,7 +385,7 @@ export function MeetingModePage(): React.ReactElement {
|
|||
<PhosphorText variant="dim" sx={{ fontSize: 10, fontFamily: d3roFontMono }}>
|
||||
{formatTime(memo.timestampMs)}
|
||||
</PhosphorText>
|
||||
<PhosphorText variant="reading" sx={{ fontSize: 12 }}>
|
||||
<PhosphorText variant="body" sx={{ fontSize: 12 }}>
|
||||
{memo.content}
|
||||
</PhosphorText>
|
||||
</Box>
|
||||
|
|
@ -467,7 +469,7 @@ export function MeetingModePage(): React.ReactElement {
|
|||
{/* 요약 */}
|
||||
<MetalCard sx={{ mb: 2 }}>
|
||||
<PhosphorText variant="label" sx={{ mb: 1 }}>{t('meeting.summary')}</PhosphorText>
|
||||
<PhosphorText variant="reading" sx={{ whiteSpace: 'pre-wrap' }}>
|
||||
<PhosphorText variant="body" sx={{ whiteSpace: 'pre-wrap' }}>
|
||||
{detail.minutes.summary}
|
||||
</PhosphorText>
|
||||
</MetalCard>
|
||||
|
|
@ -477,7 +479,7 @@ export function MeetingModePage(): React.ReactElement {
|
|||
<MetalCard sx={{ mb: 2 }}>
|
||||
<PhosphorText variant="label" sx={{ mb: 1 }}>{t('meeting.decisions')}</PhosphorText>
|
||||
{detail.minutes.decisions.map((d, i) => (
|
||||
<PhosphorText key={i} variant="reading" sx={{ mb: 0.5 }}>
|
||||
<PhosphorText key={i} variant="body" sx={{ mb: 0.5 }}>
|
||||
{'• '}{d}
|
||||
</PhosphorText>
|
||||
))}
|
||||
|
|
@ -489,7 +491,7 @@ export function MeetingModePage(): React.ReactElement {
|
|||
<MetalCard sx={{ mb: 2 }}>
|
||||
<PhosphorText variant="label" sx={{ mb: 1 }}>{t('meeting.actionItems')}</PhosphorText>
|
||||
{detail.minutes.actionItems.map((item, i) => (
|
||||
<PhosphorText key={i} variant="reading" sx={{ mb: 0.5 }}>
|
||||
<PhosphorText key={i} variant="body" sx={{ mb: 0.5 }}>
|
||||
{'☐ '}{item.assignee ? `${item.assignee}: ` : ''}{item.task}
|
||||
{item.deadline ? ` (${item.deadline})` : ''}
|
||||
</PhosphorText>
|
||||
|
|
@ -506,7 +508,7 @@ export function MeetingModePage(): React.ReactElement {
|
|||
<PhosphorText variant="dim" sx={{ fontFamily: d3roFontMono, minWidth: 50 }}>
|
||||
{tl.time}
|
||||
</PhosphorText>
|
||||
<PhosphorText variant="reading" sx={{ flex: 1 }}>
|
||||
<PhosphorText variant="body" sx={{ flex: 1 }}>
|
||||
{tl.type === 'memo' ? '📝 ' : ''}{tl.content}
|
||||
</PhosphorText>
|
||||
</Box>
|
||||
|
|
@ -519,10 +521,10 @@ export function MeetingModePage(): React.ReactElement {
|
|||
{/* 에러 메시지 */}
|
||||
{detail.status === 'error' && detail.errorMessage && (
|
||||
<MetalCard sx={{ mb: 2 }}>
|
||||
<PhosphorText variant="label" sx={{ color: d3roPalette.indicator.red, mb: 1 }}>
|
||||
<PhosphorText variant="label" sx={{ color: d3roPalette.tag.red, mb: 1 }}>
|
||||
{t('meeting.error')}
|
||||
</PhosphorText>
|
||||
<PhosphorText variant="reading">{detail.errorMessage}</PhosphorText>
|
||||
<PhosphorText variant="body">{detail.errorMessage}</PhosphorText>
|
||||
</MetalCard>
|
||||
)}
|
||||
|
||||
|
|
@ -535,7 +537,7 @@ export function MeetingModePage(): React.ReactElement {
|
|||
<PhosphorText variant="dim" sx={{ fontFamily: d3roFontMono, minWidth: 50 }}>
|
||||
{formatTime(m.timestampMs)}
|
||||
</PhosphorText>
|
||||
<PhosphorText variant="reading">{m.content}</PhosphorText>
|
||||
<PhosphorText variant="body">{m.content}</PhosphorText>
|
||||
</Box>
|
||||
))}
|
||||
</MetalCard>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue