Phase 14 구현: 회의 모드 (Meeting Mode)
실시간 녹음 + 타임스탬프 메모 + STT 전사 + LLM 구조화 회의록 + PDF/MD 내보내기. CaptionService 연동, 동시 사용 충돌 방지, 긴 회의 2-pass 요약 지원. DB 2테이블, IPC 15채널, UI 3뷰(목록/녹음/상세), 12개 locale i18n.
This commit is contained in:
parent
dd68fc9ccd
commit
d0c4f9ee53
38 changed files with 2550 additions and 769 deletions
|
|
@ -152,6 +152,56 @@ export type NewRAGDocumentRow = typeof ragDocuments.$inferInsert
|
|||
export type RAGChunkRow = typeof ragChunks.$inferSelect
|
||||
export type NewRAGChunkRow = typeof ragChunks.$inferInsert
|
||||
|
||||
// ── meetingSessions (Phase 14) ──────────────────────────
|
||||
export const meetingSessions = sqliteTable(
|
||||
'meeting_sessions',
|
||||
{
|
||||
id: text('id').primaryKey(),
|
||||
title: text('title'),
|
||||
status: text('status', {
|
||||
enum: ['recording', 'processing', 'completed', 'error'],
|
||||
}).notNull().default('recording'),
|
||||
startedAt: integer('started_at').notNull(),
|
||||
endedAt: integer('ended_at'),
|
||||
durationMs: integer('duration_ms'),
|
||||
rawTranscript: text('raw_transcript'),
|
||||
minutesMarkdown: text('minutes_markdown'),
|
||||
minutesJson: text('minutes_json'),
|
||||
sttModel: text('stt_model'),
|
||||
llmModel: text('llm_model'),
|
||||
sttLatencyMs: integer('stt_latency_ms'),
|
||||
llmLatencyMs: integer('llm_latency_ms'),
|
||||
errorMessage: text('error_message'),
|
||||
createdAt: integer('created_at').notNull(),
|
||||
updatedAt: integer('updated_at').notNull(),
|
||||
},
|
||||
(table) => [
|
||||
index('idx_meeting_sessions_created_at').on(table.createdAt),
|
||||
index('idx_meeting_sessions_status').on(table.status),
|
||||
]
|
||||
)
|
||||
|
||||
// ── meetingMemos (Phase 14) ─────────────────────────────
|
||||
export const meetingMemos = sqliteTable(
|
||||
'meeting_memos',
|
||||
{
|
||||
id: text('id').primaryKey(),
|
||||
sessionId: text('session_id').notNull(),
|
||||
content: text('content').notNull(),
|
||||
timestampMs: integer('timestamp_ms').notNull(),
|
||||
createdAt: integer('created_at').notNull(),
|
||||
},
|
||||
(table) => [
|
||||
index('idx_meeting_memos_session_id').on(table.sessionId),
|
||||
index('idx_meeting_memos_timestamp').on(table.timestampMs),
|
||||
]
|
||||
)
|
||||
|
||||
export type MeetingSessionRow = typeof meetingSessions.$inferSelect
|
||||
export type NewMeetingSessionRow = typeof meetingSessions.$inferInsert
|
||||
export type MeetingMemoRow = typeof meetingMemos.$inferSelect
|
||||
export type NewMeetingMemoRow = typeof meetingMemos.$inferInsert
|
||||
|
||||
// ── 타입 추출 ────────────────────────────────────────────
|
||||
export type History = typeof history.$inferSelect
|
||||
export type NewHistory = typeof history.$inferInsert
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue