提案: 空き枠を即答→枠確定後にスタッフ確保→人間がSquareで予約作成→確定連絡、の4ステップで進めます。
🖱 図形にホバー=判定条件と根拠 / 色付き図形をクリック=チェック→承認 / 分岐は下の「デモ操作」で進行
🎮 デモ操作
YES · 枠決定
別日希望
24h無応答
さらに24h
◯ 確保
✕ 48h応募なし
📥 問い合わせ受信 → コンテキスト収集
条件・データ
- 会話SoR+Square+シフトカレンダー+マニュアル+FAQを収集しL0/L1判定
- L1根拠: 返信1通で完結しない(枠決定→担当確保→予約作成)
📎 読取のみ=承認ゲート対象外・対外送信なし
💬 SEND_LINE 承認: 拡張内
Step 1 お客様へ空き枠+祝日料金を返信
7/20 は 14:00〜 / 7/21 は 12:00〜・14:00〜
判定条件・根拠
- 7/20 空き=14:00(Square予約済 12:00/16:00/18:00)
- 7/21 空き=12:00・14:00(予約済 16:00/18:00)
- 祝日料金+¥5,000 = 7/20 海の日 → マニュアル p.8(AI自主検知)
📎 Square Bookings API(読取のみ)/ マニュアル p.8
分岐条件
- 返信はWebhook(会話SoR)で自動検知
- 24h無応答 → リマインド経路(送信=要承認)
- 再提案は最大2回。以降は人間へ引き継ぎ
📎 Firestore copilot_jobs + Cloud Scheduler
💬 SEND_LINE 承認: Slack
別日を再提案(1/2回)
7/22 14:00〜 / 7/24 10:00〜・14:00〜
↺ 送信後は「お客様の返信は?」へ戻る
条件
- 候補はSquare実データの空き枠のみ(推測禁止)
- 2回不成立→人間へ引き継ぎ
📎 Square Bookings API
💬 SEND_LINE 承認: Slack
リマインドを1通(のみ)
枠が埋まりやすい旨をやわらかく
条件
- リマインドは1通だけ(しつこくしない)
- その後さらに24hでクローズへ
📎 Cloud Scheduler タイマー
💬 SEND_LINE 承認: Slack
Step 2 このグループへ担当スタッフ募集
7/20 14:00-16:00 · シフト未アサインのため
判定条件・根拠
- 募集根拠: シフトカレンダー 7/20 14:00枠=担当【__/××】(未アサイン)
- 同日 12:00-14:00 は担当【ゆい/××】=連続稼働になるため自動候補にしない
- Square Labor シフト未登録(両ソース一致)
- ⏱ 48h 応募なしで ✕ 経路へ
📎 シフト / 六本木店(Googleカレンダー・PIIマスク)/ Square Labor API
分岐条件
- グループの応募返信をWebhook蓄積から検知
- 確保後、カレンダー担当欄【ゆい/××】への記入もチェックリスト化
📎 Firestore staff_line_messages / シフトカレンダー担当欄
⚠ ESCALATION
管理者へSlack通知+別日提案を用意
担当不在のまま確定連絡はしない
↺ 別日再提案(承認待ち)へ
条件
- Slack通知=対外送信でない→承認不要(事実通知)
- お客様向け文面のみ承認ゲート
📎 #proj-line-copilot
🧾 SQUARE_MANUAL 人間の画面作業
Step 3 Squareで予約作成(担当者)
AIは実行しない=完了の記録のみ
なぜ人間か(恒久ルール)
- Squareの作成・変更はエージェント禁止(予約テスト事故の教訓)
- APIトークンも読取スコープのみ=物理的に書けない
📎 EXP-168 §社内制約
💬 SEND_LINE 承認: Slack
Step 4 お客様へ確定連絡+当日案内
送信条件: Step 3 完了記録あり
判定条件
- Square予約実体と日時・人数一致を確認してから送信
- 当日案内=公開FAQ / 料金注記=マニュアル p.8
📎 公開FAQ / Square予約(実体確認)
🗂 監査ログ+往復記録 → 完了
記録内容
- 誰が承認・いつ・何を(staff_line_outbound=恒久)
- 提案の版履歴(copilot_drafts=365日)/ model+所要秒(copilot_jobs=30日)