본문으로 건너뛰기

회의 — 시작에서 확정까지

2026-08-17 기록. 현재 문서와 내용이 다를 수 있다. 아래 내용은 당시 상태를 보존하며 수정하지 않는다.

회의 하나가 시작해서 확정될 때까지 무엇이 어떤 순서로 일어나는가?

중지 · 재개 · 끊김 · 실패까지 그린다. SA는 경계를, 이 문서는 순서를 진다.


실제로 깨지는 자리는 전부 예외 경로에 있다. 정상 경로 한 줄기만 그리면 만들 때 반드시 구멍이 난다.

1. 회의 하나의 상태

상태성격
NOT_STARTED · IN_PROGRESS · PAUSED · ENDED회의록에 이미 있는 값 넷
화자분리중 · 화자확인대기 · 요약생성중 · 검토대기 · 확정아직 컬럼이 없다
확정 → 검토대기참여자 전원이 다시 고칠 수 있다. 잠그지 않는다

⚠️ 지금 스키마는 ENDED 에서 끝난다 — 종료 후 파이프라인의 상태를 담을 자리가 없다. 마이그레이션 묶음에 같이 넣어야 한다.


2. 회의 중 — 중지와 재개가 세션을 가른다

전사 세션은 회의와 1:1 이 아니다. 중지·재개마다 새 세션이 열리고, 오디오 오브젝트도 세션마다 하나다.

규칙내용
좌표층이 셋이다soniox.start_ms + stt_stream.offset_ms + run.offset_ms. 벤더가 재연결하면 start_ms 가 0으로 리셋되므로 그걸 흡수할 층이 따로 있어야 한다 → SA
run 사이 무음채우지 않는다. run 의 유실만 채운다. 점심시간 1시간이 무음 1시간이 되면 pyannote 과금과 모델 입력을 둘 다 버린다
실제 시각run.started_at + (합본 안의 위치 − run.offset_ms). 벽시계는 run 마다 하나씩 박는 못일 뿐, 미디어 시간을 재지 않는다
오브젝트세션마다 하나. 키가 회의 식별자로 시작한다
동시 세션 금지한 회의에 살아 있는 세션은 하나뿐이라고 스키마가 강제한다

요약에서 전사로 점프하는 근거 칩이 여기 걸린다 — 저장된 시각이 세션 오프셋이라 세션이 둘 이상이면 같은 04:12 가 다른 줄을 가리킨다. 세션 시작 오프셋이 그것을 닫는다.


3. 회의 중에 끊기는 세 가지

셋 다 "회의가 끝난 것"이 아니다. 구분해서 다뤄야 한다.

무엇유실
진행자의 중지·종료0finalize 를 기다린다
배포·스케일 인0SIGTERM 에서 버퍼를 밀어 넣는다 → CA
태스크 크래시최대 30초세그먼트 주기. S3 가 정한 값이 아니라 우리가 고른 값이다
RDS 장애 전환60~120초의 세그먼트 쓰기재시도 버퍼로 흡수할 계획

⚠️ STT 재연결은 세션 경계가 아니다. Soniox 연결이 끊겨 다시 붙는 것은 전사 세션을 새로 열 이유가 아니다. 지금 그 구분이 문서에 없다.


4. 종료 후 — 화자 분리에서 확정까지

규칙내용
요약은 화자 확정 뒤에AI 가 화자를 알고 써야 담당자를 제안하고 결정을 사람에게 귀속할 수 있다
요약 문장에 이름을 안 박는다근거 세그먼트를 참조하고 화면이 조인한다. 확정 후에도 화자를 고칠 수 있어야 하므로
매핑이 둘이다기계 매핑(겹침 최장, api 가 webhook 받자마자 SQL 한 번)과 사람 매핑(SPEAKER_01 ↔ 실제 사람)은 다른 단계다. 동률이면 먼저 시작한 쪽, 안 겹치면 비운다
조립 앞에 게이트열린 run 이 0개일 때만 발행한다. 없으면 뒷부분이 통째로 빠진 오디오가 에러 없이 화자 분리까지 간다
끊긴 회의도 결과를 낸다종료 버튼이 유일한 트리거면 안 된다. 태스크 교체는 배포할 때마다 일어난다 — 그러면 「배포 중에 회의하던 사람은 회의록을 못 받는다」가 정상 동작이 되어 버린다
분리 제출에 워치독webhook 이 안 오면 화자 분리 중 이 영영 남는다
세그먼트 불변한 번 쓰면 지우고 다시 만들지 않는다. 파생은 따로 둔다
webhook 은 api 가 받는다제출도 api 가 한다. 조립 함수는 벤더를 모른다
목표 시간을 두지 않는다배치로 돌려 보고 느리면 그때 개선한다

5. 종료 후에 어긋나는 것들

예외처리
화자 분리 실패매핑을 건너뛰고 바로 요약으로. 화면에 배너를 띄우고 화자 없이 진행
사용자가 영영 안 들어옴미정 — 자동 생성할지 계속 기다릴지
잡이 두 번 죽음미정 — 갈 곳이 없다. 워치독이 1회 재디스패치하고 끝이다
분석 실패워치독이 1분마다 스캔해 10분 넘은 것을 1회 재디스패치
늦은 화자 결과가 사용자 수정을 덮음미정

⚠️ 지연 알람에서 화자 확인 대기 를 빼야 한다. 나머지는 시스템이 진행 중인 것이고 이것만 사람을 기다린다. 안 빼면 사용자가 안 들어온 회의가 전부 장애로 잡힌다.