본문으로 건너뛰기

Information Architecture — HeyMoa

⚠︎ 지난 판 — 2026-08-03. 현재 판은 여기다. 이 문서는 그때의 기록이고 고치지 않는다.

이 판은 사이트 버저닝을 보이려고 채운 자리다. 그날 실제로 쓰인 문서가 아니고, 앞뒤 판에서 끌어와 재구성했다. 지우거나 진짜 기록으로 갈아끼워도 된다.

갱신일 2026-08-03 · 기준: heymoa-web 워킹트리 + interfaces/ 이 문서가 갖는 것: 사용자가 보는 정보 구조 — 화면 트리, URL, 정보 계층, 권한, 상태가 화면을 가르는 축. 여기 없는 것: 모듈 배치(application-architecture) · 런타임 경계(system-architecture).

확인한 사실

계층은 셋, URL은 둘

계층무엇URL
workspace초대·멤버·도구 연동·권한의 경계/w/{workspaceId}
project노트를 묶는 단위없음 — 사이드바와 노트 패널의 그룹핑 축으로만 쓴다
note회의 1건. 전사·요약·챗봇이 여기 붙는다/w/{workspaceId}/notes/{noteId}

라우트 전부는 위 둘에 랜딩 /, 정적 /privacy·/terms, OAuth 복귀 /auth/callback을 더한 것이다.

챗봇 2종은 탐색 위치가 다르다

개인 챗봇공유 챗봇
어디서 열리나워크스페이스 셸의 오버레이노트 화면의 패널
소속사용자 글로벌 1개노트 1건당 1개, 영구 세션
보는 사람본인만노트를 열 수 있는 전 멤버
쓰기항상회의가 ACTIVE일 때만. 이후는 읽기 전용 아카이브
동시성한 번에 한 명 (서버가 입력 잠금을 소유, 대기 큐 없음)

여는 위치가 곧 스코프다. 2026-07-26 판이 "계약은 chatKind를 보내기로 했는데 server가 안 보낸다(APP-172)"를 미확인으로 등재했었다. 이 판에서 정합이 끝났다 — server가 chatKind를 실어 보내고, ai는 (chatKind, scope) 조합으로 agent profile 3종을 고른다.

상태가 화면을 가른다

화면에서 무엇이 달라지나
회의 상태IN_PROGRESSENDEDACTIVE 판정(IN_PROGRESS && meetingStartedBy != null)이 공유 챗봇 쓰기와 녹음 컨트롤을 연다
조작권시작자 1인나머지 멤버는 뷰어다. 중지·종료 버튼이 없다
역할ADMIN · MEMBER초대·도구 연동은 ADMIN만
분석 결과없음 → 있음회의 종료 뒤 요약이 노트에 붙는다. web은 폴링으로 도착을 안다

PAUSED는 이 판에서 폐기됐다. 회의는 진행 중이거나 끝났거나 둘 중 하나다.

설계 전제

  • project를 URL에 올리지 않았다. 노트는 워크스페이스 안에서 유일하게 식별된다. project별 화면이 생기면 그때 경로를 판다.
  • 개인 챗봇은 화면이 아니라 오버레이다. 어느 노트를 보고 있든 따라다녀야 해서 라우트로 만들지 않았다.
  • 공유 챗봇은 회의 기록의 일부다. "새 대화"가 없고 노트와 수명을 같이 한다.
  • 전사와 챗봇 메시지는 서버 타임스탬프 하나로 정렬한다. 아카이브 타임라인이 시간으로 조인된다.

미확인

무엇지금 아는 것
AI 산출물 ↔ 원문 근거 연결제품 원칙이자 차별화의 본체인데 화면에 없다. 설계(APP-391) 진행 중
알림의 도착 방식push 채널이 없고 GET /v1/notifications 폴링만 확인했다
분석 완료를 web이 아는 경로설계 스펙은 STOMP push, 실제 구현은 refetchInterval 폴링이다