智翔館 週間計画アシスタント(テスト版)
社内向けの Web チャットアプリ。ログインした社員が Claude API と会話しながら週間の行動計画を作る。
会話ログを記録(後の改善・人事評価用)、API キーはサーバ側のみ。
ローカル起動
- npm install
- cp .env.example .env.local して ANTHROPIC_API_KEY と ACCESS_CODE を設定
- npm run dev → http://localhost:3000
Vercel デプロイ
- このリポジトリを Vercel で Import
- 環境変数を設定: ANTHROPIC_API_KEY / ACCESS_CODE /(任意)AGENT_MODEL
- Deploy → 発行 URL を社内共有
中身の調整
- 会社情報・理念・社長方針・用語定義: knowledge/10_理念・方針/COMPANY.md(lib/core/companyKnowledge.ts が読み込み、全AI機能の前提として差し込む)
- 会議AI(事前報告・月次報告・講習の結果報告)・中間報告・議事録のすべてが withCompanyKnowledge() を通して読む
- 本日の日付と期(5月始まり・4月締め)は実行時に Asia/Tokyo で算出する。定数で持たない
- 〔要確認〕と書かれた箇所は未確定。裏取りができ次第そこだけ差し替える
- 左メニュー(会議DX): components/Sidebar.tsx
- ダッシュボード・部門会議 / 全体会議(数値報告・会議AI・全体会議振り返り)/ 小中等部(重要タスク報告・AI壁打ち)
- depts を付けた項目は、その部門でログインした人にだけ出す(「重要タスク報告」は小中等部だけ)
- 要項QAと「ご意見・不具合の報告」は、総合メニューのアプリ「ヘルプデスク」(/helpdesk)へ移した(下の「ヘルプデスク」の節)
- 「報告の転記」(/report)と「中間報告」(/progress)は hidden: true でメニューから外している(画面は URL で開ける)。戻すときは hidden を外す
- ダッシュボードの「直近の事前共有事項」「直近の中間報告」も止めている(components/DashboardUI.tsx の SHOW_SHARE_ITEMS / SHOW_RECENT_PROGRESS を true に戻すと出る)
- 会話の進め方(プロンプト): lib/systemPrompt.ts(会議AI「事前報告」モード)
- 数値報告(「数値報告」メニューの入力項目・対象期間・校舎のプルダウン): lib/numberReports.ts
- メニュー内で「月次(通常期)」と「講習期(春期・夏期・冬期)」を切り替える
- 月次の項目は MONTHLY_FIELDS(生徒数・入会・体験・部門ごとのイベント等)、講習期の項目は SEASON_FIELDS
- 生徒数(月末・昨年同月)と入会(実績・昨年同月)は、ポップアップで小2〜高3の学年別に今年・昨年を並べて入れ、画面には合計を出す。目標は合計を直接入力
(内訳は隠し項目 studentsByGrade / studentsLastByGrade / enrollByGrade / enrollLastByGrade としてシートの末尾の列に保存)
- 総務・人事・支援・管理は校舎の代わりにグループ(管理・支援・経理)を選び、月次は「数値報告(自由記述)」1項目だけ(NO_STUDENT_DEPTS・freeNumbers。項目の出し分けは fieldsFor)
- 「イベント等」欄に部門ごとに必ず入れてもらう数値は EVENT_GUIDES(RED個別:中3県一斉模試・中3パック受講数/小中等部:模試。いずれも今年/昨年)
- 校舎の選択肢は CAMPUSES_BY_DEPT に並べる(無い部門は校舎名の自由入力欄になる)
- 入力は スプレッドシート「月次数値」「講習数値」へ1行ずつ記録(apps_script/Code.gs の saveNumberReport_ / listNumberReports_)。
旧「夏期数値」シートは読み書きしない(2026年夏までの記録として残す)
- 月次報告(会議AI「月次報告」モード): lib/monthlyPrompt.ts
- 数値は対話で尋ねず、「数値報告」(月次)で登録済みのものを読み取る。未登録なら入力を促して止まる
- 毎月の報告なので会議の開催日は聞かない。計画は内容を列挙させず、実践度合い(%)と理由だけを1問で聞く
- 冒頭の1問で A(数値を含む報告:校舎部門責任者)/ B(数値を担当しない職員)に分岐。B は「その月の行動目標と結果」「成功事例」「共有・相談」だけを聞く
- その月の計画の実践度合い(%・理由)、目標に届かなかった項目の要因、成功事例、共有/相談したいことを出力
- 講習の結果報告(会議AI「講習の結果報告」モード。旧「夏の結果報告」): lib/seasonPrompt.ts
- 数値は対話で尋ねず、「数値報告」(講習期)で登録済みのものを読み取る。未登録なら入力を促して止まる
- 募集/継続/成績を振り返り、宿題の完了状況・成功事例・共有/相談したいことを出力
- 事前報告・月次報告・講習の結果報告の保存(「報告完了」で自動保存): lib/reportSubmit.ts
- AI は下書きを見せ、報告者が「報告完了」と送ったときだけ「=== …(ここから)===」の確定ブロックを出す
- 画面(components/ChatUI.tsx)がそのブロックを見つけると /api/report へ送り、会議ドキュメントへ転記する
- 事前報告も「報告完了」での保存で提出は終わり(会議ドキュメントへの貼り付けや LINE WORKS での完了報告は不要)
- 自動で保存できなかったときの予備として「報告の転記」画面(/report)が残っている。左メニューには出さず、
会議AIの保存失敗の案内からだけ開く
- 転記と同時に、報告文中の「■ 成功事例(全体共有)」を
スプレッドシート「成功事例」へ自動で1件1行記録し、ダッシュボードに全部門分を表示
(抽出ロジック: lib/successCases.ts / 保存先: apps_script/Code.gs の saveSuccess_ / listSuccess_)
- 重要タスク報告(左メニュー「小中等部」→「重要タスク報告」。/task-report): lib/taskReport.ts
- 小中等部の教室担当が毎週、対象週(土〜金)と校舎を選んで5つの設問に答える。設問の文言は QUESTIONS、校舎は数値報告と同じ CAMPUSES_BY_DEPT
- 保存先はスプレッドシート「重要タスク報告」(apps_script/Code.gs の saveTaskReport_)。出し直すと追記(同じ週・校舎は新しいほうを使う)
- Apps Script が再デプロイ前で saved の印が返らないときは、保存されていないとして画面に出す
- AI壁打ち(左メニュー「小中等部」→「AI壁打ち」。/task-coach): lib/taskCoach.ts(読み取り・入力チェック)、lib/taskCoachPrompt.ts(AIへの指示)、lib/taskCoachStore.ts(Apps Script)、lib/taskCoachDoc.ts(Word)
- 重要タスク評価シート(apps_script/Code.gs の TASK_EVAL_BOOK_ID)の校舎タブを読み、項目ごとに AI と行動計画を相談する。校舎は COACH_SCHOOLS(評価シートのタブ名=秋~冬行動計画の校舎の行の名前)
- 評価シートの読み取りは見出しの文字(「指標」「段階」「良い動き」など)で行う。表の形を大きく変えたら parseEvaluation を直す
- 行動計画への書き込みは Code.gs の appendPlanActions_。「月日」の行で日付の列、その下の校舎の3行(外部・内部・他)で行を決め、「★行動」を書き足す
- 毎週の評価を別ファイルで作ったら、TASK_EVAL_BOOK_ID を変えて Apps Script を再デプロイする
- 部門会議(「部門会議」メニュー。会議DXの基本機能。URL は /dept-minutes のまま)
- 流れ(ループ):1 会議情報を入力して[事前共有で報告する]→ 2 録音/録音ファイル添付/文字起こし貼り付け →
3 AIが議事録化 → 入力者が確認・修正 → 保存(決定事項が全部門で見える)→
4[次回の事前共有をつくる]で、その議事録から次回の会議情報と議題の下書きを作る → 1 に戻る
- 次回の下書き:会議名・場所・出席者はそのまま、開催日時は「■ 次回会議」の日付。議題には
「話し合えなかった議題(未実施)」「決定事項の進捗確認」「継続審議・保留」「未完了の ToDo」「持ち越し・準備事項」を引き継ぐ
(組み立て: lib/deptMinutesPreshare.ts の buildNextAgenda / 議事録からの切り出し: lib/deptMinutesDraft.ts の draftForNext)
- 保存済みの議事録からも、[詳細]→[次回の事前共有をつくる]で作れる(部門会議の画面・ダッシュボードの両方)
- 事前共有:手順1の会議名・開催日時・場所・出席者・議題(レジュメ)を、ダッシュボードの
「部門会議の事前共有」と議事録画面の「これからの部門会議」に出す(出席者が議題を見ながら会議を進めるため)
- 並べ方・外し方(議事録を保存した会議と、開催日から3日過ぎた会議は外す): lib/deptMinutesPreshare.ts
- 保存先: 「部門会議事前共有」シート(1会議1行)。議事録を保存すると「議事録ID」が入る
(apps_script/Code.gs の saveDeptPreshare_ / listDeptPreshare_ / linkDeptPreshare_)
- 議事録テンプレート(項目・書き方): lib/deptMinutesTemplate.ts ★ここを直せば AI の出力・
画面のヘルプ・会議の質チェックにまとめて反映される
- AI への指示: lib/deptMinutesPrompt.ts
- 保存先: 「部門会議議事録」シート(1会議1行)+「部門決定事項」シート(1決定1行)
(apps_script/Code.gs の saveDeptMinutes_ / listDeptMinutes_ / listDeptDecisions_)
- テンプレートに沿わなかった点(話し合えなかった議題・結論の出なかった議題・担当や期限が
決まっていない決定など)は「会議の質チェック」として議事録の後ろに出力され、シートにも残る
- ここを直すと全社員の AI に一括反映
問合せ管理アプリ(小中等部 問合せ管理の Web アプリ化)
スプレッドシート「2026小中等部問合せ管理」(校舎ごとのタブ)を置き換える台帳アプリ。
URL は /inquiry-board。会議DXのメニューには載せず、URL を直接共有して使う
(ログインは会議DXと共通。ログアウト状態で開くとログイン画面を経て戻ってくる)。
問合せ管理の「AIに聞く」(問い合わせQA)と会議DXの目標管理は、この台帳のデータを参照する(下記「問い合わせQA」)。
- 画面: app/(board)/inquiry-board/(専用レイアウト・サイドバー無し)/ components/InquiryBoardUI.tsx
- API: app/api/inquiry-board/route.ts(GET=全件、POST=登録、PUT=更新、DELETE=削除)
- データ定義・選択肢・集計: lib/inquiryRecords.ts ★列や選択肢を増やすときはここ
- 保存: lib/inquiryStore.ts → apps_script/Code.gs の listInquiryRecords_ / saveInquiryRecord_ / deleteInquiryRecord_
- 閲覧できる部門: lib/inquiryBoardAccess.ts(小中等部・管理部門。個人情報を含むため)
This is the beginning of the README. Read the rest at the original. Read the full README ↗