💻 システム開発

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_list blob は温存(触るな)
  • Defense A〜L / v10.78/79 の旧コードが意図的に同居(rollback用)
  • UX人手確認前に消すな = rollback喪失

学び

  1. 推測patchは厳禁 — v10.71/72/73で大串に叱責。以降「agent実コードverbatim精査→根治」を徹底
  2. wrangler OAuth途中失効 — 長時間sessionでOAuth失効し bash deploy.sh が無言失敗。「Deployment complete目視 + 本番curl1点実証してから完了報告」厳守
  3. fail-CLOSED設計 — 失うと業務停止する値(資格情報等)のmergeはfail-OPEN(skip)厳禁→必ずfail-CLOSED
  4. 巨大GET応答 — bash変数に入れるとjq parse error→ファイルに落としてjq

注意ポイント

  • PS('call_list')インターセプト1点経由 = 全call site自動対応。直接_flushCallListToD1等を足さない
  • members資格はfail-CLOSED(PUTが409で正当拒否することがある = 仕様)
  • _renderVersionBadgeState は左下更新導線として生かす

次のアクション

  1. 大串の実機UX確認待ち
  2. UX確認後、死にコード掃除(Defense A〜L / v10.78/79 / 旧blob依存)
  3. 使い方ガイド(scale-lead-manual)
  4. 真サブ秒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/

関連ノート