BluePeriod Docs
開発コンポーネント

プロジェクトエディタコンポーネント

執筆画面を構成するエディタパネルコンポーネント群

プロジェクトエディタコンポーネント

執筆画面(/project/[id])を構成する主要なパネルコンポーネントです。

LeftPanel (Plot Panel)

プロットの構造(Part > Arc > Chapter > Story > Section)をツリー形式で管理・表示するコンポーネントです。

  • 責務:
    • プロット階層の表示と操作(追加、削除、並べ替え、編集)。
    • ドラッグ&ドロップによる並べ替え: @dnd-kit/core を使用してプロットアイテムの並べ替えを可能にする。
    • 同期スクロール (受信): selectedSectionAtom の変更を監視し、外部(CenterPanelなど)でセクションが選択された場合、自動的に該当するプロットアイテムまでツリーを展開し、スクロールして表示する。
    • AIによるプロット生成・翻訳のトリガー。
    • 各プロットアイテムに対して、生成、翻訳、リライト、編集、削除などのアクションを提供する。
  • 関連Atoms:
    • partsAtom: プロットデータ全体。
    • selectedSectionAtom: 現在選択されているセクションID。
    • plotCollapseStateAtom: ツリーの展開状態を管理。
    • generatingSectionAtom: 生成中のセクションIDを管理。
    • editingPlotItemAtom: 編集中のプロットアイテムを管理。
    • focusedPlotItemAtom: フォーカス中のプロットアイテムを管理。

CenterPanel (Manuscript Panel)

原稿の執筆・閲覧を行うメインパネルです。

  • 責務:
    • プロットに対応する原稿カード(ManuscriptCard)のリスト表示。
    • 同期スクロール (送信): 原稿カードがクリックされた際、selectedSectionAtom を更新してLeftPanelへ通知する。
    • 同期スクロール (受信): selectedSectionAtom が変更された際、該当する原稿カードまでスクロールする。
    • 未執筆箇所のハンドリング: 選択されたセクションに対応する原稿カードが存在しない場合(未執筆)、自動的にリストの最下部(新規執筆位置)までスクロールする。
    • 原稿の削除: 確認ダイアログ付きで原稿バージョンの削除機能を提供。
    • 原稿の再生成: AIによる原稿の再生成機能を提供。
    • 全原稿の整理: 使用されていない原稿バージョンを一括削除する「整理」機能を提供。
    • 保存機能: プロジェクトの保存状態を表示し、保存ボタンを提供。
  • 関連Atoms:
    • manuscriptsAtom: 原稿データ。
    • selectedSectionAtom: スクロール同期のキーとなる状態。
    • isProjectDirtyAtom: プロジェクトの未保存状態を管理。
    • manuscriptFontSizeAtom: 原稿のフォントサイズ。
    • manuscriptFontWeightAtom: 原稿のフォントウェイト。
    • manuscriptContentChangeAtom: 原稿内容の変更を処理。
    • deleteManuscriptVersionAtom: 原稿バージョンの削除。
    • pruneAllManuscriptsAtom: 全原稿の整理。

ManuscriptCard

個々の原稿セクションを表示・編集するカードコンポーネントです。

  • 責務:
    • 原稿本文の表示と編集(Textarea)。
    • バージョン管理(翻訳、オリジナル)の切り替え。
    • 選択検知: クリックイベントを親コンポーネントに通知し、アクティブなセクションとして設定させる。
    • 文字数カウンター: 原稿の文字数をリアルタイムで表示。

RightPanel (Writing Tools Panel)

執筆支援ツールを提供するパネルコンポーネントです。

  • 責務:
    • タブ構成: 「執筆プロンプト」と「AI設定」の2つのタブを提供。
    • 執筆プロンプトタブ: PromptManagementPanel を使用して、プロジェクト固有の執筆プロンプトを管理。
    • AI設定タブ: ConfigurableApiSettingsPanel を使用して、AI生成のための設定(プロバイダー、モデル、温度など)を管理。
  • 関連Atoms:
    • writingPromptsAtom: プロジェクト固有の執筆プロンプト一覧。
    • addWritingPromptAtom: 新規プロンプトの追加。
    • updateWritingPromptAtom: プロンプトの更新。
    • deleteWritingPromptAtom: プロンプトの削除。
    • reorderWritingPromptsAtom: プロンプトの並べ替え。
    • writingLlmProviderAtom: AIプロバイダーの設定。
    • writingModelAtom: AIモデルの設定。
    • writingTemperatureAtom: 生成温度の設定。
    • writingTopPAtom: Top-Pの設定。
    • writingStreamingEnabledAtom: ストリーミング生成の有効/無効。
    • writingContextWindowAtom: コンテキストウィンドウの設定。
    • writingApiRequestIntervalAtom: APIリクエスト間隔の設定。

RewriteDialog

AIによる原稿のリライト・推敲を行うためのモーダルダイアログです。

  • 責務:
    • 一括リライト対象のセクション一覧表示。
    • グローバル指示およびプロンプトアセットの構成。
    • AIによるプランニング結果とリライトプレビューの表示。
    • diff ライブラリを用いた新旧原稿の文字単位差分表示。
    • 生成結果の直接編集(Editモード)と、最終的な原稿への一括適用。
  • 関連Atoms:
    • rewriteStateAtom: ダイアログの状態(指示、プレビュー、進行状況など)を永続化。
    • manuscriptsAtom: リライト結果の適用先。

PromptAssetSelector

リライト指示に使用するプロンプトのテンプレート(アセット)を選択するためのシートコンポーネントです。

  • 責務:
    • 保存済みプロンプトアセットの検索と一覧表示。
    • 選択されたアセットを RewriteDialog の指示に統合。
  • データソース:
    • promptAssetsAtom: データベースから取得したプロンプトアセット一覧。

PromptManagementPanel

プロンプトアセットを管理するためのパネルコンポーネントです。

  • 責務:
    • プロンプトアセットの作成、編集、削除。
    • タグによるフィルタリングと検索。
    • 有効/無効の切り替え。
    • ドラッグ&ドロップによる並べ替え。
  • データソース:
    • 対象となるプロンプトAtom(執筆プロンプトなど)。
    • 各種操作Atom(追加、更新、削除、並べ替え)。

プロンプトシステムのアーキテクチャ

本アプリケーションのプロンプトシステムは、3つの異なるテーブルで管理され、それぞれ異なるスコープと用途を持ちます。

執筆プロンプト (writingPrompts)

  • スコープ: プロジェクト固有
  • 用途: 執筆支援(プロット生成、文章生成など)
  • 管理場所: プロジェクトごとの writingPrompts テーブル
  • 同期: Project Chunk に含まれる
  • UI: 右パネルの「執筆プロンプト」タブ

チャットプロンプト (chatPrompts)

  • スコープ: グローバル
  • 用途: AIチャットの性格や振る舞いを定義
  • 管理場所: グローバルな chatPrompts テーブル
  • 同期: Global Chunk に含まれる
  • UI: チャット設定画面

プロンプトアセット (prompt_assets)

  • スコープ: グローバル
  • 用途: 再利用可能なプロンプトテンプレート(タグ、説明、公開設定などのメタデータを含む)
  • 管理場所: グローバルな prompt_assets テーブル
  • 同期: Global Chunk に含まれる
  • UI: プロンプト管理パネル、リライトダイアログ内のアセット選択

同期トリガー

  • プロンプトアセットの変更時: globalChunkVersionAtom が更新され、Global Chunk の同期がトリガーされます。
  • 執筆プロンプトの変更時: プロジェクトの updatedAt が更新され、Project Chunk の同期がトリガーされます。

On this page