💻 システム開発
2026-05-12_SCALE_CRM_v9.133-v9.157_改修ログ
最終更新 2026年05月12日 / 31_システム開発部/SCALE_CRM/2026-05-12_SCALE_CRM_v9.133-v9.157_改修ログ.md
2026-05-12 SCALE CRM 改修ログ(v9.133〜v9.157)
08:11 - /handoff 実行
対象システム
SCALE CRM (scale-lead) — 1日でv9.133→v9.157 まで 25バージョン 怒涛のデプロイ
セッション背景
2026-05-11深夜〜2026-05-12早朝にかけてのSCALE CRM大規模改修セッション。
連続したFB対応で深刻なバグ(架電リスト消失17回試行で真因localStorage QuotaExceeded判明)+ 重複架電体制構築+1万件耐久設計提案までを実施。
完了タスク(v9.133〜v9.157 / 25バージョン)
サービス概要 大幅改修
- v9.133: 競合分析タブ廃止→基本情報内「競合比較」ブロック新設(◎◯△✗評価表+理由+長文サマリ)
- v9.140: svc配列フィールド型ガード(
_svcNormalize+ 自動修復) - v9.141: pendingConfirm の null 値で TypeError 発生→object型ガード追加
- v9.148: 完成度33%バグ修正(campaign=100%固定が平均含まれてた→basic+target のみで算出)
AI共創 完全分離
- v9.133: mode別 system prompt builder(
_coCreateBuildScriptSystemPrompt分離) - v9.136: data.field 形式block + session.mode保存復元
- v9.138:
_coCreateGetActiveSession(mode)mode別 active session - v9.139: 右下FAB / globalBadge も mode別文言切替
- v9.148: ページ遷移後の [CHOICES] 残骸除去 + ボタンフォールバック
ターゲットタブ完成度漏れ修正
- v9.134: 優先順位以降11項目(tier_S/A/B/C, regionPriority, seasonality, buyingProcess, ...)を完成度計算に追加 + AI共創 prompt に明記
使い方マニュアル
- v9.134: 全15HTMLの「謎のマーク」(壊れたファビコン残骸)一括除去 + service.html v9.133仕様に全面書き直し
架電リスト消失 17回試行(最終的に真因確定)
- v9.135: 重複検知が deleted_at 行を含めてたバグ修正
- v9.137: PS+独自fetch PUT 二重書き込み廃止
- v9.142: S関数+_d1PollTick で縮小block
- v9.143: _initSupabase+BC で縮小block + シャドウバックアップ
- v9.144: D1 API側 403拒否(究極防御・サーバー側block)
- v9.145: 自動再フェッチ追加(バグでPMデータ消失)
- v9.146: forceFetch 双方向防御
- v9.147: 自動再fetch削除 + バージョン表示
- v9.150: ボタン削除 + 自動再fetch安全復活 + PUTリトライ
- v9.151: シャドウボタン+緑通知削除
- v9.152: 起動時 D1欠落キー自動PUT
- v9.153: 縮小block通知削除
- v9.154: 書き込みトレーサ全経路([CL-WRITE])追加 → ユーザーログから真因判明
- v9.155: 真因確定 = localStorage QuotaExceededError →
_safeSetItemラッパー + 自動クリーンアップ + メモリ動作モード - v9.156: members toast + 同期 toast 削除(しんどいFB対応)
架電体制強化 (v9.157)
- 「重複」ステータス新設・架電対象から自動除外
- CSV取込の重複検知を「スキップ→追加+重複マーク」に
- アポ獲得済との重複自動マーク(apoDup)
- アポ獲得ステータス変更時のリアルタイム衝突検知
- localStorage 軽量化(companyDescription 等を切り詰め保存・1案件8000件耐久)
Vault整備
_SCALE_共通_トラブルシューティング集.md新規作成(過去エラー要因リスト + 真因特定パターン + 開発フロー)- グローバル CLAUDE.md と 全システム実装ルール に参照追加
- 「問題発生時は最初にトラブルシューティング集を Read」を運用ルール化
編集ファイル
- /Users/oogushiyuuki/株式会社SCALE/scale-lead/core.js — S関数縮小block / _d1PollTick / _initSupabase / BroadcastChannel / _syncToSupabase / _safeSetItem / _slimCallListForStorage / _logCallListWrite / forceFetchCallListFromD1 / forcePushCallListToD1 / _maybeShadowCallList / restoreCallListFromShadow / バージョンバッジ
- /Users/oogushiyuuki/株式会社SCALE/scale-lead/calllist.js — CSV取込重複マーク化 / 「重複」ステータス追加 / アポ衝突検知 / 自動再フェッチ条件
- /Users/oogushiyuuki/株式会社SCALE/scale-lead/service.js — サービス概要競合比較ブロック / AI共創 mode別 system prompt / 完成度算出 basic+target のみ / pendingConfirm 防御 / svc配列正規化 / COCREATE_VERSIONS v9.133〜v9.157 追加
- /Users/oogushiyuuki/株式会社SCALE/scale-lead/pages.js — トークスクリプトボタン名「🎙 スクリプト共創で作成」
- /Users/oogushiyuuki/株式会社SCALE/scale-lead/index.html — 左下バージョンバッジ
- /Users/oogushiyuuki/株式会社SCALE/scale-lead/functions/api/data/[key].ts — API側 403拒否(call_list 空配列・大幅縮小 PUT を物理ブロック)
- /Users/oogushiyuuki/株式会社SCALE/scale-lead/style.css — .script-label をバッジ風(v9.135)
- /Users/oogushiyuuki/株式会社SCALE/scale-lead-manual/service.html — v9.133仕様に全面書き直し
- /Users/oogushiyuuki/株式会社SCALE/scale-lead-manual/全15HTML — ファビコン残骸除去
- /Users/oogushiyuuki/Obsidian/SCALE-Brain/31_システム開発部/_SCALE_共通_トラブルシューティング集.md — 新規
- /Users/oogushiyuuki/.claude/CLAUDE.md — トラブルシューティング集への参照追加
デプロイ・バックアップ
- 本日のデプロイ回数: 25回(v9.133〜v9.157)
- 最終デプロイ: 2026-05-11 17:55 (v9.157)
- 本番URL: https://crm.scale-group.co.jp/
- 最新バックアップ:
~/Library/CloudStorage/.../scale-lead-backups/scale-lead-2026-05-11-1755-post-deploy.tar.gz
試したこと・学び(重要)
架電リスト消失17回の振り返り
- v9.142-v9.154 まで「ローカルに保存できている前提」で防御層を積んでいた
- v9.154 でトレーサ仕込み → ユーザーがコンソールログを送信 → 真因
QuotaExceededErrorが判明(10秒で確定) - 教訓: 推測で防御積むより、トレーサで観測する方が圧倒的に速い
1万件耐久設計
- ユーザーから「いつかのために今のうちに」と質問
- 設計提案: IndexedDB移行 + D1行単位API + 仮想スクロール(13〜19時間工事)
- 料金試算: ほぼ無料枠内、最悪$5/月
- ユーザー判断: 後からでもできる → v9.157 で当面運用、シグナル出たら着手
ユーザーFB(重要なやつ全部)
- 「scriptモード押したのにcompetitors確定聞いてくる・別物にして・名称変えて」→ v9.138 で mode別 active session分離+ボタン名変更
- 「右下FABも名称変えて」→ v9.139
- 「サイトリニューアル押したらfilter is not a function」→ v9.140 _svcNormalize
- 「クライアント要確認タブ開けない」→ v9.141
- 「リロードでまだ消える」を17回繰り返し → v9.154トレーサ → v9.155で真因確定
- 「サーバー側404 toast うるさい」→ v9.153
- 「ボタン増やしたくない・自動で動くべき」→ v9.150 ボタン削除
- 「メンバー情報更新 toast 消して」→ v9.156
- 「ステータス変更が PM に反映されない」→ コンソールログ調査中
- 「重複リスト2人架電・容量問題」→ v9.157 で重複ステータス自動+衝突検知+軽量化
- 「失敗繰り返さないように体制構築したい」→ トラブルシューティング集作成
注意ポイント・退化リスク
- CSV取込の重複検知挙動 大幅変更(v9.157): スキップではなく追加+重複マークに変更。「重複」ステータスを ST_REQUIRED_FIELDS / STATUS_PRIORITY / 各種フィルタ から消すと、重複が架電対象に戻ってしまう
- localStorage 軽量化(v9.157):
_slimCallListForStorageで companyDescription/apoKnowledge/memo を切り詰め。フィールド追加時は_CL_HEAVY_FIELDS_TRUNCを必ず更新 - S 関数の縮小防御:
window._allowCallListShrink=trueを立てないと 5件以上削除できない。purgeAllCallList のような明示削除のみ立てる - D1 API 側 403 防御 (v9.144): call_list 空配列 PUT は サーバー側で拒否される。
X-Allow-Shrink:1ヘッダ送れば bypass 可 - v9.155
_safeSetItem: setItem 失敗時にシャドウ/snapshot を自動削除する。重要キーは別途バックアップ - AI共創 mode='script' プロンプト分離:
_coCreateBuildScriptSystemPromptを変更時は session.mode の保存復元も連動 - 完成度算出: basic+target のみ。
campaignを平均に含めると 33% バグ再発 - 書き込みトレーサ
_logCallListWrite: 全6経路(S/init/poll/bc/forceFetch/snapshot)に仕込み済み・追加経路があれば必ず仕込む
次のセッションで取り得る選択肢
- ユーザー追加FB待ち — v9.157 デプロイ後の実機検証 + 「ステータス変更がPM反映されない」のコンソールログ取得
- Phase 4 (1万件耐久) 着手準備 — 後日のために設計書を Vault に保存(
_SCALE_CRM_設計_1万件対応Phase4.md) - localStorage 使用量モニタリング機能 — サイドバー下部や設定画面に「容量使用率」表示
- アポ獲得衝突 audit_log 集計UI —
apo_conflictレコードを一覧化 - 他システム(TERASU CRM等)への横展開 — 重複ステータス自動付与・縮小防御・トレーサパターン
引き継ぎファイル
/tmp/handoff_20260512_081134.txt
累積効果まとめ(v9.133〜v9.157)
サービス概要: 競合比較ブロック新設 + 完成度算出修正 + AI共創完全分離
架電リスト: 5層防御(S/poll/init/bc/API側)+ 重複自動マーク + アポ衝突検知 + 軽量化
AI共創: mode別 system prompt + UI/FAB/Badge 完全分離 + 再描画堅牢化
データ整合性: _svcNormalize + pendingConfirm 防御 + _safeSetItem QuotaExceeded対策
運用体制: トラブルシューティング集 + 全6経路トレーサ + バージョン常時表示
→ SCALE CRM が「実運用で消えない・追跡できる」状態に到達。次は1万件耐久 Phase 4 へ。