DEMO TO PRODUCTION
セミナー用デモはそのまま残し、顧客本番はサブドメイン・共通SQL・統一マスタ・AIキー方針で段階的に切り出します。おおむね 8割共通・2割カスタム を目標に進めます。
複数デモ連携のため、tenant / employee / customer / location の正規名と ID 対応表を DX/demo/shared/ に置きました。
いきなり全部本番化せず、1デモ × 1社 × 固定テナント でリハーサルするのが安全です。通常デモの「業種切替」は本番練習では出ません。
パス URL(今すぐ): /DX/practice/sites/yamada/ · サブドメイン(DNS後): yamada.astropro.net → ドキュメントルートを sites/yamada/ に
DX/demo/ はセミナー・商談用の「触れるサンプル」として維持。本番は別ホスト・別DB・別設定で動かし、デモを壊さない。
コア(認証・テナント・マスタ・API)は共通化。業種ラベル・画面項目・ワークフロー分岐だけ顧客ごとに差し替える。
デモ用と本番用でリポジトリを分けない。設定(環境変数・tenant_id・feature flag)で切り替える。
すでにバックエンド化済みの booking・物品ナビ(item)から。JS-only デモは schema 確定後に API 化。
1つのコードベースを、ホスト名と設定で「デモ」と「顧客本番」に分岐させます。
EFFY 予約は別製品として維持。サロン予約の本命は EFFY、Dコンサル伴走デモは booking デモが参考、という現行方針はそのままです。
一度に全部やらない。Phase 0 でルールを決め、Tier 1 から実案件に載せていきます。
デモを量産する前に、名前・テナント・AI・DB のルールを決める。
すでに PHP + API がある予約ポータルと物品ナビを先に実案件へ。
booking / 物品ナビ で重複している bootstrap・CSRF・API 応答を共通化。
multilang → knowledge / stocknavi の順でバックエンドを実装。
デモごとにバラバラな「担当者」概念を1つの employee モデルへ。
MockAI / localStorage をサーバー側 AI プロキシに置き換え。
現状の棚卸しです。改訂したらこのページの配列を更新してください。
| デモ / 製品 | 段階 | SQL | バックエンド | テナント | 次のアクション |
|---|---|---|---|---|---|
| EFFY予約 | 製品 | 別製品 | 本番済 | 製品側 | Dコンサル導線から紹介のみ |
| 予約ポータル (booking) | Tier 1 | bk_* schema.sql あり | PHP+SQLite/MySQL | ?t=slug(要サブドメイン化) | Phase 1 最優先 |
| 物品ナビ (item) | Tier 1 | ledger.json(デモ同期) | PHP+Ajax | なし(要追加検討) | Phase 1 |
| 多言語 (multilang) | Tier 2 | JSON(要 SQL 化) | PHP+Perplexity | なし | Phase 3、APIキー tenant 化 |
| ナレッジ (knowledge) | Tier 3 | kn_* schema.sql(未実装) | JS only | なし | Phase 3 |
| 在庫ナビ (stocknavi) | Tier 3 | sn_* schema.sql(未実装) | JS only | companyId(JS) | Phase 3 |
| ワークデスク (flow) | Tier 4 | なし | JS+localStorage | staff/managers 独自 | Phase 4 マスタ統一後 |
| シフト (shift) | Tier 4 | なし | JS | companies[] | employee 統一 |
| 顧客ナビ (crm) | Tier 4 | なし | JS | 業種別担当キー | lexicon + extension |
| 経営ボード (board) | Tier 4 | なし | JS | companies | API 化は後回し可 |
| ガント (gantt) | Tier 4 | なし | JS | 担当者文字列 | employee_id 参照へ |
| AIデモ群 (ai) | Tier 4 | なし | Mock/localStorage | なし | Phase 5 AiGateway |
| asis-flow | Tier 4 | — | 静的 | — | 本番化対象外(資料) |
schema / データ: demo/booking/schema.sql · demo/item/data/ledger.json · demo/knowledge/schema.sql · demo/stocknavi/schema.sql
デモごとにバラバラな名前を、Phase 4 で1モデルに寄せます。UI の日本語ラベルだけ業種 lexicon で変えます。
| 現状(デモ別) | 目標(共通) |
|---|---|
booking: bk_staff / bk_resource.role=staff |
employee(ログイン可)+ bookable_resource(予約対象) |
flow: staffId, managers[], worker/manager |
employee_id + role(approver 等) |
shift: companies[].staff[] |
tenant + employee |
crm: stylist, attorney, primaryNurse… |
employee + industry_lexicon(表示名のみ差替) |
gantt: 担当者文字列 |
assignee_employee_id |
詳細: 共通マスタ仕様 · 段階手順: マスタ統一手順 · 目標テーブル例: core_tenant · core_employee · core_location(将来。現状は shared JSON がソース)
顧客ごとに URL を分け、データは tenant_id で行分離します(booking がすでに近い形)。
{slug}.astropro.net → tenants.slugdemo.astropro.net 固定?t=midori|food|trim で切替/t/{slug}/ も許容multilang がすでに .env の Perplexity 読み込み・レート制限・モック fallback を持っています。これを全 AI 機能の標準にします。
| 利用形態 | APIキー | 制限 | フォールバック |
|---|---|---|---|
| デモ / セミナー | AstroPro 共用 Perplexity(.env) | max_calls / 時間制限(multilang と同型) | モック応答 |
| POC・小規模本番 | 共用キー + tenant 別利用量ログ | 月次上限アラート | キー未設定時は機能オフ |
| 本格本番 | tenant_settings.ai_api_key(暗号化保存) | 顧客自身の契約・上限 | 管理画面でキー入力を促す |
実装参照: demo/multilang/lib/perplexity.php · demo/multilang/lib/secret.php
booking の lexicon_json(legal テンプレで「担当者」等)が、2割カスタムの先行例です。
案件(cases.php)で「どのデモを本番化するか」決まったら、以下を案件フォルダまたは Notion で管理。