IA · 확장 후 — 정보 구조
갱신일 2026-08-12 · 기준: 확장 개요 · 현재 판 IA · 공통 시나리오 S1~S7 이 문서가 갖는 것: 화자·그래프·외부 클라이언트가 들어온 뒤 사용자가 보는 화면·URL·권한·상태 축. 여기 없는 것: 모듈 배치(AA) · 경계와 프로토콜(SA) · AWS 형상(CA) · 저장소 소유권(DA) · 스키마(ERD) · 그래프 스키마(온톨로지) · 에이전트 게이트(실시간 경로).
⚠︎ 이건 계획이지 현황이 아니다. 지금 서 있는 것은 현재 판 IA가 갖는다. 아래 문구는 초안이고 카피 검수를 거치지 않았다.
1. S1을 화면으로 관통한다
2026-08-12(화), 워크스페이스 민손 팀, 프로젝트 PRO-1 실시간 STT. 김민수가 10:00에 녹음을 시작한다.
10:00 · 회의 면 — /w/{ws}/notes/{noteId}?view=side. 전사 줄은 시각 + 텍스트뿐이다. 회의 중 화자 표시는 D3 때문에 구조적으로 불가능하고, 그걸 화면이 먼저 말한다 — 전사 상단 고정 줄 회의 중에는 누가 말했는지 표시하지 않는다 · 끝나면 붙는다. (버린 대안: 실시간 화자를 임시로 붙이고 나중에 덮어쓰기. 임시와 확정이 화면에서 구분되지 않고, 이미 읽은 이름이 바뀐다.)
10:23:14 · 사이드 패널 카드 (C3 충돌) — 이서연이 "그냥 STT 공급자 ElevenLabs로 다시 가시죠". 카드는 사이드 패널 감지 탭에 쌓이고 배지가 1 이 된다. 소리도 공유 챗봇 메시지도 없다(D12).
⚑ 이전 결정과 충돌할 수 있다
방금 (10:23:14) — "STT 공급자 ElevenLabs 로 다시 가시죠"
2026-07-22 스프린트 회의에서 정한 것
"실시간 STT 는 Soniox 로 간다" · 그 회의 23:14
[근거 보기] [관련 없음] [닫기]
근거 보기 는 2026-07-22 노트의 23:14 줄로 이동한다 — 근거 없는 카드는 띄우지 않는다(온톨로지 §4). 관련 없음 은 오탐 신고다(§13 ④). 안 읽어도 회의가 안 망가진다: 놓친 카드는 종료 후 요약 탭 회의 중 감지 1건 으로 회수된다.
10:45 · 종료 직후 — 종료한 사람에게도 뷰어에게도 같은 화면이 뜬다.
회의가 끝났다 · 정리 중
✓ 녹음 저장 10:45:03
◐ 누가 말했는지 정리 중 약 3분
· 참석자 확인
· 회의 내용 정리
전사는 지금 바로 볼 수 있다 [전사 보기]
네 줄이 파이프라인 ①②③④ 다. ⑤ 그래프 반영은 화면에 없다 — 사용자가 기다릴 이유가 없다(§5).
11:10 · 화자 교정 — ?view=full&tab=transcript&speakers=edit. 라우트가 아니라 전사 탭 안의 모드다. 화자 4명 중 3명이 voice print로 붙고, 미등록인 최유진이 화자 4 로 남는다. 아래 숫자의 단위는 발화이고, 발화는 연속 세그먼트 묶음이다 — 전사 줄(세그먼트) 수와 다르다(§9).
화자 4명 · 3명은 자동으로 이름이 붙었다
김민수 발화 62 · 34% voice print 매칭 [바꾸기]
이서연 · 박준호 각각 51 · 33 발화 voice print 매칭 [바꾸기]
화자 4 발화 46 · 19% 이름 없음 ▶ 샘플 듣기
"그 부분은 제가 이번 주에 정리할게요" (12:04)
[사람 지정] [다른 화자와 합치기] [이름만 붙이기]
사람 지정 → 최유진 을 누르면 확인 줄이 뜬다 — 화자 4 의 발화 46개가 전부 "최유진" 이 된다. 최유진은 voice print 가 없다 — 이 교정은 이 노트에만 남는다. + [등록 요청 보내기]. 남이 대신 등록할 수 없다. 생체정보 등록은 본인 화면에서만 일어난다(§8). 샘플 듣기 는 오디오가 사는 7일 동안만 있고(D15), 8일째에는 녹음은 7일 뒤 지운다 로 바뀐다.
최종 노트 — ?view=full&tab=summary. 요약 · 결정 2건 · 액션 아이템 3건. 달라진 것 셋: 근거 칩에 이름이 붙고(이서연 · 10:23:14), 회의 중 감지 1건 섹션이 생기고, 맥락 배너가 뜬다.
⚑ 확인 필요 — 이 회의의 결정이 이전 결정을 뒤집는 것 같다
이번 "STT 공급자를 ElevenLabs 로 재검토" 오늘 10:23:14
이전 "실시간 STT 는 Soniox 로 간다" 2026-07-22 23:14
[뒤집는다] [아니다] [나중에]
요약 본문에 이름을 문자열로 박지 않는다. 화자 참조로 렌더하면 교정이 늦게 와도 표시가 따라 바뀐다. 버린 대안: 교정 후 요약 재생성 — LLM 비용이 회의마다 두 배가 되고, 이미 읽은 문장이 통째로 바뀐다.
S5 · 14:00 배포 — 회의 화면에 무엇이 보이나. 진행 중 회의 3건 위로 롤링 배포가 지나간다. 김민수 화면에 아무것도 안 보이는 것이 정답이다 — 태스크 교체·deregistration·task scale-in protection은 전부 화면 아래에서 끝난다(CA §13). protection이 안 먹어 연결이 실제로 끊긴 경우에만 재연결 배지가 뜨고, 그 문구와 90초 초과 시의 갭 표기는 §13 ⑤ 가 갖는다. 배포를 성공 토스트로 알리지 않는다 — 사용자가 모르는 게 무중단의 정의다.
2. 계층 — 무엇이 늘고 무엇이 안 바뀌나
| 지금 | 1만 | 10만 | |
|---|---|---|---|
| 계층 | workspace > project > note | 그대로 | organization > workspace > project > note (D16) |
| URL로 뚫린 계층 | workspace · note | + project (조건부) | + organization |
| 노트 안의 축 | 전사 · 요약 · 챗봇 | + 화자 · 감지 카드 | 그대로 |
| 회의를 넘는 축 | 없다 | 결정 · 액션 아이템 | + 사람 · 검색 |
| 권한 | ADMIN · MEMBER | 그대로 | + 조직 관리자 · 게스트 |
project 경로는 사용자 수가 아니라 워크스페이스당 노트 수가 연다 — 1,000건을 넘으면 사이드바 그룹핑은 탐색이 아니라 장식이다.
게스트는 계정이 있고 워크스페이스 하나에만 초대된 외부 사용자다. S2의 이정훈(외부) 는 게스트가 아니라 노트 스코프 이름표이고 계정이 없다(§7). 둘을 한 단어로 안 쓴다 — 화면 문구에서도 갈라 쓴다: 초대받은 사람은 게스트, 이름표는 외부.
| 게스트가 못 하는 것 | 왜 |
|---|---|
| 녹음 시작 | 전사 시간이 워크스페이스 원가다. 조작권 규칙은 §4 그대로 |
| 초대 | 외부 사용자가 외부 사용자를 부르면 경계가 없어진다 |
토큰 발급 (/settings/tokens) | MCP 반출 경로를 밖으로 열지 않는다(§10) |
| 전사 전문 열람 | 초대된 노트의 요약 · 결정 · 액션 아이템까지다. 전문은 워크스페이스 멤버만 |
조직 관리자는 워크스페이스 내용에 접근하지 않는다. 조직 화면은 /o/{orgId}/{members,billing,audit,policy} 넷이 전부이고, 거기서 노트 · 전사 · 요약으로 들어가는 링크가 없다. 결제와 감사를 보는 역할이 남의 회의를 읽는 것은 다른 제품이다. 안 적어두면 「조직 관리자」라는 이름만 보고 전체 열람 권한으로 구현된다.
3. URL — 1만 · 10만
| URL | 화면 | 1만 | 10만 |
|---|---|---|---|
/ · /privacy · /terms · /invite · /auth/callback | 지금과 같다 | 그대로 | 그대로 |
/w/{ws} | 워크스페이스 셸 · 노트 허브 | 그대로 | 그대로 |
/w/{ws}/notes/{noteId} | 노트 상세 | 불변 | 불변 |
/n/{noteId} | 노트 정규 경로로 302 | ✅ | ✅ |
/w/{ws}/p/{pj} | 프로젝트 노트 목록 | 조건부 (노트 1,000건) | ✅ |
/w/{ws}/p/{pj}/actions · /decisions · /w/{ws}/my | 그래프 화면 셋 (§6) | ✅ | ✅ |
/w/{ws}/usage · /settings/tokens | 사용량(§11) · 토큰(§10) | ✅ | ✅ |
/w/{ws}/search | 검색 1급 화면 | — | ✅ |
/o/{orgId}/{members,billing,audit,policy} | 조직 | — | ✅ |
노트 URL 불변 규칙 셋: ① organization이 생겨도 /o/{org}/w/... 로 접두사를 붙이지 않는다 — 공유 링크 · Linear 코멘트 · MCP가 내보낸 참조가 그 위에 서 있다. ② 노트가 다른 워크스페이스로 옮겨져도 안 죽게 /n/{noteId} 가 정규 경로다 (noteId는 13자 TSID로 전역 유일). 밖으로 나가는 링크는 전부 이 형태를 쓴다. ③ 화면 안의 상태(view · tab · speakers)는 쿼리스트링이고 history.replaceState 다 — 현재 판이 잰 _rsc= 왕복(102ms → 10ms)이 그대로 유효하다. 버린 대안: 계층이 늘 때마다 URL을 다시 짜고 301을 깐다 — 리다이렉트 표를 영원히 들고 가야 하고, MCP가 이미 내보낸 참조는 우리 리다이렉트를 안 탄다.
4. 상태가 화면을 가르는 축 다섯
| 축 | 값 | 화면이 어떻게 갈리나 |
|---|---|---|
| 회의 상태 | NOT_STARTED → IN_PROGRESS → ENDED (PAUSED 는 값이 살아 있으나 UI를 안 만든다) | ACTIVE = IN_PROGRESS && meetingStartedBy != null 이 공유 챗봇 쓰기와 녹음 컨트롤을 연다 |
| 조작권 | 최초 녹음 시작자 1인 (+ 이탈 시 ADMIN 대리 종료) | 뷰어에게는 중지·종료 버튼이 없다 |
| 역할 | ADMIN · MEMBER (10만: + 조직 관리자 · 게스트) | 초대 · 연동 · 토큰 발급 범위 |
| 파이프라인 단계 🆕 | ①~⑤ 각각 대기 · 진행 · 완료 · 건너뜀 · 실패 (AA §3) | 노트 헤더 진행 줄 · 요약 탭에 뭐가 있나 · 재시도 버튼 |
| 화자 라벨 확정도 🆕 | 없음 → 자동 → 매칭 → 확정 | 이름 표기 · 외부 반출 가부 |
| 확정도 | 언제 | 화면 표기 | 외부로 나가나 |
|---|---|---|---|
| 없음 | 회의 중 · 분리 실패 | 화자 표시 없음 | — |
| 자동 | pyannote 결과 | 화자 4 회색 | 나간다 (익명) |
| 매칭 | voice print 대조 | 최유진 (추정) — 텍스트가 먼저다. 점선 밑줄 · 툴팁 목소리로 추정 은 보조(§14 ①) | 안 나간다 |
| 확정 | 사람이 지정·확인 | 최유진 | 나간다 |
미확정 이름은 MCP · Linear · GitHub로 내보내지 않는다. 틀린 이름이 외부 도구에 박히면 회수할 수 없다.
5. 회의가 끝난 뒤 — 대기가 화면에 산다
지금은 상태가 둘이다. 분석 결과 없음 → 있음. 이제 네 줄이 순서대로 켜진다.
| 단계 | 화면 문구 | 끝나면 쓸 수 있는 것 | 실패하면 |
|---|---|---|---|
| ① 오디오 확정 | 녹음 저장 | — | 화자 없이 ④ 로 |
| ② 화자 분리 | 누가 말했는지 정리 중 | 전사에 화자 N | 건너뛴다 → §13 ① |
| ③ 화자 매칭 | 참석자 확인 | 이름 · 교정 화면 | 이름 없이 진행. 사용자가 교정 |
| ④ 요약 | 회의 내용 정리 중 | 요약 · 결정 · 액션 아이템 | §13 ② |
| ⑤ 그래프 반영 | 표시하지 않는다 | 맥락 배너 · 보드 | 조용히 재시도. 배너만 늦게 뜬다 |
전사는 0초부터 있다. 대기 화면이 전사 보기를 항상 같이 준다 — 전부 끝나야 뭐라도 보이는 구조로 만들지 않는다. 그리고 재시도 중에는 실패라고 말하지 않는다: S4처럼 Spot이 끊겨 ②단계만 다시 도는 경우 화면은 약 3분 을 약 6분 으로 늘릴 뿐이고, 시도 2회를 넘기거나 15분이 지나야 실패 문구로 바뀐다. 버린 대안: 진행률 퍼센트 바 — 단계 소요가 회의 길이와 GPU 대기열에 따라 몇 배로 흔들려 퍼센트가 거짓말이 된다. 단계 이름과 대략 시간이 정직하다.
6. 그래프가 만드는 새 화면 — 회의를 넘는 층
지금 모든 화면은 노트 하나 안에서 끝난다. 그래프가 처음으로 회의를 넘는 화면을 만든다.
| 화면 | 경로 | 화면 문구 |
|---|---|---|
| 액션 아이템 보드 | /w/{ws}/p/{pj}/actions | 열 담당 없음 · 진행 · 기한 지남 · 완료. 카드 밑줄 2026-08-12 스프린트 회의 · 31:07 |
| 내게 밀린 것 | /w/{ws}/my | 기한이 지난 것 2건 · 빈 상태 밀린 게 없다 |
| 결정 이력 | /w/{ws}/p/{pj}/decisions | 역순 타임라인. 뒤집힌 항목은 취소선 + 2026-08-19 회의가 뒤집었다 |
| 맥락 배너 | 노트 요약 탭 안 | §1의 ⚑ 확인 필요 — … |
규칙 넷.
| 규칙 | 왜 |
|---|---|
| 그래프를 그래프로 보여주지 않는다 | 노드-엣지 그림은 데모에서만 예쁘다. 사용자가 찾는 것은 목록이다 |
| 모든 항목이 회의로 되돌아간다 | 근거 칩 없는 항목은 화면에 안 올린다 |
| 추론과 사실을 구분한다 | AI 가 찾음 은 흐리게 + 맞다 / 아니다. 텍스트로도 적는다(§14 ①) |
| 미확인 관계는 이력에 안 넣는다 | 확인 전 SUPERSEDES는 배너로만 뜨고 타임라인 취소선을 만들지 않는다 — 온톨로지 §5 |
버린 대안: 워크스페이스 전역 대시보드를 홈으로 — 프로젝트를 안 고른 액션 아이템 보드는 남의 할 일이 대부분이고, 그러면 아무도 안 본다.
7. 화자 교정 — 동작 넷과 게스트 라벨
화자 분리는 틀린다. 겹쳐 말하면 섞이고, 목소리가 비슷하면 합쳐지고, 중간에 들어온 사람은 새 화자가 된다. 교정은 부가 기능이 아니라 파이프라인의 일부다.
| 동작 | 버튼 | 무엇이 바뀌나 | 확정도 | voice print |
|---|---|---|---|---|
| 화자에 사람 지정 | 사람 지정 | 그 화자의 모든 발화가 한 번에 바뀐다 | 확정 | 본인이 등록·동의했으면 개선 입력 |
| 화자 둘 합치기 | 다른 화자와 합치기 | 두 화자가 하나가 되고 목록에서 하나 사라진다 | 병합 후 상위 값 | 같음 |
| 한 발화만 옮기기 | 발화 줄 → 이 발화만 | 그 세그먼트 하나 | 그 줄만 확정 | 쓰지 않는다 — 겹친 구간은 오염원이다 |
| 이름만 붙이기 | 이름만 붙이기 | 노트 안에서만 쓰는 이름표 | 확정 (계정 없음) | 만들지 않는다 |
교정이 요약보다 먼저 오는 게 원칙이지만 늦게 와도 요약은 다시 만들지 않는다(§1). 그래프에 투영된 담당자는 재투영으로 갱신된다. S2 게스트 라벨 — 고객사 2명이 화자 5 · 화자 6 이 된다. 김민수가 이름만 붙이기 를 누르면:
이름만 붙이기
이 이름은 이 노트 안에서만 쓴다.
· 목소리를 저장하지 않는다 — 다음 회의에서 자동으로 알아보지 않는다
· 계정과 연결하지 않는다 — 액션 아이템 담당자로 지정할 수 없다
이름 [ 이정훈(외부) ] [저장]
전사 줄에 이정훈(외부) 와 외부 뱃지가 붙는다. voice print를 만들지 않는다는 사실이 화면에 두 줄로 적혀 있다 — 이게 이 화면의 존재 이유다. 다음 회의에서 같은 사람이 와도 다시 화자 N 이고 다시 이름을 붙여야 한다. 그 불편이 옵트인의 대가다. 그래프에 Person 노드가 생기지 않으므로(키가 userId 다) 게스트에게는 담당 지정 버튼부터 비활성이고 툴팁이 계정이 있는 참석자만 담당자가 된다 를 말한다. 403은 최후 방어선이지 UX가 아니다.
8. voice print — 생체정보 화면
목소리는 생체정보다. 이름이나 이메일과 같은 취급을 하면 안 된다. 이 한 줄이 아래 화면 전부의 이유다.
화면 셋.
| 화면 | 어디 | 무엇이 있나 |
|---|---|---|
| 등록 동의 | 계정 설정 → 목소리 | 무엇을 저장하나 · 어디에 쓰나 · 보관 기간 · 거부해도 제품을 쓸 수 있다 |
| 등록 · 내 목소리 | 같은 곳 | 짧은 문장 읽기 또는 지난 노트에서 내 발화 구간 지정 · 등록일 · 갱신 · 삭제 |
| 조직 정책 | /o/{org}/policy (10만) | 조직 관리자가 기능 자체를 끈다 — 토글 다섯 |
조직 정책 화면의 토글 다섯. 켜고 끄는 주체는 조직 관리자 하나다. 축과 평가 시점은 AA 가 갖고, 여기는 꺼진 화면이 어떻게 생겼나만 정한다.
| 토글 | 끄면 화면에서 |
|---|---|
voice_print_matching | 등록 진입점이 사라지고 화자는 전부 화자 N 으로 남는다. 교정(§7)은 그대로 된다 |
realtime_agent | 사이드 패널 감지 탭이 없다. 요약의 회의 중 감지 절도 없다 |
graph_projection | 맥락 배너와 보드 셋(§6)이 없다. /w/{ws}/p/{pj}/actions 는 404가 아니라 진입점부터 없앤다 |
mcp_edge | /settings/tokens 이 없다. 이미 발급된 토큰은 401 이고 목록은 조직 감사 화면에만 남는다 |
summary_pii_names | 요약 · 결정의 이름 자리가 화자 N 으로 렌더된다(§1의 화자 참조가 이걸 공짜로 만든다) |
끄면 지난 결과는 남는다. 끄기는 앞으로를 막는 스위치이지 지우개가 아니다 — 이미 붙은 화자 라벨, 이미 뜬 배너, 이미 나간 요약은 그대로다. 지우려면 삭제 화면(§9)으로 간다. 끄기 확인 줄이 이 문장을 그대로 말한다: 앞으로 만들지 않는다. 이미 만들어진 것은 지우지 않는다.
| # | 옵트인 규칙 | 화면에서 |
|---|---|---|
| 1 | 옵트인. 기본값 꺼짐 | 등록 안 한 사람은 화자 N 으로 남고 제품은 그대로 돈다 |
| 2 | 거부가 1급 경로다 | 거부한 사람 목소리로는 매칭을 시도하지 않는다. 재권유 배너를 반복해 띄우지 않는다 |
| 3 | 삭제가 즉시다 | 임베딩은 지우고 과거 라벨은 남는다 — 아래 화면이 이 구분을 말한다 |
| 4 | 매칭 범위는 organization 안 | 등록 화면에 대조 범위: 민손 팀 조직 안. 조직을 넘으면 다른 제품이다 |
S7 삭제 화면 — 최유진이 계정 설정에서 삭제를 누른다.
목소리 등록을 지운다
지워지는 것
· 내 목소리 임베딩 1건 (2026-06-14 등록)
남는 것
· 이미 정리된 회의 12건의 "최유진" 화자 라벨
이름표는 회의 기록이지 목소리가 아니다. 지우려면 각 노트에서 라벨을 바꾼다
앞으로 · 다음 회의부터 자동으로 알아보지 않는다. "화자 N" 으로 남는다
[지운다] [취소]
등록에는 동의 화면을 두고 삭제에는 확인 한 번만 둔다. 버린 대안: 삭제에 비밀번호·이메일 재확인. 생체정보 삭제를 어렵게 만드는 방향은 틀렸다.
9. S6 — 노트 삭제가 무엇을 지우나
저장소가 다섯이면 "지웠다"의 의미가 흐려진다. 삭제 사슬은 DA 가 갖고, 이 문서는 화면에 뭐라고 쓰나만 정한다.
"2026-08-12 스프린트 회의" 를 지운다
지워지는 것
· 전사 412줄 · 요약 · 결정 2건 · 액션 아이템 3건 · 공유 챗봇 기록
· 녹음 파일 45분
· 이 노트의 검색 임베딩
· 이 회의가 만든 결정·액션 아이템의 연결 이력
남는 것
· 참석자 4명의 목소리 등록 — 목소리는 사람의 것이지 이 회의의 것이 아니다
· 연결된 Linear 이슈 1건 — 우리가 지우지 않는다
⚠ 이 회의의 결정 1건을 2026-08-19 회의가 뒤집었다고 표시돼 있다. 지우면 그 이력이 끊긴다.
되돌릴 수 없다. [지운다] [취소]
전사 412줄 의 「줄」은 전사 세그먼트다. §1의 발화 수(62·51·33·46)와 자릿수가 다른 이유는 발화가 연속 세그먼트 묶음이기 때문이고, 45분 회의의 세그먼트 400 내외는 아직 추정이다(ERD §14).
화면 줄과 저장소의 대응은 DA §1 표를 그대로 따른다.
| 화면 줄 | DA §1 저장소 |
|---|---|
| 전사 · 요약 · 결정 · 액션 · 챗봇 | Postgres heymoa |
| 녹음 파일 45분 | S3 오디오 |
| 이 노트의 검색 임베딩 | 벡터 (1만 구간까지는 heymoa_ai 안 pgvector) |
| 연결 이력 | Neo4j |
| — 화면에 안 올린다 | heymoa_ai 재분석 캐시 · 체크포인트. 사용자가 잃는 것이 없다 |
| 남는 것 · 목소리 등록 | heymoa 안의 별도 스키마(DA §3). 여섯 번째 저장소가 아니다 |
저장소 이름은 화면에 쓰지 않는다. 사용자는 Neo4j를 모른다. 대신 사용자가 잃는 것이 있는 저장소를 각각 한 줄씩 말한다 — 줄 수가 줄면 뭔가 안 지워진 것이다. 버린 대안: 30일 휴지통. 다섯 저장소에 걸친 반쯤 지워진 상태를 30일 유지해야 하고, 그동안 "지웠다"가 그래프·검색에서 무슨 뜻인지 설명할 수 없다.
10. S3 — MCP·CLI 토큰 화면
박준호가 IDE에서 TranscriptionStompConfig.kt 를 보다 "왜 SimpleBroker 지?" 를 묻는다. 그 조회가 성립하려면 먼저 토큰 화면이 있어야 한다. /settings/tokens — CLI가 heymoa login 에서 이 주소를 출력한다. (버린 대안: 설정 다이얼로그 전용. CLI가 가리킬 주소가 없다.)
새 토큰
이름 [ 준호 노트북 IDE ]
워크스페이스 [ 민손 팀 ▾ ] 하나만 고른다. 여러 곳이면 토큰을 따로 만든다
권한 (•) 읽기 전용 — 회의 · 결정 · 액션 아이템 조회 기본값
( ) 노트 쓰기 — 액션 아이템 상태 변경
( ) 도구 실행 — Linear · GitHub 에 쓴다 ⚠ 승인할 사람이 없다
읽기 범위 [x] 요약 · 결정 · 액션 아이템 [ ] 전사 전문 (기본 꺼짐)
만료 (•) 90일 ( ) 30일 ( ) 1년 무기한 없음
호출 상한 분당 60 · 하루 5,000 (고정)
[만들기]
발급 직후 한 번만 값을 보여준다 — 다시 볼 수 없다. 잃어버리면 새로 만든다. 목록은 이름 · 범위 · 만료 · 마지막 사용 · 폐기, 감사 줄은 2026-08-12 14:02 · 준호 노트북 IDE · search_decisions · 3건.
도구 실행은 별도 선택지이고 경고가 붙는다. 공유 챗봇의 쓰기 도구는 사람이 승인 버튼을 누르는데, MCP 요청에는 누를 사람이 없어서 그 경계를 토큰 범위가 대신 진다. 전사 전문은 기본 꺼짐이다 — 켜면 회의 전체가 IDE로 나가고, 결정 근거 인용 세 줄로 대개 끝난다.
11. 사용량 — 원가가 제품 결정이 된다
| 무엇 | 어디 | 문구 |
|---|---|---|
| 이번 달 전사 시간 | /w/{ws}/usage | 4시간 12분 / 20시간 |
| 화자 분리 처리 · 재분석 | 같은 곳 · 노트의 재분석 버튼 옆 | 회의 12건 정리함(GPU는 별도 원가) · 이번 달 3 / 10 |
| 회의 전 사전 경고 | 녹음 시작 버튼 위 | 남은 전사 시간 38분 · 45분 회의라면 중간에 끊긴다 |
| 청구 (10만) | /o/{org}/billing | 워크스페이스별 내역 |
한도는 실패가 아니라 상태다. 막히는 순간에 처음 알리면 회의가 이미 시작돼 있다. 그래서 경고가 녹음 시작 전에 있다.
12. 기능이 켜지는 날
배포일에 제품은 두 개다 — 기능이 붙은 노트와 기능 이전에 녹음된 노트. 화면이 이 둘을 구분하지 않으면 사용자는 옛 노트를 고장으로 읽는다.
| # | 언제 | 화면 |
|---|---|---|
| ① | 화자 기능 도입 전에 녹음된 노트 | 배지 이 회의는 화자 정보가 없다 — 기능 도입 전 녹음. [다시 시도] 를 안 보여준다 — 오디오가 없어 영영 불가다(D15). 눌러서 실패하는 버튼은 없는 것보다 나쁘다 |
| ② | Neo4j 초기 투영이 아직 안 닿은 노트 | 맥락 배너 자리를 비운다. 아직 준비 중 같은 빈 상태 문구를 쓰지 않는다 — 「연결이 없다」와 「아직 안 봤다」를 화면에서 구분할 수 없고, 구분 못 할 바에는 말을 안 하는 편이 낫다 |
| ③ | voice print를 아무도 등록 안 한 워크스페이스 | 권유는 딱 두 곳 · 각 1회 — 첫 화자 교정 화면의 [내 목소리 등록], §8 등록 화면. §8 규칙 2(재권유 금지)가 여기에도 걸린다. 아무도 안 들어오면 ③단계는 계속 건너뛴다 |
| ④ | organization 1:1 백필(V25)이 도는 날 | 화면 변화 없음. 조직 화면 넷은 10만 구간에 열리고, 그전까지 테이블만 있고 URL이 없다(§3) |
갈림은 하나다 — 사용자가 지금 뭔가 할 수 있으면 말하고, 없으면 침묵한다. ①은 이유를 말해야 재시도를 기다리지 않고, ②는 말하면 없는 것을 있는 것처럼 기다린다.
13. 실패 화면 다섯
정상 경로만 있는 설계는 절반이다. 지금 화면에는 실패 상태가 아예 없다 — 워치독이 못 살리면 사용자는 영원히 기다린다.
| # | 상황 | 화면 문구 | 할 수 있는 것 | 남는 것 |
|---|---|---|---|---|
| ① | 화자 분리 실패 | 누가 말했는지는 정리하지 못했다 · 요약은 나왔다 | [다시 시도] — 오디오가 사는 7일 안에만 | 전사 · 요약 · 결정. 화자만 없다 |
| ② | 요약 실패 | 회의 내용을 정리하지 못했다 | [다시 시도] — 자동 재시도 1회 뒤 사람 손으로 | 전사 · 화자. 재시도가 원가라 무한재시도를 안 한다 |
| ③ | 한도 초과 | 이번 달 전사 시간을 다 썼다 (20시간) · 녹음을 시작할 수 없다 + [관리자에게 요청] | 요청 · 다음 달 대기 | 지난 회의는 전부 그대로 열린다 |
| ④ | 에이전트 오탐 | [관련 없음] → 다시 올리지 않는다 | 한 번 누름 | 이 회의에서 그 결정으로 다시 안 뜬다 · 워크스페이스 90일. 요약 회수에도 안 들어간다 |
| ⑤ | 연결 끊김 (배포 · Spot 회수 · 네트워크) | 연결이 끊겼다 · 다시 잇는 중 12초 → 복구되면 이어졌다. 90초를 넘기면 10:31:02~10:31:20 구간은 녹음되지 않았다 + 전사에 회색 갭 블록 | [그 구간 메모 남기기] | 앞뒤 전사 · 요약 전부. 갭 구간만 없다 |
카드 기각은 (창, 결정) 쌍의 억제이지 그래프 SUPERSEDES 부정이 아니다(실시간 §6) — 억제 범위는 워크스페이스 90일이고, 「이 결정이 틀렸다」는 뜻이 아니다. 그래도 사용자에게 하는 약속은 그대로다: 한 번 틀린 카드를 또 띄우면 기능이 죽는다.
⑤ 는 끊긴 것을 숨기지 않는 게 전부다. 갭 블록이 없으면 사용자는 그 구간에 아무도 말을 안 한 줄 안다. 초 단위 재개 규약은 실시간 §7.6, 배포 쪽 원인은 CA §13 이 갖고 문구는 이 표가 정본이다. 배포가 정상이면 ⑤ 자체가 안 뜬다(§1 S5).
①② 는 노트 헤더에 배지로도 남는다. 사용자가 대기 화면을 떠난 뒤 실패했을 수 있고, 도착 경로는 현재 판 미확인 ②(3초 폴링)와 같은 문제를 공유한다.
14. 접근성
실시간 전사 도구는 청각 장애 사용자가 1차 사용자다. 지금 설계가 정면으로 걸린다 — §4 확정도가 색·점선으로만 갈리고, 감지 카드는 소리 없이 쌓이고, 전사 수백 줄에 키보드 경로가 없다.
| # | 규칙 | 화면에서 |
|---|---|---|
| ① | 확정도를 색·점선 단독으로 표현하지 않는다 | §4 매칭 표기는 최유진 (추정) 텍스트 병기. 점선 밑줄과 회색은 보조 신호다. §6의 AI 가 찾음 도 같다 |
| ② | 배지만 읽는다 | 감지 배지에 aria-live="polite" · 감지 1건 만 읽고 포커스를 안 뺏는다. 패널 진입은 Alt+D. 카드 본문을 라이브 리전에 넣으면 읽고 있던 전사를 덮고 D12(놓쳐도 손해 없게)가 깨진다 |
| ③ | 전사가 키보드로 걸어진다 | role="log" + 가상 스크롤 · j/k 로 줄 이동 · Enter 로 그 시각 재생 · 자동 스크롤 정지 토글. 새 줄이 계속 밀어 올리는 화면은 스크린리더에서 읽을 수 없다 |
| ④ | 대기는 상태로 말한다 | §5 네 줄에 aria-busy + 단계 텍스트. 퍼센트 바를 안 쓴 §5 결정이 여기서 회수된다 — 읽을 수 있는 것은 숫자가 아니라 단계 이름이다 |
가상 스크롤과 role="log" 는 같이 쓰기 까다롭다 — 화면 밖으로 내려간 줄을 DOM에서 떼면 스크린리더 버퍼에서도 사라진다. 최근 200줄은 떼지 않는 것이 지금 안이고, 실측을 안 했다(§16).
15. 설계 전제
- 노트 URL은 불변이다. 계층이 늘어도 건드리지 않고, 밖으로 나가는 링크는
/n/{noteId}를 쓴다. - 부분 결과를 먼저 준다. 단계마다 쓸 수 있는 것을 내놓는다. 전사는 0초부터 있다. 지연을 숨기지 않는다 — 인프라가 만든 대기는 화면이 이름으로 설명한다. 조용한 대기는 고장으로 읽힌다.
- 틀릴 수 있는 것은 틀린 표시를 갖는다. 매칭된 이름은
(추정)텍스트 + 점선, AI가 찾은 관계는 흐리게, 확인 전에는 이력에 넣지 않는다. 표시는 텍스트가 먼저다 — 색·장식 단독으로 뜻을 지지 않는다(§14). 미확정 정보는 외부로 안 나간다. - 생체정보는 옵트인이고 거부가 1급 경로다. 등록은 본인만, 삭제는 확인 한 번으로. 조직 관리자는 기능을 끌 수는 있어도 워크스페이스 내용을 보지 않는다(§2 · §8).
- 삭제 화면이 저장소를 각각 말한다. 사용자가 잃는 것이 있는 저장소는 한 줄씩 나오고(DA §1), 줄 수가 줄면 뭔가 안 지워진 것이다.
- 없는 것과 아직 없는 것을 구분해 말한다. 사용자가 지금 뭔가 할 수 있으면 이유를 말하고, 없으면 침묵한다(§12). 끊긴 구간은 숨기지 않는다(§13 ⑤).
- 자동화 클라이언트는 범위가 좁은 토큰으로만 들어온다. 읽기 전용 · 전사 전문 꺼짐 · 만료 있음이 기본값이다. 일상 탐색은 워크스페이스 셸 안에서 끝난다 — organization을 얹어도 매일 보는 화면 수는 늘지 않는다.
16. 미확인
| 무엇 | 지금 아는 것 | 확인해야 할 것 |
|---|---|---|
| 스크린리더 실측 | 규칙 넷을 정했다(§14) | 아직 한 번도 안 돌려봤다. NVDA · VoiceOver에서 role="log" + 가상 스크롤이 실제로 읽히나. 안 읽히면 §14 ③ 을 다시 짠다 |
| 화자 분리 정확도 | 없다 | 나쁘면 §7 교정이 부가 화면이 아니라 주 화면이 된다 |
| 단계별 실소요 | 없다. §1의 약 3분 은 자리만 잡아둔 값이다 | 실측으로 바꾼다. ②가 10분을 넘으면 IA가 아니라 파이프라인을 다시 짠다 |
| voice print 매칭 임계값 | 없다 | 틀린 이름 vs 이름 없음의 교환비. §4 매칭 표기를 몇 %부터 붙이나 |
| 생체정보 법적 요건 | 목소리가 생체정보라는 것까지 | 동의 문구 · 보관 기간 · 국외 이전이 법무 검토 대상 |
| project 경로 시점 | 이 문서는 조건부(노트 1,000건), 확장 개요 §7 20번은 10만 구간 | 워크스페이스당 노트 수 분포를 재야 갈린다 |
| 삭제된 노트의 그래프 이력 | §9가 경고만 띄운다 | 끊긴 SUPERSEDES의 흔적을 남길지 통째로 지울지 |
| MCP 반출 범위 | 전사 전문 기본 꺼짐까지 정했다 | 켰을 때 무엇을 가리나 (게스트 이름 · 미확정 라벨) |
| 시각 표기 기준 | 화면 문구가 전부 절대 시각이다(§1 10:23:14 · §9 2026-08-12) | 워크스페이스 타임존 고정인지 뷰어 로컬인지. 게스트(§2)와 MCP 반출(§10)에서 갈린다. 회의 시각과 감사 로그 occurred_at 의 기준이 같아야 하나 |