[{"data":1,"prerenderedAt":680},["ShallowReactive",2],{"navigation":3,"doc-/modules/document":217,"docs-all-paths":625},[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":140,"body":219,"description":619,"extension":620,"meta":621,"navigation":622,"path":141,"seo":623,"stem":142,"__hash__":624},"docs/07.modules/02.document.md",{"type":220,"value":221,"toc":610},"minimark",[222,225,229,238,241,313,317,327,432,436,456,525,528,593],[223,224,140],"h1",{"id":140},[226,227,228],"h2",{"id":228},"一言でいうと",[230,231,232,233,237],"p",{},"Astar の「フォルダとファイル」を表すモジュール。backend のパッケージ名は ",[234,235,236],"code",{},"editor"," だが、実体は階層型ドキュメントツリー（フォルダ・Office 文書・録音・埋め込みシートなど）の管理と、ブラウザ内での直接編集を担う。ストレージモード（NETWORK_DRIVE/LOCAL）のワークスペースでは、事務所の NAS が Single Source of Truth（正）で、DB はそのインデックスという位置付けになる。",[226,239,240],{"id":240},"主要ドメイン概念",[242,243,244,257],"table",{},[245,246,247],"thead",{},[248,249,250,254],"tr",{},[251,252,253],"th",{},"概念",[251,255,256],{},"役割",[258,259,260,275,285,295,305],"tbody",{},[248,261,262,268],{},[263,264,265],"td",{},[234,266,267],{},"DocumentNode",[263,269,270,271,274],{},"ツリー上の1ノード（フォルダ or ファイル）。",[234,272,273],{},"DocumentNodeType"," で種別を持つ",[248,276,277,282],{},[263,278,279],{},[234,280,281],{},"DocumentAggregate",[263,283,284],{},"ノード + 内容 + メタデータをまとめた集約",[248,286,287,292],{},[263,288,289],{},[234,290,291],{},"DocumentRevision",[263,293,294],{},"文書の版。変更履歴・差分表示に使う",[248,296,297,302],{},[263,298,299],{},[234,300,301],{},"ContentStorageMode",[263,303,304],{},"内容の実体をどこに置くか（DB内 / NAS / クラウドオブジェクトストレージ）",[248,306,307,310],{},[263,308,309],{},"WOPI (Collabora)",[263,311,312],{},"Word/Excel/PowerPoint をブラウザ内でネイティブ編集するプロトコル連携",[226,314,316],{"id":315},"backend-構造","Backend 構造",[230,318,319,322,323,326],{},[234,320,321],{},"core/editor/"," は3層構造。NAS 連携・変換・変更履歴・トランスクリプションなど多くの責務を抱えるため ",[234,324,325],{},"domain/service/"," が大きい。",[328,329,330,379,392,402],"ul",{},[331,332,333,336,337,340,341,344,345,348,349,352,353,356,357,344,360,363,364,367,368,371,372,375,376],"li",{},[234,334,335],{},"api/controller/",": ",[234,338,339],{},"DocumentNodeController","（ノード CRUD）、",[234,342,343],{},"EditorDocumentController"," / ",[234,346,347],{},"EditorFolderController","（文書・フォルダ操作）、",[234,350,351],{},"ChangelogController","（変更履歴）、",[234,354,355],{},"ConversionJobController","（フォーマット変換ジョブ）、",[234,358,359],{},"TranscriptionJobController",[234,361,362],{},"TranscriptionJobEventController","（録音の文字起こし）、",[234,365,366],{},"EditorNodeEmbedController","（埋め込み表示）、",[234,369,370],{},"EditorPublicController","（公開リンク経由アクセス）、",[234,373,374],{},"UnifiedNodeReadController","（護テーブル等を含めた統一ノード読み取り）、",[234,377,378],{},"SandboxRenderController",[331,380,381,336,384,387,388,391],{},[234,382,383],{},"domain/service/StorageAwareDocumentService",[234,385,386],{},"DocumentService"," を包む、ストレージモードを意識したラッパー。NETWORK_DRIVE/LOCAL ワークスペースでは更新・削除は先に NAS（Go Agent 経由）へ書き、成功後に DB インデックスを更新する。作成は逆で、",[234,389,390],{},"relativePath"," のユニーク制約を使って DB 行を先に確保し、同一トランザクション内で NAS 書き込みを行う（NAS 書き込み失敗時は行がロールバックされる）",[331,393,394,397,398,401],{},[234,395,396],{},"domain/service/DocumentStorageRouter",": 実際のストレージ (",[234,399,400],{},"DocumentStoragePort",") へのルーティングと NAS 読み書きの実装詳細",[331,403,404,405,408,409,412,413,416,417,420,421,424,425,344,428,431],{},"そのほかの主要サービス: ",[234,406,407],{},"DocumentConversionService","（フォーマット変換）、",[234,410,411],{},"OfficeRenderService","（WOPI レンダリング）、",[234,414,415],{},"DocumentOcrConversionService","（スキャン文書の OCR）、",[234,418,419],{},"DocumentTranscriptionService","（録音→テキスト）、",[234,422,423],{},"ChangelogService","（変更履歴の生成）、",[234,426,427],{},"NasTrashService",[234,429,430],{},"NasDownloadGrantService","（NAS 側のゴミ箱・ダウンロード権限）",[226,433,435],{"id":434},"frontend-構造","Frontend 構造",[230,437,438,441,442,445,446,445,449,445,452,455],{},[234,439,440],{},"app/modules/document/"," は規約の4分類に加え ",[234,443,444],{},"stores","・",[234,447,448],{},"mappers",[234,450,451],{},"transport",[234,453,454],{},"services"," を持つ。",[328,457,458,494,519],{},[331,459,460,336,463,466,467,470,471,474,475,478,479,482,483,486,487,490,491],{},[234,461,462],{},"components/",[234,464,465],{},"tree/","（ツリー表示・D&D）、",[234,468,469],{},"editor/","（本文エディタ）、",[234,472,473],{},"pane/","（表示ペイン）、",[234,476,477],{},"preview/","（プレビュー）、",[234,480,481],{},"embeds/","（埋め込みコンテンツ）、",[234,484,485],{},"mobile/","、",[234,488,489],{},"CollaboraOfficeEditor.vue","（Collabora の iframe 埋め込み）、",[234,492,493],{},"DocumentEditorPane.vue",[331,495,496,336,499,502,503,344,506,344,509,512,513,486,516],{},[234,497,498],{},"composables/",[234,500,501],{},"useWopiEditorUrl","（Collabora 起動 URL の発行）、",[234,504,505],{},"useDocumentTreeDrop",[234,507,508],{},"useDocumentTreeBulkOperations",[234,510,511],{},"useDocumentTreeKeyboardNav","（ツリー操作）、",[234,514,515],{},"useOfficePdfPreview",[234,517,518],{},"useSandboxDataBridge",[331,520,521,524],{},[234,522,523],{},"stores/",": ツリー状態・開いているタブなどのクライアント状態",[226,526,527],{"id":527},"他モジュールとの辺",[328,529,530,538,551,568,574,584],{},[331,531,532,336,534,537],{},[234,533,242],{},[234,535,536],{},"TableNodeMarkerService"," によりテーブルもツリー上のノードとして表示される（ノード種別の一つ）",[331,539,540,543,544,547,548,550],{},[234,541,542],{},"organize",": AI 取込の入力元はこのツリー上の文書（",[234,545,546],{},"ResolveDocumentsStep"," が ",[234,549,267],{}," を解決する）",[331,552,553,556,557,560,561,344,564,567],{},[234,554,555],{},"office","（WOPI + POI）: Collabora からの読み書きは WOPI プロトコル経由で ",[234,558,559],{},"core/office"," の ",[234,562,563],{},"WopiController",[234,565,566],{},"WopiLockService"," が仲介する",[331,569,570,573],{},[234,571,572],{},"search",": 文書内容の全文検索・セマンティック検索のインデックス元",[331,575,576,579,580,583],{},[234,577,578],{},"sync","（Go Agent 経由 NAS 同期）: NETWORK_DRIVE/LOCAL ワークスペースの実ファイル I/O は Go Agent が担い、",[234,581,582],{},"StorageAwareDocumentService"," がそれを呼び出す",[331,585,586,589,590,592],{},[234,587,588],{},"share",": 文書の公開リンクは ",[234,591,370],{}," から配信される",[594,595,597],"callout",{"type":596},"warning",[230,598,599,600,602,603,606,607,609],{},"NETWORK_DRIVE/LOCAL ワークスペースでは NAS が正（SSoT）なので、DB だけを直接いじる修正（マイグレーションでの直接 UPDATE 等）は NAS の実ファイルと乖離する。文書の作成・更新・削除は必ず ",[234,601,582],{}," を経由すること（ルート ",[234,604,605],{},"CLAUDE.md"," の Key Cross-Module Patterns にも明記されている規約）。作成時は DB 行を先に確保してから NAS へ書く順序に意味があり（",[234,608,390],{}," ユニーク制約が同時実行のリスキャン挿入と競合しないようにする）、順序を入れ替えると整合性が壊れる。",{"title":611,"searchDepth":612,"depth":612,"links":613},"",2,[614,615,616,617,618],{"id":228,"depth":612,"text":228},{"id":240,"depth":612,"text":240},{"id":315,"depth":612,"text":316},{"id":434,"depth":612,"text":435},{"id":527,"depth":612,"text":527},"階層型ドキュメントツリー。NASが正、StorageAwareDocumentService、Collabora連携。backend core/editor ⇄ frontend app/modules/document の深掘り。","md",{},true,{"title":140,"description":619},"h5fBTCov313L59daZPiQVBcdwpvWZgygmZq6lO9rwAw",[626,628,629,631,632,633,634,635,636,637,638,639,641,642,643,644,645,647,648,649,650,651,653,655,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,675,676,677,678],{"path":13,"title":627},"Astar とは何か（5分で）",{"path":17,"title":16},{"path":6,"title":630},"ようこそ",{"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":640},"システムアーキテクチャ",{"path":73,"title":72},{"path":77,"title":76},{"path":81,"title":80},{"path":85,"title":84},{"path":65,"title":646},"バックエンドガイド",{"path":97,"title":96},{"path":101,"title":100},{"path":105,"title":104},{"path":109,"title":108},{"path":89,"title":652},"フロントエンドガイド",{"path":121,"title":654},"Go agent — NAS 同期エージェント",{"path":125,"title":656},"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":674},"モジュール索引",{"path":205,"title":204},{"path":209,"title":208},{"path":197,"title":201},{"path":213,"title":679},"docs/ 地図",1785452455261]