← Files BeautyLinks 店舗サポートARCHIVED FILE

skills/beautylinks-support/references/code-availability.md

4.33 KB · Oct 4, 2026 · 12:34 UTC

↓ Download file

# コード照合:空き枠と時間計算

確認版:`source-index.md` の F・B(2026-09-20)。原本p.19・31〜34・39〜42・88と併用する。根拠のコード断片は A1〜A4。

## 予約枠がない

まず、どの画面のどの日付で、どのメニュー・担当・顧客を選んでいるか、会話から分かる情報を使う。必要なときだけ不足1点を質問する。

| 確認順 | コードから分かる条件 |
| --- | --- |
| 営業日・営業時間 | 通常営業、休業日、特別営業時間の重複を確認。優先順は下記の実装差に注意。 |
| スタッフ勤務 | 通常勤務がない/休みなら枠なし。例外勤務がある日にはその勤務/休みを使う。店舗営業時間とスタッフ勤務の重なる時間だけを扱う。 |
| 公開・対応メニュー | 公開中スタッフを対象とする。「すべてのメニューに対応可能」がOFFなら、選んだ全メニューに対応している必要がある。 |
| 施術の終了時刻 | 開始時刻だけが空いていても不十分。施術終了まで勤務時間帯に収まり、他の予約と重ならないことが必要。顧客別・セットの時間も確認。 |
| 予約ルール・既存予約 | 対象画面の受付期間・締切を確認する。LINEのルールを管理画面手動予約へそのまま当てはめず、使われる処理を確認する。保存時にも空き枠を再検証する。 |

勤務の変更は「スタッフ管理 → 対象スタッフ → 通常勤務 → 通常勤務を保存」。対応メニューは「対応メニューを保存」。例外勤務・営業時間は対応する原本手順で保存する。設定変更後は同じ顧客・メニュー・日時で予約枠を確認する。既存予約が勤務変更だけで自動移動するとは言わない。

## 特別営業時間と休業日の実装差

説明書p.88は「休業日は特別営業時間より優先」と説明している。一方、確認したコードには次の差がある。

| 処理 | 確認した順序 | 適用範囲 |
| --- | --- | --- |
| B `AvailabilityService.get_store_periods` | 特別営業時間があればその設定を返す。その後に休業日、通常営業時間を確認 | 管理画面のカレンダーと料金付き新規予約の保存で呼ばれることを確認 |
| B `business_hours.get_hours_for_date` | 指定休業日・毎月の休業を先に確認し、その後に特別営業時間 | 営業時間の共通関数。関数の存在だけで全LINE経路の最終挙動を断定しない |

「どちらが絶対優先?」には全画面共通の答えを作らない。管理画面で確認した実装では特別営業時間が先だが、別処理と原本に差があると伝える。対象日と、管理画面かLINE側かを確認する。両設定が重なっている場合、意図した営業/休業になるよう対象日の設定を照合し、結果を確認する。これは回答資料の差分確認であり、本番アプリの不具合を修正済みとは言わない。

## 顧客別・セット所要時間

- 単品は有効な顧客別時間を優先し、なければメニュー標準時間を使う。
- 明示的にセットを選択した管理画面予約では、顧客別セット時間 → セット標準時間 → 単品時間の合計の順に解決する。
- 単品の選択内容がセットと一致して自動的にセットと判定された場合は、顧客別セット時間がなければ、顧客別の単品時間の合計がセット標準時間より優先される分岐がある。
- したがって「単品に顧客別時間を入れれば、どのセット予約も必ずその合計になる」とは答えない。明示的なセットか、単品からの自動判定かとプレビューの時間を確認する。
- この優先順は B `api/admin/reservation_pricing_routes.py` の `_menu_context` → `api/admin/routes.py` の顧客別時間解決に基づく。別のLINE用計算を管理画面と同じと決めつけない。

「休み」と「時間外」と「既存予約あり」は別の不成立理由。ただし店舗休業でも同じ「出勤していません」というメッセージになる経路があるので、その文言だけでスタッフ勤務だけが原因と断定しない。

SHA-256: cc8c182c1e8d4a595f4ebbb2d2222938be7a4dcce4bb871bd15d330eabca848f