CHANGELOG
← 管理画面へ
2026
v11.8.1
v11.8.1 FIX
セキュリティ強化(静的リスク監査 R1 対応)
2026-08-31
  • 🔒CORS fail-closed 対応 — 許可外オリジンに Access-Control-Allow-Origin を返さないよう修正・Vary: Origin 付与
  • 🔒CSP(Content-Security-Policy)適用 — public/_headers 新設
  • 🔒previewHtml sandbox 化 — AI 生成 HTML を sandbox iframe で描画しスクリプト実行を防止
  • 🔒CSV 数式注入対策 — = + - @ 始まりセルの先頭に ' を付与
  • 🔒監査ログ実装 — security_audit_logs テーブル新設・認証失敗/認可拒否を自動記録
  • 🔒INCIDENT_RUNBOOK.md 作成 — 即時遮断・シークレットローテーション・影響調査手順を整備
  • 🔒Teams セキュリティ監視 — 毎朝 9:05 に監査ログ日次サマリ・AI コスト報告を自動送信
  • 🔒AI コストサーキットブレーカ — 日次 $5 超過時に Teams アラート
  • 🔒package.json 整備 — jose バージョン固定・wrangler 4.127.1 更新・npm audit 対応
v11.8
v11.8 MAJOR
セグメント分析・FCグラフ強化(FC多バージョン対応)
2026-08-29
  • セグメント分析:セグメント順をchannel_layer2登録順に統一
  • セグメント分析:FC列をforecast_versionsから取得・最新FC(緑)と確定FC(オレンジ)の2列表示対応
  • FCグラフ月次:KPIカードにFC最新・FC確定の2枚表示(確定FCがある場合のみ)
  • FCグラフ月次:ブッキングカーブにFC最新(緑点線)・FC確定(オレンジ点線)の2本追加
  • FCグラフ月次:セグメント別グラフのFC値をforecast_versionsの最新FCに切り替え・バー色をOTB=深緑/FC=淡緑に固定・販売可能バー廃止(スケール可変に)
  • FCグラフ年次:積み上げグラフ・サマリーテーブルのFC集計をforecast_versionsの最新FCに切り替え
  • バージョン判定ロジック共通化:入力済み最古=確定FC・最新=最新FC(同一の場合は1本のみ表示)
v11.7
v11.7 FIX
ダッシュボード施設権限バグ修正
2026-08-30
  • assertFacilityAccess を manager 以上は全施設アクセス可に変更(authz.js)
  • Revenue ダッシュボード:sankara ハードコード廃止・セッション施設基準で月リスト取得(ui-revenue-dashboard.js)
  • PickUpペース・セグメント・FCグラフ:init 時に自権限施設を select にセット(ui-pickup.js / ui-segment.js / ui-forecast-chart.js)
  • 施設プルダウン絞り込み対象に otbFacilitySelect 等を追加(ui-auth.js)
  • Bot ダッシュボード:未定義の updateCharts() 呼び出しを削除(ui-dashboard.js)
v11.6
v11.6 MAJOR
フォーキャスト バージョン管理・精度比較機能
2026-08-29
  • D1に forecast_versions テーブル新設(M-6〜M-1・W-3〜W-1の9バージョンを全保持・精度比較基盤)
  • Worker に /forecast-versions・/forecast-versions-status エンドポイント追加(GET/POST・Worker側ロック二重チェック)
  • authz.js に /forecast-versions・/forecast-versions-status を ROUTE_POLICY 登録(manager以上)
  • フォーキャスト入力UI全面刷新:月行クリックで詳細パネル展開、過去バージョン(M-6〜)を縦並びで比較表示
  • 過去バージョン行は▶クリックでセグメント別室数を展開(読み取り専用)
  • 現在入力バージョンはデフォルト展開・セグメント入力可。保存ボタンを月詳細パネル内に内蔵
  • OTB行に▶クリックでセグメント別OTB室数・稼働率を展開(layer2_codeで自動マッピング)
  • 各月行にバージョンバッジ自動表示(M-1〜M-6・W-1〜W-3)・ロック月はグレーアウト
  • バージョンセレクタ廃止・月差計算による完全自動判定(当月=週次・1〜6ヶ月先=月次・それ以外=ロック)
  • 予算行も同一パネル内に表示(室数・稼働率・売上・ADR・RevPAR)
v11.5
v11.5 FIX
Revenueダッシュボード実績タブ修正
2026-08-29
  • 総売上の予算比表示をM表記→K表記(整数)に統一(月次・年次)
  • さくらいの郷 月次実績:稼働率・室数・ADRが0/—になるバグを修正(revDashCurrentMonth→ymFull参照修正)
  • さくらいの郷 前年比:rm_actuals.student_roomsがWorkerのSELECTに含まれておらず前年長期利用室数が取得できていなかったバグを修正
  • 年次実績:稼働率の前年比が「データなし」になるバグを修正(totalPrevAvailRooms集計・prevOcc計算追加)
v11.4
v11.4 PATCH
AIモデル全面刷新(GPT-5.6 Luna)・RAG品質改善
2026-08-29
  • 全ボット(chatbot・hearing・mailbot・assistant)のモデルをgpt-4.1-mini → gpt-5.6-lunaに変更(コスト削減・品質向上)
  • 全ボットのAI呼び出しをChat Completions API → Responses API形式に移行(input/instructions/max_output_tokens)
  • extractResponsesText()ヘルパー追加・reasoningブロックスキップ対応(Luna特有のreasoningトークン問題を解消)
  • リランクのmax_output_tokens: 20→200に変更(Lunaがreasoningで全トークン消費する問題を根本解決)
  • チャットボットのpageRerankPromptを緩和(料金・施設情報ページが選ばれやすいよう改善)
  • 料金系キーワード検知時に関連ページ(about・leisure-pool・hashakids等)を強制取得する仕組みを追加
  • ページリランク上限を3件→5件に拡張(複合料金質問への対応)
  • pricing.jsにgpt-5.6系(sol/terra/luna)の単価追加・DEFAULT_MODEL更新
  • 奈良健康ランドシステムプロンプト整備(プール・はしゃきっズ具体的料金追加・夏季料金判定ルール明記)
v11.3.2
v11.3.2 FIX
セキュリティ強化 継続対応(#7 #13 #14 #15)
2026-08-28
  • 🔒ROUTE_POLICY一元化・未登録パスfail-closed(authz.js・worker.js) → #7クローズ
  • 🔒verifyToken ACCESS_AUD未設定時fail-closed・HMAC_SECRET未設定時fail-closed(3箇所) → #13対応
  • 🔒/faqs-import 件数上限1,000件・超過時413拒否 → #14対応
  • 🔒500レスポンスから例外メッセージ・スタックトレース除去・requestId相関ID導入(worker.js・otb.js全12箇所) → #15対応
  • 🔒wrangler.toml・wrangler-public.toml から account_id 除去 → #15対応
v11.3.1
v11.3.1 FIX
セキュリティ強化 継続対応(#19 #20 #21 #10)
2026-08-28
  • 🔒ai-eri.html Worker URL修正(廃止済み管理Worker直参照 → nova-public)・wrangler-public.toml に NOVA_ADMIN Service Binding追加 → #20クローズ
  • 🔒hr-chat-widget-sakurai.js nova-public向き確認済み・GUIDE.md に本番リソースは会社アカウント限定ルール明記 → #19クローズ
  • 🔒/otb-dates・/otb-months に requireAuth + assertFacilityAccess 追加(handleOTBData と同一基準に統一) → #21対応
  • 🔒/channel-code-sources GET に assertFacilityAccess・POST に admin検査追加・handleChannelMappings GET の requireAuth 二重呼び出し解消 → #21クローズ
  • 🔒hr-chat-widget-core.js に escapeHtml・safeUrl導入・img素通し廃止・全描画パスにXSS対策適用 → #10対応
  • 🔒samana page-faq.php・page-faq-en.php 同様のXSS対策適用・lang=en パラメータ追加・FAQ翻訳ゴーストデータ修正
v11.3
v11.3 FIX
セキュリティ強化(認証・認可・XSS・IDOR対応)
2026-08-26
  • 🔒verifyToken await漏れ修正 → requireAuth恒久策に統一(12ファイル)
  • 🔒/users admin必須・自己昇格禁止・論理削除・audit_logs監査ログ追加
  • 🔒/stats・/conversation-log SQLインジェクション修正(バインドパラメータ化)
  • 🔒/send-email requireAuth・ロール検査・宛先ドメイン制限・レート制限追加
  • 🔒/hearing-session HMACトークン署名検証方式に変更・emailマスク処理
  • 🔒/hearing-cleanup admin必須・Cron自動削除追加(毎日JST10:00)
  • 🔒/channel-* 全エンドポイントにrequireAuth追加・admin必須・監査ログ
  • 🔒S3エンドポイントにfacility許可リスト検証・日付形式チェック・エラーメッセージ隠蔽
  • 🔒authz.js新規作成・assertFacilityAccess共通ヘルパーを全ハンドラに適用
  • 🔒FAQ管理画面にescapeHtml適用・hr-chat-widget-core.js逆デコード削除・safeUrl追加
  • 🔒/nova-profile・/nova-profile-update のIDOR修正(user_idをauth.emailに固定)
  • 🔒audit_logsテーブル作成・HMAC_SECRET追加・ヒアリングURL署名トークン方式導入
  • 🔒nova-public Worker新規作成(公開5本のみ)・Service Binding設定・全施設ウィジェットURL変更・workers_dev=false → #1完全クローズ
v11.2
v11.2 MAJOR
FCグラフ新設(フォーキャストカテゴリ独立)
2026-08-23
  • 左メニューに「フォーキャスト」カテゴリを新設(予約と実績の間に配置)。FCグラフを独立パネルとして追加(ui-forecast-chart.js 新規作成)
  • 月次タブ:ブッキングカーブ(当年OTB緑実線・前年OTBグレー破線・FC目標赤破線・予算青破線)を表示。S3スナップショット53日分を間引き取得(約20〜25点)し折れ線グラフで描画。前年OTBはtotals.prev_year_roomsから取得
  • 月次タブ:セグメント別FC vs OTBブレットチャート(販売可能背景・FC目標薄色・OTB現在)を表示。右側にOTB室数・FC目標・達成率%を常時表示
  • 年次タブ:12ヶ月×FC/OTBの積み上げ横棒グラフ(セグメント色分け)。グラフ右側にOTB合計室数をFCは緑・OTBはグレーで常時表示
  • 年次タブ:月別サマリーテーブルにFC室数・OTB室数・予算室数・前年室数・販売可能・OTB/FC達成率を表示。右端に合計列を追加
  • 月次・年次タブ切替デザインをレベニューダッシュボードと完全統一。プルダウン表記を月次26/08・年次26/07~27/06形式に統一
  • KPIカード(FC目標・OTB室数・OTB/FC達成率・予算室数・販売可能)を月次上部に表示。達成率は80%以上=緑・50%以上=ゴールド・それ未満=赤で色分け
v11.1
v11.1 MAJOR
フォーキャスト セグメント別入力対応
2026-08-23
  • フォーキャスト入力にセグメント(第2層)別FC入力機能を追加。月行クリックでアコーディオン展開し、channel_layer2マスタに登録されたセグメント別に室数・売上を入力可能
  • セグメント入力値はリアルタイムで月合計行に反映(FC室数・FC売上・稼働率・ADR・RevPAR・予算比すべて即時更新)。各セグメント行にも稼働率・ADR・RevPARを表示
  • セグメント合計が月次FC室数に自動集計される設計(パターンA)。「この月を保存」ボタンでセグメントFCをDBに保存し、rm_forecast.forecast_roomsも同時自動更新
  • D1に forecast_segments テーブルを新設(facility_id / year_month / layer2_id / forecast_rooms / forecast_revenue)
  • Worker に /forecast-segments エンドポイントを追加(GET: 施設×年度の全セグメントFC取得 / POST: 月単位UPSERT+rm_forecast自動更新)
  • メインtable・セグメントtableをcolgroup固定幅で統一し、列を完全に揃えたレイアウトを実現
v11.0
v11.0 MAJOR
予約レポート全面刷新・PickUpペース独立・実績レポート年次グラフ追加
2026-08-23
  • 予約レポート(旧OTBペースレポート)を全面刷新。月次タブに稼働率5段階ヒートマップカレンダー(MON始まり・1日前/7日前PU表示・ピンク〜ネイビー色分け)を実装。年次タブにFY選択 × 月別OTB稼働率ヒートマップ(3ヶ月改行)を実装
  • PickUpペースを左メニューから独立した独自パネルとして分離(ui-pickup.js 新規作成)。月次タブに単月日別PickUp(比較元/先選択・日別テーブル・セグメント別)、年次タブにFY/月選択の月別PickUp(月別内訳・セグメント別合算)を実装
  • 実績レポートに年次タブを追加。指標選択プルダウン(総売上・室料売上・レストラン売上・稼働率・ADR・RevPAR・室数)× 年度選択で月次推移グラフを表示。実績(オレンジ実線)・予算(青破線)・前年(グレー点線)の3系列を固定色で描画
  • 実績レポートのグラフデータは予算行がある全月をカバー(S3実績がない未来月も予算・前年を通年表示)。前年レストラン売上は前年PMSデータから直接取得
  • 全レポートの施設プルダウンをEntra権限で絞り込み対応(ui-auth.js の filterFacilitySelects に otbFacilitySelect・puFacilitySelect・pmsActualsFacilitySelect を追加)
  • 予約レポートを毎回パネル再生成方式に変更(古いHTMLキャッシュによる otbSwitchView 未定義エラーを解消)
  • 左メニュー:OTBペースレポート → 予約レポートにリネーム。PickUpペースを予約カテゴリ配下に新規追加
  • 月次・年次タブデザインをダッシュボードと完全統一(surface2背景・border-radius:7px コンテナ・box-shadow付きアクティブ)
v10.6
v10.6 PATCH
Revenue ダッシュボード UI 全面ブラッシュアップ
2026-08-22
  • KPIカードを ACT・OTB で統一(室料売上・室数・稼働率・ADR・RevPAR の5枚)。ACT側の9枚から整理し、総売上は施設ブロック内の専用バナーとして別出し
  • 総売上バナー:ラベル+金額を横並び表示、前年比・予算比を下段に横並び。差分はM表記(¥138.23M 形式)でコンパクト化
  • 室料売上カードの大きい数値はフル表示(¥74,367,803)に変更。前年比・予算比のサブラインのみM表記を維持
  • 施設ブロックに薄グレー背景+カード枠を追加し、施設間の境界を明確化
  • 施設名を17px・bold に拡大、更新日を改行して下段に統一(ACT・OTB 全4ビュー共通)
  • ACT/OTB タブを「実績 ACTUAL / 予約 ON THE BOOKS」に変更。左メニューの OTB も「予約」に統一
  • プルダウン表示を短縮(月次: 26/08・年次: 26/07-27/06 形式)。月次/年次タブとプルダウンを同一行に横並び配置
  • 年次ビューの施設内 FYラベル・実績確定月表示を削除(上部プルダウンと重複のため)
  • OTB ヒートマップタイトルに「(室料売上)」を追記し、何の比較かを明示
  • 予算比カラーを gold → red に統一(プラス: 緑・マイナス: 赤)。ヒートマップの warn 色は 4色体系を維持
  • PC表示でタブ切替時のプルダウン幅変化によるレイアウトズレを固定幅コンテナで解消
  • サブタイトル(MONTHLY SUMMARY — ALL FACILITIES 等)を削除
v10.5
v10.5 MAJOR
指定管理料・学生室数・総売上予算対応
2026-08-21
  • D1 rm_budget に designated_mgmt_fee・student_rooms・total_revenue_budget・total_guests_budget・restaurant_detail カラムを追加。rm_actuals に designated_mgmt_fee・student_rooms カラムを追加
  • 予算入力(ui-budget.js v1.2.0):全施設に総売上予算・宿泊人数予算・レストラン別売上入力欄を追加。さくらい・SENVIEに指定管理料列、さくらいのみ学生室数列を追加。レストラン計は自動計算
  • 実績入力(ui-actuals.js v1.1.0):さくらい・SENVIEに指定管理料列、さくらいのみ学生室数列を追加
  • Revenueダッシュボード(月次・FY年次):さくらい・SENVIEの総売上KPIに指定管理料を加算。さくらいの稼働率・ADRを学生室数で補正(当月は日割り計算、確定月はフル月分)。総売上カードに total_revenue_budget との予算比を追加
  • nova_actuals_cache 更新処理(actuals.js):さくらいの room_nights・occ_rate・adr を学生室数補正済みで保存。さくらい・SENVIEの total_revenue に指定管理料を加算してキャッシュ
v10.4
v10.4 FIX
チャンネルマッピング重複バグ修正
2026-08-21
  • channel_mappings保存時にcsv_code2がNULLで渡っていたためUNIQUE制約が効かず、マッピングを保存するたびに同一コードが重複登録されていた問題を修正(channel-master.js・ui-channel-mappings.js両方でnull→空文字に統一)
  • channel_codes-scanのスキャン範囲を直近6ヶ月→全月に拡張。最新スナップショット1本×全月でコードを網羅的に収集するよう変更
  • 登録済みマッピング行に「✏️ 変更」ボタンを追加。クリックで編集モードに切り替え可能に(従来はセレクトボックスが常時表示されていたが変更不可だった)
  • DBのchannel_mappings重複レコードをクリーンアップ(MAX(id)を残して削除)
v10.3
v10.3 PATCH
AIモデル刷新・一元管理化 — GPT-5.6 Terra導入・個人API完全解消
2026-08-18
  • AIアナリスト・AI NOVAのモデルをClaude Haiku / GPT-4oからGPT-5.6 Terra(openai/gpt-5.6-terra)に変更。コンテキスト1M・長文読取精度向上・2026/07/30値下げ後はGPT-4.1と同コスト
  • AI NOVAプロファイル学習をGPT-5.6 Luna(openai/gpt-5.6-luna)に変更。会話終了時の軽量処理に最適・入力$0.20/1M
  • AI NOVAプロファイル更新が個人OpenAI API(api.openai.com)経由でgpt-4o-miniを直接呼んでいた問題を修正。CF AI Gateway経由に統一し個人APIへの流出を解消
  • pricing.jsにMODEL_CONFIGを新設。全機能(chatbot・hearing・mailbot・ai-assistant・ai-chef・otb-alert・ai-analyst・ai-nova・embedding)のモデル設定を一元管理。今後のモデル変更はpricing.jsだけ編集してデプロイすればOK
  • stripProvider()・getModelName()ヘルパー関数を追加。'openai/xxx'形式からcalcCostUsd用のプレフィックスなし形式への変換を統一
  • mail-bot.jsの独自embedding fetch実装をgetEmbedding()に統一。vector.jsのembeddingモデルもMODEL_CONFIG.embeddingから参照するよう変更
  • Responses API対応(GPT-5.6はChat Completions APIではなくResponses APIを使用)。output配列にreasoningとmessageが混在する構造に対応したパーサーを実装
v10.2
v10.2 MAJOR
AI NOVA RAG化 — 実績データ注入・D1キャッシュ基盤構築
2026-08-18
  • D1に nova_actuals_cache・nova_otb_cache テーブルを新設。全施設の実績(過去3年・月次)とOTB(向こう12ヶ月)をサマリーとして保存するキャッシュ基盤を構築
  • 毎日JST 11:30(UTC 2:30)に全施設分のキャッシュを自動更新するCronを追加。S3からデータを取得しD1にUPSERT
  • AIアナリスト(handleAnalystSummary)にD1キャッシュ取得を追加。analyst-summaryのレスポンスに actualsCache・otbCache を含めるよう拡張
  • buildAnalystSystemPrompt に実績データブロックを追加。施設別・月次の室料売上・稼働率・ADR・RevPARをプロンプトに注入
  • AI NOVA・AIアナリスト・OTBアラートAI所見の3機能が実績データを参照して回答・所見生成するよう対応。共通の buildAnalystSystemPrompt を経由するため設定変更が全機能に波及する設計
  • OTBアラート generateAIInsight に当該施設の実績キャッシュ(直近12ヶ月)取得を追加。予算・前年同日・実績の三軸でAI所見を生成
  • 実績JSONの宿泊部門 type_code が施設によって「FR」と「001」の2種類ある問題に対応(sankara・samana系は001、さくらい・SENVIE系はFR)
v10.1
v10.1 PATCH
バグ修正 — OTBアラート・実績ダッシュボード・UI整理
2026-08-18
  • OTBアラート【予算比】が「予算未入力」と表示される不具合を修正。D1の rm_budget から予算データを取得するコードが未実装だったため追加
  • OTBアラート【前年比】が「前年データなし」と表示される不具合を修正。前年スナップショットをS3から取得する方式から、OTBスナップJSON内の rooms_otb_prev_year / revenue_otb_prev_year フィールドを直接集計する方式に変更
  • OTBアラートの「前年比」表記を「前年同日比」に統一
  • 実績ダッシュボードの稼働率・RevPAR前年比が「データなし」になる不具合を修正。forecast-budget GETレスポンスに rm_actuals の available_rooms を追加し、前年販売可能室数を参照して計算するよう対応
  • セッティングメニューの表示権限を manager 以上から admin のみに変更(ui-auth.js)
  • 実績入力画面(ui-actuals.js)から「実績室数」「実績売上」の入力欄を削除。実績データはS3から取得するため、入力が必要なのは「販売可能室数」のみに整理
  • wrangler.toml の全Cronトリガーにコメントを追加(何の処理か一目で分かるよう整理)
v10.0β
v10.0β MAJOR
AI NOVA — 音声対話アナリスト(プロトタイプ)
2026-08-15
  • AI NOVA(nova.html)を新規実装 — adminロール限定の音声対話アナリスト。移動中でも音声でデータを確認できる、会議で施設近況報告ができる事を想定
  • グローバルナビに「🔮 AI NOVA」ボタンを追加(Revenue/Bot/Reportの下に全幅で配置、adminのみ表示)
  • スタート画面(全画面タップ)→ マイク権限取得 → OTBサマリー読込 → 挨拶音声再生 → 自動リスニング開始という一連のフローを実装
  • 音声認識:Web Speech API(STT)。施設名の誤変換を正規化(例:「賛美」「3B」→ SENVIEに変換)
  • AI回答:GPT-4o(個人OpenAI API経由)。OTBサマリーデータをコンテキストに含めてリアルタイム分析(承認が得られたらCF Gatewayに切り替え)
  • 音声合成:Google Cloud TTS ja-JP-Chirp3-HD-Leda(自然な日本語女性音声)。施設名の読み方を正規化(SENVIE→サンヴィ等)し数字を日本語単位に変換してから読み上げ(現在無料利用期間、承認が得られたら法人GCPの新規取引申請必要)
  • iOS対応:Web Audio API(AudioContext)方式で自動再生制限を回避。応答終了後に自動でリスニング再開
  • ORBタップで再生中の音声を即停止 → 割り込み質問が可能
  • NOVAシステムプロンプト実装(開発者のみ編集可):キャラクター設定・イースターエッグ・施設名認識ルール等を含む
  • nicknameカラムをusersテーブルに追加 — NOVAがログインユーザーを名前で呼ぶ
  • ユーザー管理画面に「NOVA呼称」入力欄を追加
  • /nova-speakエンドポイント:AI呼び出しとGoogle TTS変換を並列実行し、1リクエストで音声を返す高速化設計
  • 現在プロトタイプ運用中 — Google TTS(Chirp3-HD)はプレビュー無料期間中、AI(GPT-4o)は個人OpenAIアカウントで個人入金にて動作確認中。本格運用時は法人アカウントへの移行予定
v9.6
v9.6 PATCH
チャットボット — AI Gateway / 個人API 切り替え機能実装
2026-08-15
  • 環境変数 USE_GATEWAY(CFダッシュボード)を false にするだけでチャットボットのAI呼び出しをCloudflare AI Gateway経由から個人OpenAI API直接呼び出しに切り替え可能に
  • 実装目的:AI Gatewayのクレジット残高が不足した際のエスケープ手段。入金タイミングが間に合わない緊急時でも稼働中のチャットボットを止めずに乗り切るための設計
  • Gateway復帰時は USE_GATEWAY を true に変更してデプロイするだけで元に戻る。コード変更不要
  • リランキング処理(2箇所)・最終回答生成(1箇所)の計3箇所を切り替え対象とし、共通ヘルパー関数 runAI() に集約
v9.5
v9.5 PATCH
チャットボット — Good/Badフィードバック紐付け刷新・満足度表示修正
2026-08-13
  • feedbackテーブルにconversation_idカラムを追加 — Good/Bad押下時に該当回答のIDを直接紐付ける設計に刷新
  • feedback受け取り時にWorker側でsession_idから直近のassistant回答IDを自動取得・保存 — ウィジェット修正不要で実現
  • has_good / has_bad / GOODありBADありフィルターをmessage_content文字列比較からconversation_id直接紐付けに刷新 — 同一セッション内複数会話での誤マッチ問題を根本解決
  • 参考ページあり・複数会話・短時間連続、すべてのケースで正確にGood/Badを紐付け確認済み
  • 回答ログの満足度列にGood/Badバッジを表示するよう修正(ui-dashboard.js PC版・SP版)
  • handleConversationLogにsatisfaction_valueサブクエリを追加(会話全体の満足度も表示対応)
  • 全施設のシステムプロンプトに挨拶・お礼対応セクションをD1 SQLで一括追記 — 「こんにちは」「ありがとう」等の挨拶がリランク時にSP判定されて解決扱いになるよう対応
v9.4
v9.4 PATCH
チャットボット — 未解決フラグ判定ロジック刷新・システムプロンプト整備
2026-08-13
  • 未解決フラグ(is_resolved)の判定をAI依存からRAGヒット+SP判定ベースに刷新 — AIがを無視する問題を根本解決
  • FAQリランク時にシステムプロンプト全文も渡し「質問に答えられる場合はSPを返す」よう指示 — 追加API呼び出しゼロで実現
  • 固定FAQを除いたRAGヒット(FAQ/HP)またはSPのいずれかがあれば解決・すべてゼロなら未解決として機械的に判定
  • constraintPromptからUNRESOLVED関連指示をすべて削除(AIの自己判定に依存しない設計に統一)
  • 全施設システムプロンプトからUNRESOLVED記載をD1 SQLで一括削除
  • 奈良健康ランド システムプロンプトをカテゴリ番号(1〜16)で体系化・整理
  • 飲食店舗予約可否を表形式で明記(炎家・宴会場=可 / 桃源郷・天・パティオ・はしゃきっズ=不可)・ビュッフェ予約不可も明示
  • フロアマップURL追加・駐車場「24時間出入り自由」明記・プール料金「時期により変動あり」に変更
v9.3
v9.3 MAJOR
売上実績レポート — PMS実績データS3連携・KPI拡充
2026-08-12
  • 売上実績パネル新設(Revenueタブ)— 個人AWSアカウント S3(hnr-nova-dev)からPMS実績CSVをLambdaでJSON変換して取得(後日ITさんS3・wrangler.toml切替予定)
  • 施設・月セレクタ、S3 LIVE表示、更新日表示
  • KPIカード7枚(PC:グリッド / SP:スワイプカルーセル)— 総売上(税抜)・室数・室料売上(税抜)・人数・稼働率・ADR(税抜)・RevPAR(税抜)
  • KPI各カードに前年比・予算比を表示(OTBダッシュボードと同形式:%・差額・基準値)
  • 前年比:S3前年同月PMSデータ(総売上)・rm_actuals(室数・室料売上)を並行取得
  • 予算比:rm_budget(available_rooms / budget_rooms / budget_revenue)から取得・販売可能室数も予算入力値を使用(固定値撤廃)
  • 稼働率・ADR・RevPARの前年比・予算比も自動計算
  • 人数カードに「○○人/室」サブテキスト表示
  • 部門アコーディオン — 総売上(税込)を先頭に追加・展開で総売上(税抜)表示
  • 部門カード(宿泊関連・レストラン・スパ等)の金額に「税込」明記
  • ui-dashboard.js:他パネル表示中のDOM nullエラー修正(initResolveChart / updateKPI)
v9.2
v9.2 MAJOR
口コミレポート — 全OTA・グルメサイト横断分析
2026-08-12
  • 口コミレポート新設(Reportタブ)
  • 12施設対応(sankara / samana / さくらいの郷 / SENVIE / プラザ / 健康ランド / GRACIANI / DiJest / さくらいCAFE / 炎家 / 桃源郷 / 天)
  • 全施設KPIカード:サイト・件数/スコア切替・施設ごとに最新データ月を自動遡及・前月比・年月表示
  • サイト別スコア棒グラフ:満点で正規化し0〜100%表示・目標スコアライン(赤破線)を重ね表示
  • 年次比較グラフ:3FY重ね(7月〜6月)・件数/スコア切替
  • 月次一覧テーブル:全サイト横断・目標件数/目標スコア・達成フラグ表示
  • データ入力パネル:既存データを自動読込・目標件数/目標スコア入力対応・iOSズーム防止
  • D1テーブル:review_monthly(target_scoreカラム追加)・staffロールでもアクセス可
  • 過去Excelデータ(2024年〜2026年)を全施設一括移行
v9.1
v9.1 MAJOR
SNSレポート — Instagram月次KPI・全施設比較
2026-08-12
  • SNSレポート新設(Reportタブ)
  • 11施設対応(sankara / samana / さくらいの郷 / SENVIE / プラザ / 健康ランド / GRACIANI / DiJest / 炎家 / サウナ / キッズ)
  • 全施設KPIカード:指標切替(フォロワー/リーチ/インプレッション/投稿数等)・施設ごとに最新データ月を自動遡及・前月比・年月表示
  • 全施設比較グラフ:施設ON/OFF切替・指標切替・FY切替(7月〜6月)
  • 年次比較グラフ:施設×指標×3FY重ね表示
  • 月次一覧テーブル:全指標表示(フォロワー/リーチ内訳/インプレッション/アクション/投稿数/CV率等)
  • データ入力パネル:既存データを自動読込・iOSズーム防止
  • D1テーブル:sns_instagram_monthly新設・staffロールでもアクセス可
  • 過去Excelデータ(2023年〜2026年)を全施設一括移行
v9.0β
v9.0β MAJOR
AIアナリスト — OTBレベニュー分析エンジン(β版)
2026-08-09
  • AIアナリストをOTBレベニュー分析専用に全面刷新(BigQuery廃止・S3+D1に移行)
  • 5施設×FY12ヶ月分のKPI(稼働率・ADR・RevPAR・予算比・前年比)を自動取得・Claude Haikuが分析
  • 過去月は月末スナップショット・当月以降は最新スナップを自動選択(7月〜の実績も表示)
  • FY年度プルダウン(7月〜6月・現在FY±1を自動生成)
  • インタラクティブ施設ビューカード(施設×項目×比較対象の3プルダウン・月別バー表示)
  • 質問履歴をsessionStorageに永続化(リロード後も復元)
  • 補足知識設定パネル(admin専用・折りたたみ・需要特性・戦略方針を自由記述)
  • 施設横断での絶対値比較を禁止・リードタイム考慮の回答ルールをプロンプトに組み込み
  • OTB週次Teamsアラートにai所見を自動追加(Claude Sonnet)
  • PC/SP完全分離レイアウト・Shift+Enter改行対応
  • β版:実績データ未連携・OTBデータのみで分析(今後実績連携により精度向上予定)
v8.1
v8.1 MAJOR
PickUpペースレポート新設
2026-08-03
  • OTBペースレポートに「PickUpペース」タブを新設(OTBレポートとタブ切替)
  • 比較元・比較先スナップショットを自由選択(比較先デフォルト:当日、比較元デフォルト:7日前)
  • 滞在月選択に「全期間」「FY年度(7月〜6月)」「月別」の3段階を追加
  • KPIカード:PickUp室数・売上を大きく表示(スマホはスワイプカルーセル対応)
  • 月別内訳テーブル(PC)/ カード形式(スマホ)で宿泊月ごとのPickUpを表示
  • セグメント別合算表示(全月合算・室数の大きい順に並び替え)
  • 月またぎPickUp計算に対応(TO日が月末を超える場合は末日スナップで自動代替)
  • 比較日数バッジ表示(「+7日間」など選択後に即表示)
v8.0
v8.0 MAJOR
全画面スマホ対応(レスポンシブ化)
2026-08-02
  • 全17ページをスマホ対応(768px以下でモバイルレイアウトに自動切替)
  • ハンバーガーメニュー導入(モバイルtopbar + スライドインサイドバー)
  • ページ記憶機能追加(リロード後も直前のページを復元)
  • モードボタンタップでナビ展開(Bot/Report/Revenue を1タップで切替・展開)
  • Revenue Dashboard・OTBレポート:KPIカードをスワイプカルーセル化、フォント大型化
  • OTBペースレポート:日付列を横スクロール固定(left:sticky)、RevPAR追加
  • Revenue Dashboard:年次ビューのヒートマップをカルーセル(7枚)に対応
  • チャットボット・回答ログ・ユーザー管理など各テーブルをカード形式に切替
  • カテゴリ並び替え:スマホで↑↓ボタン方式に(PCはD&Dのまま)
  • CSVインポート:スマホでは「PCからご利用ください」メッセージを表示
  • メールボット・AIアシスタント・AIシェフ:2カラム→1カラム縦積みに
  • ユーザー管理:デバイス記録機能追加(PC / iOS / Android をログイン時に自動判定)
v7.7
v7.7 MAJOR
年次Revenue Dashboard・チャンネルD&D順序変更
2026-08-01
  • Revenue Dashboardに年次ビュー追加(月次/年次タブ切替・7月〜6月会計年度対応)
  • 年次ビュー: 年度プルダウン自動生成(FY表記・S3月リストから算出)
  • 年次ビュー: KPI5枚(OTB室数・売上・稼働率・ADR・RevPAR)年間累計・前年同日比・予算比
  • 年次ビュー: 月別売上達成率ヒートマップ(対前年同日・対予算を別カードで表示)
  • スマホ: カルーセル7枚(KPI5枚+対前年ヒートマップ+対予算ヒートマップ)
  • チャンネルコード画面にD&Dによる表示順変更機能追加(display_orderカラム)
  • リロード時のページ記憶復元(startApp内でrestoreLastPage呼び出し)を修正
v7.6
v7.6 MAJOR
チャンネルマッピング・RevPAR・セグメントドリルダウン
2026-07-31
  • チャンネルコード登録画面追加(第1層/第2層/第3層の3階層マスタ・コード+名称のCRUD)
  • チャンネルマッピング画面追加(S3のOTBデータからコードを自動収集・D1に蓄積・3層プルダウンで紐付け)
  • OTBペースレポートのセグメント列にチャンネルマッピング第2層を反映
  • セグメント分析に第2層集計表示・クリックで第3層(詳細経路)を展開するドリルダウン機能追加
  • Revenue DashboardにRevPAR追加(売上÷販売可能室数・予算ベース・前年同日比・予算比)
  • KPIカード5列レイアウト対応(横スクロールなし)
  • D1に channel_layer1/2/3・channel_mappings・channel_code_sources テーブル追加
v7.5
v7.5 MAJOR
OTB週次Teamsアラート自動配信
2026-07-28
  • OTB週次アラートをTeamsに自動送信(毎週月曜 JST 11:00・Cron駆動)
  • 対象施設:sankara / さくらいの郷 / SENVIE / samana / 奈良プラザ(5施設・各施設チャンネルに個別送信)
  • 今月・来月の OTB室数 / 稼働率 / ADR / 売上 / 前年比 を表示
  • 7日間PickUp差分(先週比)をセグメント別に表示・増減を▲▼カラーで視認化
  • Teams Workflows(Power Automate)経由・Adaptive Card形式で送信
  • さくらいの郷はチャンネルコード999(住込み学生)を除外して集計
v7.4
v7.4 MAJOR
チャットボット週次FAQアラート(Teams自動通知)
2026-07-28
  • 未解決FAQ週次レポートをTeamsに自動送信(毎週水曜 JST 9:00・Cron駆動)
  • 対象施設:sankara / さくらいの郷 / SENVIE / samana / 奈良プラザ / 健康ランド(6施設・各施設チャンネルに個別送信)
  • 未解決フラグ(is_resolved=0)の質問+AIの回答をセットで表示・👎フィードバック件数・週次利用数も合わせて通知
  • Teams Workflows(Power Automate)経由で送信・Adaptive Card形式(Incoming Webhook廃止対応済み)
  • 未解決・不満足ともにゼロの施設は送信スキップ(ノイズ抑制)
v7.3
v7.3 MAJOR
セグメント分析パネル追加
2026-07-28
  • セグメント分析パネル新設(NOVA-revenue メニューに追加)
  • S3からセグメントデータを読み込み・月セレクタで対象月切替
  • OTB / PickUp / Forecast / 予算 / 前年実績 の横断セクション表示
v7.2
v7.2 PATCH
KPI表示フォーマット統一・月セレクト改善・S3ページネーション修正
2026-07-25
  • Revenue Dashboard・OTBペースレポート:KPI表示フォーマットを統一(室数: ○% ±○室 / ○室、売上/ADR: ○% ±¥○ / ¥○、稼働率: ±○pt ○○%)
  • Revenue Dashboard・OTBペースレポート:前年比・予算比の両行を全KPIカードに表示
  • 平均稼働率:前年分母を前々年予算→前年実績(rm_actuals.available_rooms)に変更。改修日ズレによる稼働率誤差を解消
  • 前年同日・予算比の稼働率サブラインに販売可能室数を括弧表示(例: +1.6pt 52.1%(850室))
  • Revenue Dashboard・OTBペースレポート:滞在月セレクトをプルダウン化(昇順・過去月から将来12ヶ月まで表示、デフォルト現在月)
  • OTBペースレポート:初回表示の白画面バグを修正(月一覧取得→スナップショット取得の直列実行化によるレースコンディション解消)
  • S3 List API:AWS署名V4のクエリパラメータをアルファベット順にソートするよう修正。ページネーション(continuation-token)が正常動作せず月一覧が最大1000件で打ち切られていた問題を解消(max-keys=10000に拡張)。※将来的に件数が増えても約6年間は問題なし(現在約1,200件/月120件増加ペース)
v7.1
v7.1 PATCH
Revenue Dashboard 精度向上・OTBレポート改善
2026-07-23
  • Revenue Dashboard:稼働率・ADRの前年比を実績テーブル(月合計)から前年同日OTBデータベースに変更
  • Revenue Dashboard:稼働率前年同日比の分母に前々年予算の販売可能室数を使用(前々年予算未入力時は「-(前々年予算未入力)」表示)
  • Revenue Dashboard:OTB室数カードに前年同日の室数・予算室数を表示(例:前年同日: +15室 / 468室 (103%)、予算比: 103%(予算470室))
  • OTBペースレポート:スナップショット日以前の行(確定データ)を青系背景色で色分け表示
  • 管理画面パネル切替のdisplay管理を統一(display:flexが必要なパネルをallPanelsから分離・デグレ防止)
v7.0
v7.0 MAJOR
管理画面 3モード分割・Revenue Dashboard
2026-07-23
  • 管理画面ナビゲーションを Bot / Report / Revenue の3モードに分割(サイドバー上部のモード切替ボタンで即時切替)
  • NOVA-bot:チャットBot / ヒアリングBot / メールBot / AIアシスタント / AIシェフ / 施設設定 / ユーザー管理
  • NOVA-report:レポートダッシュボード / sankaraイレギュラーレポート / 経路別実績(SOON)/ ウェブアクセス(SOON)/ 日報(SOON)
  • NOVA-revenue:Revenueダッシュボード / OTBペースレポート / 予算・実績・フォーキャスト / AIアナリスト(SOON)/ レベニューエージェント(SOON)
  • Revenue Dashboard 新設:全5施設(sankara・samana・さくらいの郷・SENVIE・奈良プラザ)のOTB月次KPIを一覧表示(室数・売上・稼働率・ADR・前年比・予算比)
  • Report Dashboard 新設:sankaraイレギュラーレポートのKPIカード(通算件数・最多カテゴリ・表示期間)を表示
  • OTBレポートのピックアップ表示記号を ▲▼ から +/- に変更(ビジネス文脈でのマイナス誤読防止)
v6.8
v6.8 FIX
OTBレポート 稼働率修正・白画面バグ修正
2026-07-23
  • OTB稼働率の分母を固定値から予算パネルの販売可能室数(月合計)に変更(月合計 ÷ 日数 = 1日あたり販売可能室数で計算)
  • 予算未入力の月は稼働率を「-」表示(KPIカード・日別テーブル両方)
  • OTBレポート初回クリック時に白画面になるバグを修正(DOM作成後に display:flex を明示セット)
  • OTBパネルの初期化を初回のみDOM構築・2回目以降はデータ再取得のみに変更(二重初期化防止)
v6.7
v6.7 FEATURE
予算・実績・フォーキャスト入力パネル追加
2026-07-18
  • 予算入力パネル追加(施設・年度別・7月始まり12ヶ月・販売可能室数/予算室数/予算売上を入力・稼働率/ADR/RevPAR自動計算・年間合計行表示)
  • 実績入力パネル追加(予算と同構成・昨年度をデフォルト表示・将来的にPMS自動連携予定)
  • フォーキャスト入力パネル追加(手動FC室数/売上入力・販売可能室数は予算から引き継ぎ・OTB実績・予算比を同一画面に表示)
  • D1に rm_budget / rm_forecast / rm_actuals テーブル新設(UPSERT対応)
  • Worker に /forecast-budget・/forecast・/actuals エンドポイント追加
  • OTBスナップショット選択を年/月/日の3段階プルダウンに変更(全期間対応)
  • 入力値保存バグ修正(querySelectorをパネルスコープ内に限定・他パネルのDOMと競合しない設計に変更)
v6.6
v6.6 PATCH
OTBレポート ピックアップ表示追加
2026-07-16
  • OTBテーブルに「1日前比」「7日前比」列を追加(ピックアップ室数を +/- 形式で表示)
  • スナップショット選択時に1日前・7日前データをS3から並列取得、差分を自動計算
  • 対象スナップショットが存在しない場合は「-」表示でフォールバック
  • KPIカード・テーブルの売上を万円表記から全数値表示に変更
v6.5
v6.5 PATCH
FAQ英語翻訳機能実装
2026-07-16
  • FAQ登録時に英語訳(question_en / answer_en)を自動生成・D1に保存
  • 日本語入力後に英語を自動生成する2パス方式を採用(施設ごとに順次対応)
v6.4
v6.4 PATCH
チャットボット会話履歴の永続化
2026-07-08
  • チャットボット会話履歴をlocalStorageに保存(ページ遷移・更新後も24時間復元)
  • sankara・land・plaza・senvie・dijest:core widget対応(施設ファイル分離済み)
  • samana:インラインコードをSSEストリーミング対応に移行
v6.3
v6.3 PATCH
2026-07-07
  • HPクロールからFAQページ除外
v6.2
v6.2 PATCH
チャットボット回答時間短縮、参考ページ出力
2026-06-27 〜 2026-06-28
  • FAQの回答時間を短縮(FAQ/HPのVectorizeを並列化)
  • FAQの回答時間を短縮(ストリーミング回答)
  • 参考ページリンクを出力(回答がHPを参照している場合)
v6.0
v6.0 MAJOR
RAG v2 + フロントエンド大規模リファクタリング
2026-06-09 〜 2026-06-11
  • リランキング実装(ハイブリッドRAGからGPT-4.1miniで回答にランキング情報を付与、AIに渡す回答を選別)
  • ハイブリッドRAG実装(バイグラム検索+Vectorize ベクトル検索の組み合わせ)
  • Cloudflare Vectorize導入・FAQ 585件を自動ベクトル化
  • index.html パネル分割(1,492行 → 167行・89%削減)・lazy load実装
  • HPクロール改修(Browser Rendering API廃止・日本語URL対応・Cron安定稼働)
  • イレギュラーレポート D1移行完了(446件インポート)
  • AIシェフ機能追加(samana向けレシピ・アレルゲン対話)
  • AIアシスタント CSVダウンロード機能追加
  • 全施設一括クロールボタン実装(admin限定)
  • ユーザー管理 最終ログイン日時表示追加
  • 満足度・フィードバック集計の修正・正常化
v5.0
v5.0 MAJOR
FAQ管理強化・ハルシネーション対策
2026-06-05 〜 2026-06-06
  • FAQ カテゴリ絞り込みフィルター追加
  • FAQ 編集モーダル実装(インライン編集)
  • is_publicフラグ追加(FAQページ・Schema.org掲載制御)
  • 固定FAQ機能実装(is_fixed・AI呼び出し前に先行返却)
  • スコア0フォールバック廃止・ハルシネーション対策強化
  • システムプロンプト改善(情報外は「確認が必要」と回答)
  • FAQカテゴリ D&D並び替え実装
v4.0
v4.0 MAJOR
本番環境稼働・Entra ID認証
2026-05-中旬
  • 本番環境構築完了(ITさんアカウント移管・Worker / Pages / D1)
  • Microsoft Entra ID 認証実装(JWT署名検証・施設判定)
  • ロール4段階実装(staff / reservation / manager / admin)
  • 複数施設所属対応(プルダウン切替)
  • テスト環境→本番 データ移行完了(FAQ 585件・カテゴリ 42件)
  • usage_logs テーブルによるコスト一元管理
  • Resend メール送信・sankara DNS認証完了
v3.0
v3.0 MAJOR
管理ダッシュボード・メールボット・HPクロール
2026-04-下旬 〜 05-上旬
  • 管理ダッシュボード実装(統計・ログ・FAQ管理・ユーザー管理)
  • メールボット(/mailbot)実装
  • HPクロール機能実装(Cronで自動・手動実行対応)
  • AIアシスタント(/assistant-chat)実装
  • イレギュラーレポート実装
  • CF AI Gateway設定(gw-guest / gw-staff / gw-analyst)
  • 9施設対応・Cron 1施設1トリガー構成
v2.0
v2.0 MAJOR
ヒアリングボット・AI機能拡張
2026-04-上旬 〜 中旬
  • ヒアリングボット(/hearing-chat)実装
  • AIアナリスト(/bq-chat)実装
  • FAQ バイグラム検索(全文検索)実装
  • 多言語対応(英語質問→日本語FAQ→英語回答)
  • 施設プロンプト・カテゴリ管理 DB化
v1.0
v1.0 MAJOR
NOVA 初期構想
2026-03-下旬
  • Cloudflare Workers + D1 + Pages 環境構築
  • チャットボット(/chat)初期実装
  • FAQ D1管理・施設別フィルタリング
  • CORS設定・環境変数管理