[{"data":1,"prerenderedAt":689},["ShallowReactive",2],{"navigation":3,"doc-/modules/display":217,"docs-all-paths":634},[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":176,"body":219,"description":628,"extension":629,"meta":630,"navigation":631,"path":177,"seo":632,"stem":178,"__hash__":633},"docs/07.modules/11.display.md",{"type":220,"value":221,"toc":619},"minimark",[222,225,229,252,255,360,364,383,449,453,463,507,510,574],[223,224,176],"h1",{"id":176},[226,227,228],"h2",{"id":228},"一言でいうと",[230,231,232,236,237,240,241,244,245,248,249,251],"p",{},[233,234,235],"code",{},"Display"," は「あるソース（テーブル・データセット、または外部データ）をどの形式でどう描画するか」を1レコードとして保存したものです。旧 ",[233,238,239],{},"TableView"," を rename し、",[233,242,243],{},"tableId"," 単一参照を ",[233,246,247],{},"DisplaySource","（table直結 / dataset経由 / sourceless）に多態化した、data layer refactor の中心エンティティです。テーブル画面のタブも、ダッシュボードの widget も、同じ ",[233,250,235],{}," を参照します。",[226,253,254],{"id":254},"主要ドメイン概念",[256,257,258,271],"table",{},[259,260,261],"thead",{},[262,263,264,268],"tr",{},[265,266,267],"th",{},"概念",[265,269,270],{},"役割",[272,273,274,305,326,340,350],"tbody",{},[262,275,276,281],{},[277,278,279],"td",{},[233,280,235],{},[277,282,283,284,287,288,287,291,294,295,294,298,287,301,304],{},"描画設定本体。",[233,285,286],{},"source"," + ",[233,289,290],{},"viewType",[233,292,293],{},"filters","/",[233,296,297],{},"sortBy",[233,299,300],{},"groupBy",[233,302,303],{},"display","（viewType固有 JSONB config）",[262,306,307,311],{},[277,308,309],{},[233,310,247],{},[277,312,313,314,317,318,321,322,325],{},"sealed: ",[233,315,316],{},"FromTable","（table直結） / ",[233,319,320],{},"FromDataset","（dataset経由） / ",[233,323,324],{},"Sourceless","（外部データを renderer が自前取得）",[262,327,328,333],{},[277,329,330],{},[233,331,332],{},"ViewType",[277,334,335,336,339],{},"表示形式の enum（16種: LIST/BOARD/CALENDAR/TIMELINE/GALLERY/SUMMARY/STAT/CHART/ALERT/TREE_TABLE/MEMBER_SCHEDULE/HTML_CUSTOM/FORM/GOOGLE_CALENDAR/TEAM_CALENDAR/INTERACTIVE_HTML/MAIL/LINE_CORRESPONDENCE）。定義は ",[233,337,338],{},"core/table"," 側にある（下記参照）",[262,341,342,347],{},[277,343,344],{},[233,345,346],{},"DisplayRevision",[277,348,349],{},"HTML_CUSTOM viewType 専用の保存履歴（直近N件の FIFO ログ）",[262,351,352,357],{},[277,353,354],{},[233,355,356],{},"DisplayReference",[277,358,359],{},"この Display を参照している dashboard placement の projection（「どの screen で使われているか」を UI に見せるため）",[226,361,363],{"id":362},"backend-構造","Backend 構造",[230,365,366,369,370,372,373,375,376,379,380,382],{},[233,367,368],{},"core/display/"," は3層構造。",[233,371,332],{}," 自体は ",[233,374,338],{}," 側の ",[233,377,378],{},"domain/model/ViewType.kt"," に定義され、",[233,381,303],{}," はそれを参照するだけです（表示形式の定義は table が SSoT）。",[384,385,386,412,429,435],"ul",{},[387,388,389,392,393,396,397,400,401,404,405,400,408,411],"li",{},[233,390,391],{},"api/controller/DisplayController.kt",": CRUD（",[233,394,395],{},"POST/GET/PATCH/DELETE /api/v1/displays","）に加えて ",[233,398,399],{},"set-default","・",[233,402,403],{},"references","（このDisplayを使っているdashboard placement一覧）・",[233,406,407],{},"export",[233,409,410],{},"export-to-node","（HTML_CUSTOM の事前レンダリング結果 / AI生成結果をドキュメントツリーへ export）",[387,413,414,417,418,420,421,424,425,428],{},[233,415,416],{},"domain/service/DisplayService.kt",": 作成・更新・",[233,419,247],{}," の妥当性検証（",[233,422,423],{},"ViewType.requiresTableBinding()"," / ",[233,426,427],{},"isSourceless()"," との整合チェック）",[387,430,431,434],{},[233,432,433],{},"domain/service/DisplayRevisionService.kt",": HTML_CUSTOM の保存履歴。record と prune を単一トランザクションで実行し「常に直近N件」を保証する",[387,436,437,440,441,444,445,448],{},[233,438,439],{},"domain/model/DisplaySource.kt",": DB では ",[233,442,443],{},"displays.source_kind","（TABLE/DATASET/SOURCELESS） + ",[233,446,447],{},"displays.source_id"," の2カラムに分解される",[226,450,452],{"id":451},"frontend-構造","Frontend 構造",[230,454,455,458,459,462],{},[233,456,457],{},"app/modules/display/"," は4分類のうち components を持たない薄いモジュールです（実際のビュー描画コンポーネントは ",[233,460,461],{},"screen"," 側の renderer 群が持つ）。",[384,464,465,482,492],{},[387,466,467,470,471,474,475,478,479],{},[233,468,469],{},"composables/",": ",[233,472,473],{},"useDisplay","（単一Displayのget+CRUD）、",[233,476,477],{},"useDisplayList","（一覧）、",[233,480,481],{},"useDisplayRecords",[387,483,484,487,488,491],{},[233,485,486],{},"repositories/DisplayRepository.ts",": backend ",[233,489,490],{},"/api/v1/displays"," のラッパー",[387,493,494,470,497,499,500,502,503,506],{},[233,495,496],{},"types/display.ts",[233,498,332],{}," ごとの ",[233,501,303],{}," config 型。バリデーションは ",[233,504,505],{},"shared/view-type-display-schema.json"," から生成された zod スキーマ（下記）を使う",[226,508,509],{"id":509},"他モジュールとの辺",[384,511,512,530,565],{},[387,513,514,516,517,519,520,523,524,526,527,529],{},[233,515,256],{},"（backend）: ",[233,518,332],{}," 定義と ",[233,521,522],{},"displayMetadata()","（viewType固有 config のフィールド仕様）の SSoT。",[233,525,505],{}," はこの ",[233,528,522],{}," から生成される",[387,531,532,534,535,537,538,294,541,294,544,294,547,550,551,553,554,557,558,561,562,564],{},[233,533,461],{},"（frontend, backend対応なし）: dashboard widget は ",[233,536,235],{}," を参照して描画する。widget の renderer 群（",[233,539,540],{},"ListViewRenderer",[233,542,543],{},"BoardViewRenderer",[233,545,546],{},"CalendarViewRenderer",[233,548,549],{},"ChartViewRenderer"," 等）は ",[233,552,461],{}," モジュール側にあり、",[233,555,556],{},"view-type-display-schema.json"," から生成された ",[233,559,560],{},"validateDisplay"," を共通で使う。",[233,563,356],{}," はこの placement を逆引きする projection",[387,566,567,470,570,573],{},[233,568,569],{},"dataset",[233,571,572],{},"DisplaySource.FromDataset"," 経由で複数テーブルの UNION ビューを source にできる",[575,576,578],"callout",{"type":577},"warning",[230,579,580,583,584,587,588,591,592,595,596,598,599,601,602,294,605,294,608,611,612,614,615,618],{},[233,581,582],{},"ViewType.requiresTableBinding() == false"," と ",[233,585,586],{},"ViewType.isSourceless() == true"," を同一視しないこと。",[233,589,590],{},"HTML_CUSTOM"," は前者が ",[233,593,594],{},"false","（AI生成HTML widget は schema-on-render で、内部の custom element が各自 table を参照するため「主たる binding」を必要としない）だが、後者は ",[233,597,594],{},"（実際の table/dataset source を workspace の anchor として持つ）です。",[233,600,324],{}," で作成できるのは ",[233,603,604],{},"GOOGLE_CALENDAR",[233,606,607],{},"TEAM_CALENDAR",[233,609,610],{},"INTERACTIVE_HTML"," の3つだけで、",[233,613,590],{}," はここに含まれません。判定を混同すると ",[233,616,617],{},"DisplayService.validateSourceCompatibility"," の分岐を読み違えます。",{"title":620,"searchDepth":621,"depth":621,"links":622},"",2,[623,624,625,626,627],{"id":228,"depth":621,"text":228},{"id":254,"depth":621,"text":254},{"id":362,"depth":621,"text":363},{"id":451,"depth":621,"text":452},{"id":509,"depth":621,"text":509},"テーブル表示ビュー (board/calendar/chart/timeline/HTML_CUSTOM/...)。core/display ⇄ app/modules/display の深掘り。view-type-display-schema (shared/) と screen (dashboard widgets) との関係を含む。","md",{},true,{"title":176,"description":628},"LUV7DPu7h8ZsDQLOwIRY3YDwQgyZQehXKhE3aWfFBzA",[635,637,638,640,641,642,643,644,645,646,647,648,650,651,652,653,654,656,657,658,659,660,662,664,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,684,685,686,687],{"path":13,"title":636},"Astar とは何か（5分で）",{"path":17,"title":16},{"path":6,"title":639},"ようこそ",{"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":649},"システムアーキテクチャ",{"path":73,"title":72},{"path":77,"title":76},{"path":81,"title":80},{"path":85,"title":84},{"path":65,"title":655},"バックエンドガイド",{"path":97,"title":96},{"path":101,"title":100},{"path":105,"title":104},{"path":109,"title":108},{"path":89,"title":661},"フロントエンドガイド",{"path":121,"title":663},"Go agent — NAS 同期エージェント",{"path":125,"title":665},"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":683},"モジュール索引",{"path":205,"title":204},{"path":209,"title":208},{"path":197,"title":201},{"path":213,"title":688},"docs/ 地図",1785452455433]