[{"data":1,"prerenderedAt":636},["ShallowReactive",2],{"navigation":3,"doc-/modules/realtime":217,"docs-all-paths":581},[4,19,39,63,87,111,127,195,211],{"title":5,"path":6,"stem":7,"children":8},"Welcome","/welcome","01.welcome",[9,11,15],{"title":5,"path":6,"stem":10},"01.welcome/index",{"title":12,"path":13,"stem":14},"Astar とは（5分）","/welcome/product-in-5-min","01.welcome/01.product-in-5-min",{"title":16,"path":17,"stem":18},"事業文脈","/welcome/business-context","01.welcome/02.business-context",{"title":20,"path":21,"stem":22,"children":23},"Getting Started","/getting-started","02.getting-started",[24,27,31,35],{"title":25,"path":21,"stem":26},"はじめかた","02.getting-started/index",{"title":28,"path":29,"stem":30},"リポジトリ取得と環境構築","/getting-started/repo-setup","02.getting-started/01.repo-setup",{"title":32,"path":33,"stem":34},"日々の開発ループ","/getting-started/dev-loop","02.getting-started/02.dev-loop",{"title":36,"path":37,"stem":38},"検証の 4 層","/getting-started/verification-tiers","02.getting-started/03.verification-tiers",{"title":40,"path":41,"stem":42,"children":43},"Architecture","/architecture","03.architecture",[44,47,51,55,59],{"title":45,"path":41,"stem":46},"アーキテクチャ","03.architecture/index",{"title":48,"path":49,"stem":50},"マルチテナンシーと RLS","/architecture/multi-tenancy-rls","03.architecture/01.multi-tenancy-rls",{"title":52,"path":53,"stem":54},"認可モデル","/architecture/authorization","03.architecture/02.authorization",{"title":56,"path":57,"stem":58},"AI サブシステム","/architecture/ai-subsystem","03.architecture/03.ai-subsystem",{"title":60,"path":61,"stem":62},"データモデル","/architecture/data-model","03.architecture/04.data-model",{"title":64,"path":65,"stem":66,"children":67},"Backend","/backend","04.backend",[68,71,75,79,83],{"title":69,"path":65,"stem":70},"バックエンド","04.backend/index",{"title":72,"path":73,"stem":74},"層構造","/backend/layering","04.backend/01.layering",{"title":76,"path":77,"stem":78},"規約","/backend/conventions","04.backend/02.conventions",{"title":80,"path":81,"stem":82},"テスト","/backend/testing","04.backend/03.testing",{"title":84,"path":85,"stem":86},"マイグレーション","/backend/migrations","04.backend/04.migrations",{"title":88,"path":89,"stem":90,"children":91},"Frontend","/frontend","05.frontend",[92,95,99,103,107],{"title":93,"path":89,"stem":94},"フロントエンド","05.frontend/index",{"title":96,"path":97,"stem":98},"モジュール内部構造","/frontend/module-anatomy","05.frontend/01.module-anatomy",{"title":100,"path":101,"stem":102},"API アクセスの一本道","/frontend/api-access-chain","05.frontend/02.api-access-chain",{"title":104,"path":105,"stem":106},"i18n","/frontend/i18n","05.frontend/03.i18n",{"title":108,"path":109,"stem":110},"デザインシステム","/frontend/design-system","05.frontend/04.design-system",{"title":112,"path":113,"stem":114,"children":115},"Go Agent And Cli","/go-agent-and-cli","06.go-agent-and-cli",[116,119,123],{"title":117,"path":113,"stem":118},"Go agent と CLI","06.go-agent-and-cli/index",{"title":120,"path":121,"stem":122},"Go agent","/go-agent-and-cli/go-agent","06.go-agent-and-cli/01.go-agent",{"title":124,"path":125,"stem":126},"CLI","/go-agent-and-cli/cli","06.go-agent-and-cli/02.cli",{"title":128,"path":129,"stem":130,"children":131},"Modules","/modules","07.modules",[132,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191],{"title":133,"path":129,"stem":134},"モジュール","07.modules/index",{"title":136,"path":137,"stem":138},"テーブル","/modules/table","07.modules/01.table",{"title":140,"path":141,"stem":142},"ドキュメントツリー","/modules/document","07.modules/02.document",{"title":144,"path":145,"stem":146},"AIチャット","/modules/ai","07.modules/03.ai",{"title":148,"path":149,"stem":150},"認証・権限","/modules/auth","07.modules/04.auth",{"title":152,"path":153,"stem":154},"AI取込","/modules/organize","07.modules/05.organize",{"title":156,"path":157,"stem":158},"ストレージ","/modules/storage","07.modules/06.storage",{"title":160,"path":161,"stem":162},"NAS同期","/modules/sync","07.modules/07.sync",{"title":164,"path":165,"stem":166},"ワークスペース","/modules/workspace","07.modules/08.workspace",{"title":168,"path":169,"stem":170},"テナントとメンバーシップ","/modules/tenant-membership","07.modules/09.tenant-membership",{"title":172,"path":173,"stem":174},"検索","/modules/search","07.modules/10.search",{"title":176,"path":177,"stem":178},"表示ビュー","/modules/display","07.modules/11.display",{"title":180,"path":181,"stem":182},"テンプレート","/modules/template","07.modules/12.template",{"title":184,"path":185,"stem":186},"メール","/modules/mail","07.modules/13.mail",{"title":188,"path":189,"stem":190},"電話","/modules/phone","07.modules/14.phone",{"title":192,"path":193,"stem":194},"リアルタイム","/modules/realtime","07.modules/15.realtime",{"title":196,"path":197,"stem":198,"children":199},"Infra And Deploy","/infra-and-deploy","08.infra-and-deploy",[200,203,207],{"title":201,"path":197,"stem":202},"インフラとデプロイ","08.infra-and-deploy/index",{"title":204,"path":205,"stem":206},"環境の種類","/infra-and-deploy/environments","08.infra-and-deploy/01.environments",{"title":208,"path":209,"stem":210},"セルフホスト構成","/infra-and-deploy/self-host","08.infra-and-deploy/02.self-host",{"title":212,"path":213,"stem":214,"children":215},"docs-map","/docs-map","09.docs-map/index",[216],{"title":212,"path":213,"stem":214},{"id":218,"title":192,"body":219,"description":575,"extension":576,"meta":577,"navigation":578,"path":193,"seo":579,"stem":194,"__hash__":580},"docs/07.modules/15.realtime.md",{"type":220,"value":221,"toc":566},"minimark",[222,225,229,241,244,334,338,421,425,491,494,541],[223,224,192],"h1",{"id":192},[226,227,228],"h2",{"id":228},"一言でいうと",[230,231,232,236,237,240],"p",{},[233,234,235],"code",{},"realtime"," はデスクトップの音声（打合せ・面談など）をリアルタイムで文字起こしし、AI アシスト（示唆・翻訳・要約）を提供するモジュールです。デスクトップ音声セッションと電話通話は、文字起こし → AI アシストの後段パイプラインを共有しています — 電話側の詳細は ",[238,239,188],"a",{"href":189}," を参照してください。",[226,242,243],{"id":243},"主要ドメイン概念",[245,246,247,260],"table",{},[248,249,250],"thead",{},[251,252,253,257],"tr",{},[254,255,256],"th",{},"概念",[254,258,259],{},"役割",[261,262,263,286,296,310,320],"tbody",{},[251,264,265,271],{},[266,267,268],"td",{},[233,269,270],{},"RealtimeSession",[266,272,273,274,277,278,281,282,285],{},"セッションのaggregate root。",[233,275,276],{},"owner","・",[233,279,280],{},"source","・開始/終了時刻・文字起こしの格納先ドキュメント（",[233,283,284],{},"transcriptNodeId","）を持つ",[251,287,288,293],{},[266,289,290],{},[233,291,292],{},"RealtimeSource",[266,294,295],{},"セッションの音源種別",[251,297,298,303],{},[266,299,300],{},[233,301,302],{},"RealtimeAssistSuggestion",[266,304,305,306,309],{},"AI が生成する応対中の示唆（カテゴリ別: ",[233,307,308],{},"SuggestionCategory","）",[251,311,312,317],{},[266,313,314],{},[233,315,316],{},"SessionSummary",[266,318,319],{},"セッション終了後の要約",[251,321,322,327],{},[266,323,324],{},[233,325,326],{},"BriefingContextPort",[266,328,329,330,333],{},"事前ブリーフィング（",[233,331,332],{},"ai"," の AI チャットセッションの最新回答）を読むための port（DIP境界、下記参照）",[226,335,337],{"id":336},"backend-構造","Backend 構造",[339,340,341,360,376,382,400,411],"ul",{},[342,343,344,347,348,351,352,355,356,359],"li",{},[233,345,346],{},"api/controller/RealtimeSessionController.kt",": ",[233,349,350],{},"POST /api/v1/realtime/sessions","（開始）、",[233,353,354],{},"/{id}/end","（終了）、",[233,357,358],{},"/{id}/translation","（翻訳設定）",[342,361,362,365,366,347,369,365,372,375],{},[233,363,364],{},"api/controller/RealtimeTranscriptEventController.kt"," / ",[233,367,368],{},"RealtimeAssistEventController.kt",[233,370,371],{},"/api/v1/events/realtime-transcripts",[233,373,374],{},"/realtime-assist"," の SSE 購読口",[342,377,378,381],{},[233,379,380],{},"infrastructure/websocket/DesktopAudioStreamWebSocketHandler.kt",": デスクトップから16kHz PCM 音声フレームを受信するWebSocketハンドラ",[342,383,384,387,388,391,392,395,396,399],{},[233,385,386],{},"infrastructure/listener/RealtimeAssistGenerator.kt",": 文字起こし確定イベント（デスクトップ由来の ",[233,389,390],{},"RealtimeTranscriptFinalEvent"," と、電話由来の ",[233,393,394],{},"PhoneTranscriptFinalEvent"," を ",[233,397,398],{},"PhoneFinalEventMapper"," でマッピングしたもの）を受け取り、AI示唆を生成・publish する統一パイプライン",[342,401,402,347,405,407,408,410],{},[233,403,404],{},"infrastructure/adapter/AiChatBriefingContextAdapter.kt",[233,406,326],{}," の実装。",[233,409,332],{}," モジュールのメッセージストアから事前ブリーフィングを読む",[342,412,413,416,417,420],{},[233,414,415],{},"infrastructure/listener/RealtimeTranscriptNodeWriter.kt",": セッション終了時、文字起こしを ",[233,418,419],{},"DocumentNode"," として実体化する",[226,422,424],{"id":423},"frontend-構造","Frontend 構造",[339,426,427,454],{},[342,428,429,347,432,435,436,439,440,443,444,447,448,439,451],{},[233,430,431],{},"composables/",[233,433,434],{},"useDesktopRealtimeSession","（デスクトップ音声セッション開始/終了）、",[233,437,438],{},"useConversationRealtimeSession","、",[233,441,442],{},"useRealtimeTranscriptStream","/",[233,445,446],{},"useRealtimeAssistStream","（SSE購読）、",[233,449,450],{},"useRealtimeTranslationConfig",[233,452,453],{},"useTranscriptWindow",[342,455,456,347,459,439,462,443,465,439,468,443,471,443,474,439,477,443,480,439,483,486,487,490],{},[233,457,458],{},"components/",[233,460,461],{},"RealtimeActiveSessionPanel.vue",[233,463,464],{},"RealtimeTranscriptDisplay.vue",[233,466,467],{},"ConversationCaptionLine.vue",[233,469,470],{},"RealtimeAssistFloatingPanel.vue",[233,472,473],{},"RealtimeAssistSuggestionGrid.vue",[233,475,476],{},"RealtimeAssistSupplementCard.vue",[233,478,479],{},"VoiceCaptureButton.vue",[233,481,482],{},"AudioLevelMeter.vue",[233,484,485],{},"ActiveCallsHeaderButton.vue","（進行中の電話通話をヘッダーに表示する — ",[233,488,489],{},"phone"," 由来のUIがこのモジュールに同居している）",[226,492,493],{"id":493},"他モジュールとの辺",[339,495,496,521,533],{},[342,497,498,347,500,503,504,506,507,509,510,513,514,516,517,520],{},[233,499,489],{},[233,501,502],{},"RealtimeAssistGenerator"," は ",[233,505,394],{}," を購読し、電話通話にも同じ示唆生成パイプラインを適用する。セッションIDの決定的導出は ",[233,508,489],{}," 側の ",[233,511,512],{},"PhoneRealtimeSession"," がSSoTで、",[233,515,235],{}," はその結果を ",[233,518,519],{},"RealtimeSessionId"," でラップするだけ（依存方向: realtime → phone。逆方向の依存を作ると循環になる）",[342,522,523,347,525,527,528,503,530,532],{},[233,524,332],{},[233,526,326],{}," 経由で、AI チャットの事前ブリーフィング（研究フェーズの最初のターン）を示唆生成のグラウンディングに使う。ポートを挟むことで ",[233,529,502],{},[233,531,332],{}," の永続化スタックなしに単体テスト可能",[342,534,535,416,538,540],{},[233,536,537],{},"editor",[233,539,419],{}," として保存する",[542,543,545],"callout",{"type":544},"warning",[230,546,547,548,550,551,553,554,503,556,559,560,562,563,565],{},"SSE のfanoutスコープが ",[233,549,489],{}," と ",[233,552,235],{}," で異なります。デスクトップの ",[233,555,270],{},[233,557,558],{},"ownerUserId"," のみが transcript/assist イベントを受け取ります（テナント全体には配信されない）。一方 ",[233,561,489],{}," は「共有の受信リソース」として扱われ、着信は担当し得る複数スタッフに通知されます。",[233,564,235],{}," のコードを読むときにこの非対称性を前提にしないと、フォンアウトの挙動を読み違えます。",{"title":567,"searchDepth":568,"depth":568,"links":569},"",2,[570,571,572,573,574],{"id":228,"depth":568,"text":228},{"id":243,"depth":568,"text":243},{"id":336,"depth":568,"text":337},{"id":423,"depth":568,"text":424},{"id":493,"depth":568,"text":493},"リアルタイム文字起こしセッション (SSE)。core/realtime ⇄ app/modules/realtime の深掘り。phone / AI アシストとの関係。","md",{},true,{"title":192,"description":575},"WQRy4f1lKuVFdy6FspD71FSIdePYsdSaqxl7R7a6wnU",[582,584,585,587,588,589,590,591,592,593,594,595,597,598,599,600,601,603,604,605,606,607,609,611,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,631,632,633,634],{"path":13,"title":583},"Astar とは何か（5分で）",{"path":17,"title":16},{"path":6,"title":586},"ようこそ",{"path":29,"title":28},{"path":33,"title":32},{"path":37,"title":36},{"path":21,"title":25},{"path":49,"title":48},{"path":53,"title":52},{"path":57,"title":56},{"path":61,"title":60},{"path":41,"title":596},"システムアーキテクチャ",{"path":73,"title":72},{"path":77,"title":76},{"path":81,"title":80},{"path":85,"title":84},{"path":65,"title":602},"バックエンドガイド",{"path":97,"title":96},{"path":101,"title":100},{"path":105,"title":104},{"path":109,"title":108},{"path":89,"title":608},"フロントエンドガイド",{"path":121,"title":610},"Go agent — NAS 同期エージェント",{"path":125,"title":612},"astar CLI",{"path":113,"title":117},{"path":137,"title":136},{"path":141,"title":140},{"path":145,"title":144},{"path":149,"title":148},{"path":153,"title":152},{"path":157,"title":156},{"path":161,"title":160},{"path":165,"title":164},{"path":169,"title":168},{"path":173,"title":172},{"path":177,"title":176},{"path":181,"title":180},{"path":185,"title":184},{"path":189,"title":188},{"path":193,"title":192},{"path":129,"title":630},"モジュール索引",{"path":205,"title":204},{"path":209,"title":208},{"path":197,"title":201},{"path":213,"title":635},"docs/ 地図",1785452455520]