コンテンツにスキップ

月案ファイルから候補を探す機能・設計案

2026-09-27。ユーザー確認前の提案。実装・配備なし。

合意した開発方針

ユーザーが「まずhoiku-plan-docsである程度作り込んでから実機に反映する」方向を了承した。 読み込み・検索・AI提案を移しやすい部品として単独版で試作・試用し、その後に本体の認証・DB保存へ接続して検証、依頼に応じて配備する。 これは画面詳細の承認や本番配備の依頼ではない。モックの試用・仕様合意を引き続き行う。 次の作業への引き継ぎは docs/handoff-monthly-library-to-plan-docs-2026-09-27.md。

目指す流れ

Google Driveの指定フォルダ → 文章の抽出 → 年齢・月・カテゴリと出典を付ける → 条件で検索 → 原文候補/AI提案を選択 → 今のクラスに合わせて修正 → 月案の下書きとして保存。

原文とAI提案の切替はユーザー回答で確認済み。画面の詳細と保存操作はモックで合意する。

現状

  • 配備済みの plan_docs/routers/bunrei.py と plan_docs/services/bunrei.py に、年齢・月で文例を選び月案の下書きを作る仕組みがある。
  • 園文例は手入力・定型CSV/Excelから追加できる。任意レイアウトの月案ファイルをそのまま整理する仕組みやDrive同期ではない。
  • 月案の出力先は10セクション。既存対応では「環境構成・保育者の援助」が「環境構成」、「活動内容」が「援助」に入る。取込資料との意味のずれを確認してから分類を決める。既存対応を黙って変更しない。
  • 指定フォルダはログインを要求。未接続のため内容は未確認。

検索とAIを分ける

最初に「年齢・月・カテゴリ」を条件として候補範囲を固定する。検索語がある場合、文章中の語句一致を使い、資料量や検索結果を見て必要なら意味の近さも使う。候補なしの場合はその旨を出し、勝手に別年齢の文章へ広げない。

原文モードでは資料中の文章を示す。AIモードでは、その条件で取得した複数の文章と職員が入力した文脈を材料に提案を作る。提案には参考にした文章の識別子を保存し、画面から原文・元ファイル・位置へたどれるようにする。AIが作った文章であることを区別し、職員が選択・修正してから採用する。

「RAGのようなもの」の中心はこの検索→参照付き提案の流れ。現段階ではベクトルDBや外部AIサービスの採用までは決めない。

取り込む単位

ファイル全体を一つの文章にせず、意味がまとまった月案の項目/表のセル群ごとに分ける。年齢や月はファイル名だけでなくシート名・本文の見出しも確認し、根拠の曖昧なものを未分類にする。Excel、Word、PDF、Google形式などの対応は実ファイル調査後に確定する。

保存する情報 用途
園・アクセス範囲 他園や閲覧権限のない資料を候補に混ぜない
DriveファイルID、更新情報、内容ハッシュ 重複取込を防ぎ、更新時に差分を管理
ファイル名、リンク、ページ/シート/セル等 原文の位置を確認
年齢、対象月、年度、元の項目見出し、対応カテゴリ 条件で絞り込み、年度を跨いで再利用
原文、検索用テキスト、確認状態 原文を保持しながら検索・匿名化確認
抽出方法、取込日時、エラー 読込失敗を見落とさず再試行
AI提案と参照した文章ID・取込版 修正後も提案の根拠を追える

結合セルの見出しは下のセルへ引き継ぐなど、文脈を失わない抽出が必要。画像のみの資料には文字認識の要否を確認する。園児名などがある場合は検索候補への反映前に確認し、外部AIを利用する場合の送信範囲を決める。資料内の命令文はAIへの指示として扱わない。

更新されたファイルは再抽出し、承認済みの旧候補と差し替える。削除・権限喪失したファイルの候補は新規検索から除外する設計とし、既に採用した月案と根拠の履歴をどう残すかは運用を確認する。取得失敗を「資料削除」とみなさない。

進め方

  1. Drive接続後にファイル一覧と代表例を読み、形式・カテゴリ・件数を確認する。
  2. 少数の実ファイルで抽出結果と出典位置を確認し、誤分類・欠落を修正する。
  3. 今回の架空モックで画面・選択・保存タイミングを合意する。
  4. 合意した範囲で本アプリに実装する。園単位の権限、正しい抽出、重複取込、検索条件、AI参照、更新失敗時の保持を検証する。
  5. 配備は別途依頼に従い、その時点の最新配備版との機能差分を確認する。

モックと詳細な確認項目: tools/monthly-library-preview/README.md。