💻 システム開発
2026-05-19_SCALE_CRM_v11_per-row移行
最終更新 2026年05月19日 / 31_システム開発部/SCALE_CRM/2026-05-19_SCALE_CRM_v11_per-row移行.md
SCALE CRM v11 per-row移行
概要
2026-05-19に、SCALE CRM(scale-lead)の架電リストを「1案件1巨大配列(後勝ち)」から「1行1レコード(スプレッドシート型)」へ根本変更。v10.77→v11.3を1日13デプロイで本番稼働。
アーキテクチャ変更の核心
| 項目 | Before (v10) | After (v11) |
|---|---|---|
| データ構造 | proj_*_call_list = 1案件1巨大JSON配列 |
call_rows テーブル = 1行1レコード |
| 同期方式 | 全配列PUT(後勝ち上書き) | per-row差分PATCH(原子マージ) |
| boot容量 | 43MB→18MB | 2.9MB(flag ON時) |
| 同期cadence | 15秒 | 8秒 + focus/online即poll |
バージョン履歴
| ver | 内容 |
|---|---|
| v10.77 | boot 43→18MB scoped化 + ReferenceError解消 |
| v10.78 | ステータス入力重さ根治(重複I/O除去・dirty-chunk diff)+ 最上段ワープ根治 |
| v10.79 | 同期の過剰防御DROP→field-merge化 + cadence 8s |
| v11.0 | call_rows テーブル + per-row API + 全4案件4726行移行 + 本番稼働 |
| v11.1 | push耐久化 + DELETE真HARD化 |
| v11.2 | ログイン資格fail-CLOSED化 + ワープ完全ゼロ + boot 2.9MB |
| v11.3 | UI掃除(同期完了トースト全廃 + アップデートバナー廃止) |
ロールバック設計
- flag
cl_perrow_enabled(app_data=ON)がv11のスイッチ - 削除/0 で即 v10.79 完全同一挙動にロールバック(無停止)
- 旧
proj_*_call_listblob は温存(触るな) - Defense A〜L / v10.78/79 の旧コードが意図的に同居(rollback用)
- UX人手確認前に消すな = rollback喪失
学び
- 推測patchは厳禁 — v10.71/72/73で大串に叱責。以降「agent実コードverbatim精査→根治」を徹底
- wrangler OAuth途中失効 — 長時間sessionでOAuth失効し
bash deploy.shが無言失敗。「Deployment complete目視 + 本番curl1点実証してから完了報告」厳守 - fail-CLOSED設計 — 失うと業務停止する値(資格情報等)のmergeはfail-OPEN(skip)厳禁→必ずfail-CLOSED
- 巨大GET応答 — bash変数に入れるとjq parse error→ファイルに落としてjq
注意ポイント
- PS('call_list')インターセプト1点経由 = 全call site自動対応。直接_flushCallListToD1等を足さない
- members資格はfail-CLOSED(PUTが409で正当拒否することがある = 仕様)
- _renderVersionBadgeState は左下更新導線として生かす
次のアクション
- 大串の実機UX確認待ち
- UX確認後、死にコード掃除(Defense A〜L / v10.78/79 / 旧blob依存)
- 使い方ガイド(scale-lead-manual)
- 真サブ秒realtime(v2再有効化 = 要バックフィル+硬化)
デプロイ・バックアップ
- 最新:
scale-lead-2026-05-19-1435-post-deploy.tar.gz(v11.3) - 着手前安全資産:
scale-lead-2026-05-18-1924-PRE-v11-perrow-migration.tar.gz+ D1フルSQLダンプ(210MB) - E2E: 73/73 PASS
- 本番URL: https://crm.scale-group.co.jp/