完了 完了
tenant / employee / customer / location の正規名・別名・サンプル ID を JSON で定義。ソースオブトゥルースは DX/demo/shared/。
主なファイル
DX/demo/shared/master-manifest.jsonDX/demo/shared/master-seed.json
確認(Docker)
依頼例: Step 01 は完了済み。Step 02 から続けてください。
MASTER UNIFICATION
全デモの変数名をいきなり揃えず、Step ごとに Docker で確認しながら進めます。「Step 12 まで」のように番号で依頼できます。
http://localhost:8080/DX)で開き、デモが壊れていないこと0 / 0 完了
原則: 正規名を追加 → 動作確認 → 旧名は残す。Step 24(legacy 削除)は最後だけ。
| Phase | 内容 | 目安 |
|---|---|---|
| 0 | shared JSON / ローダー / 主要デモ読込 | 完了済み |
| A | tenantSlug · yamada 解決 | 0.5〜1 日 |
| B | 士業 crm ↔ booking 縦スライス | 1〜2 日 |
| C | 美容 flow / shift / board | 1〜2 日 |
| D | crm 内部 customer 移行 | 1 日 |
| E | その他・対象外明記 | 半日 |
| F | DB · 本番練習 tenant | 1〜2 日(22 は任意) |
| G | 回帰 · legacy 削除 | 3〜5 日 |
Phase 0 — 共通基盤(shared)
tenant / employee / customer / location の正規名・別名・サンプル ID を JSON で定義。ソースオブトゥルースは DX/demo/shared/。
主なファイル
DX/demo/shared/master-manifest.jsonDX/demo/shared/master-seed.json確認(Docker)
依頼例: Step 01 は完了済み。Step 02 から続けてください。
dx_master_resolve_tenant_slug() 等のヘルパーと、ブラウザ用 DXMaster.* を用意。inline-master.php で seed を window に載せる。
主なファイル
DX/demo/shared/Master.phpDX/demo/shared/master-seed.jsDX/demo/shared/inline-master.php確認(Docker)
依頼例: Step 02 まで確認済み。Step 03 から。
booking / flow / shift / crm の index.php 先頭で shared を require / script 読込。壊さないため既存 data.js はそのまま、shared は「上書き用の参照源」として追加。
主なファイル
DX/demo/booking/index.phpDX/demo/flow/index.phpDX/demo/shift/index.phpDX/demo/crm/index.php確認(Docker)
依頼例: Step 03 まで完了。Step 04(テナント slug 統一)から。
Phase A — テナント slug の統一
crm data.js の各 company に tenantSlug を追加。law → midori は済。salon / retail 等も master-seed の slug と 1:1 に。
主なファイル
DX/demo/crm/assets/data.jsDX/demo/shared/master-manifest.json確認(Docker)
依頼例: マスタ統一手順 Step 04 まで。crm 全 company に tenantSlug を付与し、manifest の tenantAliases と一致させてください。各 Step の確認 URL を Docker で開き、デモが壊れていないこと。
flow / shift / board / stocknavi / gantt の app.js(または data 読込後)で、companyId や scenarioId から tenantSlug を解決する 1 行を追加。直書き slug を減らす。
主なファイル
DX/demo/flow/assets/flow.jsDX/demo/shift/assets/shift.jsDX/demo/board/assets/board.jsDX/demo/stocknavi/assets/app.jsDX/demo/gantt/assets/gantt.js確認(Docker)
依頼例: マスタ統一手順 Step 05 まで。flow/shift/board/stocknavi/gantt で DXMaster.resolveTenantSlug を company 切替に組み込んでください。Docker で各デモを開いて確認。
gantt は scenarioId をキーにしている。master-manifest.json の scenarioTenantMap と各 scenario の tenantSlug を揃え、gantt.js は DXMaster.resolveDemoTenantSlug('gantt', …) で参照。仕様は 共通マスタ仕様 のガント表を参照。
主なファイル
DX/demo/shared/master-manifest.jsonDX/demo/gantt/assets/gantt.jsDX/demo/gantt/assets/data.js確認(Docker)
依頼例: マスタ統一手順 Step 06 まで。gantt の scenarioId と tenant slug の対応を manifest に追加し gantt から参照してください。
practice config.php の tenant_slug: yamada と booking bk_canonical_tenant_slug()(master-manifest yamada→yamada(独立) / legal→midori)を揃えました。site キー yamada は URL 用、DB は legal。詳細は 共通マスタ仕様 の practice 表。
主なファイル
DX/practice/config.phpDX/practice/sites/yamada/index.phpDX/demo/booking/lib/bootstrap.php確認(Docker)
依頼例: マスタ統一手順 Step 07 まで。practice yamada が booking tenant yamada に正しく解決されることを確認・必要なら修正してください。
Phase B — 士業(legal)vertical の ID 連携
crm p1〜p3 と booking 担当者の対応を master-seed.json に明示(legacyPartyId · customerId · bookingCustomerEmail)。一覧は 共通マスタ仕様 の士業 customer 表。
主なファイル
DX/demo/shared/master-seed.jsonDX/portal/master-spec.php確認(Docker)
依頼例: マスタ統一手順 Step 08 まで。master-seed.json の legal customers を crm parties と legacyPartyId で対応付けしてください。
law の先頭 3 依頼人に customerId を追加(id: p1 は legacy のまま)。100 件 pad 分は未付与。master-seed の legacyPartyId と一致。
主なファイル
DX/demo/crm/assets/data.js確認(Docker)
依頼例: マスタ統一手順 Step 09 まで。crm law の parties に customerId を追加(partyId は削除しない)。Docker で crm を確認。
getCustomerId(party) を追加。localStorage 復元時も seed から customerId を補完。確認用に window.CrmMasterHelpers を公開。
主なファイル
DX/demo/crm/assets/app.js確認(Docker)
依頼例: マスタ統一手順 Step 10 まで。crm app.js に customerId ヘルパーを追加し partyId と併存させてください。
legal の担当リソース・顧客ログインを master-seed.json と揃えました(yamada@example.com → c-midori-001、kato@example.com → c-midori-002)。既存 DB は BK_DEMO_SEED_VERSION でデモアカウントを自動同期します。
主なファイル
DX/demo/booking/lib/Seed.phpDX/demo/shared/master-seed.jsonDX/demo/booking/lib/Database.php確認(Docker)
依頼例: マスタ統一手順 Step 11 まで。booking Seed.php を master-seed.json の legal データと一致させてください。
crm law の依頼人詳細に master 連携バナーを表示(customerId · 予約デモリンク)。会社名・担当弁護士を seed / booking と一致。customerByLegacyPartyId は crmCompanyId で絞り込み(accounting の p1 誤マッチ防止)。
主なファイル
DX/demo/crm/assets/data.jsDX/demo/crm/assets/app.jsDX/demo/shared/master-manifest.jsonDX/demo/shared/master-seed.jsDX/portal/master-spec.php確認(Docker)
依頼例: マスタ統一手順 Step 12 まで。士業 vertical の crm↔booking 連携が master-seed 上で一貫していることを確認・不足があれば修正。
Phase C — 美容(salon)vertical の staff 統一
美容 vertical 用 employee ID e-s01〜e-s12 を seed に固定。表示名・メール・色は shift salon の staff 配列に合わせた。retail も使う s01〜s03 / s05 / s07 / s12 は tenantSlugs に両方記載。
主なファイル
DX/demo/shared/master-seed.jsonDX/portal/master-spec.php確認(Docker)
依頼例: マスタ統一手順 Step 13 まで。master-seed の salon employees を確定してください。
salon / retail の staff[] に employeeId(e-s01 等)を付与。salon 表示名を seed(佐藤 花・鈴木 翔・高橋 美咲)に揃え。legacy id(s01)は既存参照のため残す。FlowMasterHelpers.getEmployeeId を公開。
主なファイル
DX/demo/flow/assets/data.jsDX/demo/flow/assets/flow.js確認(Docker)
依頼例: マスタ統一手順 Step 14 まで。flow の staff ID を master-seed salon employees と一致させてください。
salon の 12 名に employeeId(e-s01〜e-s12)を付与。retail も seed と重なる 6 名に同様。homecare / construction は別人物のため未付与。ShiftMasterHelpers.getEmployeeId を公開。
主なファイル
DX/demo/shift/assets/data.jsDX/demo/shift/assets/shift.js確認(Docker)
依頼例: マスタ統一手順 Step 15 まで。shift の staff を flow / master-seed と ID 統一してください。
salon / retail の生産性表スタッフに id / employeeId を付与(表示名は変更なし)。homecare / construction は未付与。BoardMasterHelpers.getEmployeeId を公開。
主なファイル
DX/demo/board/assets/data.jsDX/demo/board/assets/board.js確認(Docker)
依頼例: マスタ統一手順 Step 16 まで。board に employeeId を追加してください(表示は変更しない)。
Phase D — CRM 内部名の段階移行
正規化時に party / record へ customerId を補完。新規カルテは customerId も保存。partyByCustomerId / recordsForCustomer / listCustomers を追加。partyId と UI ラベルは維持。
主なファイル
DX/demo/crm/assets/app.js確認(Docker)
依頼例: マスタ統一手順 Step 17 まで。crm の内部参照を customerId 優先に寄せてください(partyId は残す)。
normalize 時に data.customers = data.parties(shallow)。listCustomers() で参照可能。
主なファイル
DX/demo/crm/assets/app.js確認(Docker)
依頼例: マスタ統一手順 Step 18 まで。crm に parties の customers エイリアスを追加してください。
Phase E — その他デモ・対象外の整理
各社に tenantSlug。salon / retail に staff[].employeeId。salon 顧客「田中 美咲」に customerId: c-salon-001。一部品目に ownerEmployeeId。StockNaviMasterHelpers.debug() で確認可。
主なファイル
DX/demo/stocknavi/assets/data.jsDX/demo/stocknavi/assets/app.js確認(Docker)
依頼例: マスタ統一手順 Step 19 まで。stocknavi を master-seed retail/salon と ID 整合してください。
master-manifest.json に includedDemos(booking/crm/flow/shift/board/stocknavi/gantt)と excludedDemos(ai・multilang・knowledge・item/旧scan・asis-flow)を追加。理由を 1 行ずつ記載。master-spec に一覧表示。
主なファイル
DX/demo/shared/master-manifest.jsonDX/portal/master-spec.php確認(Docker)
依頼例: マスタ統一手順 Step 20 まで。マスタ統一対象外デモを manifest に明記してください。
対象外デモのまま、閲覧デモの UXだけ seed と揃える。立場ラベル(受付のみ)をやめ、佐藤 花/鈴木 翔/高橋 美咲/伊藤 結衣/山田 店長を選択。各人に employeeId(e-s01…)。スタッフは閲覧のみ、総務・店長は登録・差替可。included には入れない。
主なファイル
DX/demo/knowledge/assets/data.jsDX/demo/knowledge/assets/app.jsDX/demo/knowledge/index.phpDX/demo/shared/master-manifest.json確認(Docker)
依頼例: マスタ統一手順 Step 20a まで。文書ナビの立場切替を実名スタッフ+employeeId にしてください。
対象外デモのまま、誰が・何を・どこへを記録する体験に寄せる。後継デモ demo/item(物品ナビ)ではスタッフ/物品/場所コードを読み取り、貸出・返却を PC 台帳へ同期。旧 demo/scan は参照用に残置。included には入れない。
主なファイル
DX/demo/item/index.phpDX/demo/item/field.phpDX/demo/item/api.phpDX/demo/item/lib/Store.phpDX/demo/item/assets/field.js確認(Docker)
依頼例: マスタ統一手順 Step 20b まで。物品ナビで担当者・物品・場所の読取〜台帳反映を確認してください。
Phase F — DB・本番練習サイト
bk_staff / bk_resource(type=person)に employee_id を追加。schema.sql・SQLite/MySQL CREATE・既存 DB 向け ALTER・DESIGN.md に結合方針を記載。legal の seed で e-midori-owner / e-midori-01 / e-midori-02 を埋める。アプリ結合ロジックは Step 22 以降。
主なファイル
DX/demo/booking/schema.sqlDX/demo/booking/lib/Database.phpDX/demo/booking/lib/Seed.phpDX/demo/booking/DESIGN.mdDX/demo/shared/master-manifest.json確認(Docker)
依頼例: マスタ統一手順 Step 21 まで。booking schema に employee_id 列の設計を追加してください(データ移行は Step 22 以降)。
スキップ理由: practice の sites/yamada/ を 独立 tenant yamada に分離済み(2026-08-23)。セミナー用は midori(旧 legal エイリアス)。practice/config.php の tenant_slug = yamada。職員・顧客サンプルも別。
主なファイル
DX/practice/config.phpDX/demo/shared/master-manifest.jsonDX/demo/booking/lib/bootstrap.php確認(Docker)
依頼例: マスタ統一手順 Step 22 はスキップ済み。Step 23(全デモ回帰)へ進んでください。
Phase G — 回帰テストと legacy 削除
HTTP スモーク(localhost:8080)で Tier デモを確認。結果 2026-08-23: demo ハブ・booking(legal/food/trim)・crm・flow・shift・board・stocknavi・gantt・knowledge・物品ナビ(旧scan)・multilang・ai 系・asis-flow・practice/yamada・master 系 JSON がすべて HTTP 200、Fatal なし。booking schema_version=3・legal staff/resource に employee_id。物品ナビは台帳同期 API。手動の「予約1件作成」までは未実施(開ける+API bootstrap OK)。
主なファイル
DX/demo/index.phpDX/portal/master-unification.php確認(Docker)
依頼例: マスタ統一手順 Step 23 完了。Step 24(legacy 削除)は明示依頼があるときだけ。
完了 2026-08-23: crm の案件リンクを customerId のみに統一。seed / app から partyId フィールドを除去(旧 localStorage は normalize で 1 回移行)。士業連携の判定は tenantSlug === midori(会社キー law の直書き比較を廃止)。配列名 parties[] は UI 互換で残置(customers エイリアス併存)。
主なファイル
DX/demo/crm/assets/data.jsDX/demo/crm/assets/app.jsDX/demo/crm/index.phpDX/demo/shared/master-manifest.json確認(Docker)
依頼例: マスタ統一手順 Step 24 完了。これで手順は一通り完了です。