💻 システム開発
2026-05-16_SCALE_CRM_v10.54-v10.57_作業ログ
最終更新 2026年05月17日 / 31_システム開発部/SCALE_CRM/2026-05-16_SCALE_CRM_v10.54-v10.57_作業ログ.md
SCALE CRM v10.54〜v10.57 作業ログ
対象システム
SCALE CRM(scale-lead)/ ローカル /Users/oogushiyuuki/株式会社SCALE/scale-lead/ / 本番 https://crm.scale-group.co.jp/
セッション背景
2026-05-16 深夜から継続した SCALE CRM 大量改修セッション(v10.37〜v10.57・本日通算39デプロイ)。本ログは直近 v10.54〜v10.57(前回 compaction 以降の成果)を記録。v10.37〜v10.53 は 31_システム開発部/SCALE_CRM/2026-05-16_* と 2026-05-16 作業ログ参照。
完了タスク(v10.54〜v10.57・各 E2E 69/69 PASS・pre/post backup)
v10.54 設定「Slackチャンネル自動作成」を現在案件の作成済ch可視化
- 真因: v10.53で作成ボタンは autoCreateProjectSlackChannels(現在案件) 委譲→結果は projects[idx].slackChannels と案件編集DOMへ反映。だが設定の一覧は SLACK_GLOBAL_CHANNELS(scalelead_…固定名)+空の cfg.channels を表示=「作成済が見えず再作成不安」。
- 根治: renderSlackSettings の一覧IIFEを「現在選択中案件の作成状況ビュー」に刷新。行ラベル=実Slack案件名 / ✓作成済(ID表示)・未作成バッジ / 案件channel種別で表示group絞り。グローバル固定 slk_ch_* 手入力欄は
<details>折りたたみに温存(saveSlackConfig不変=退化ゼロ)。 - pages.js renderSlackSettings 一覧IIFEのみ差替。
v10.55 LinkedIn版 SCALEランク 新設(テレアポと別系統並立)
- 大串確定: Sランク週次基準(フォロー150/フォロバ100/フォロバ率66.7%/ポスト2/オファー95/オファー率95%/アポ5/アポ率3.3%/承認後アポ率5.2%)/ フォロバ率=フォロバ÷フォロー=66.7% / 総合判定軸=アポ数主軸 / データ=承認・申請リストから自動取得。
- 実装:
lib/pages_report.jsに RANK_THRESH_LI(11指標D〜S閾値)/_rankFromThreshLI/_liRankColor/_liRankName/_liBadge/_liWeeklyMetrics(直近7日ローリング)/_calcSCALERankLI(総合=アポ数)/_renderSCALERankCardLI。 - マッピング: フォロー=linkedin_requests件数 / フォロバ=linkedin_approved件数 / オファー=status≠未対応 / アポ=status==アポ獲得 / 商談実施=アポ獲得かつmeetingDate経過。ポスト数=申請/承認リストから取得不可→自動集計対象外(総合不使用・カード明記)。
- 表示: report_linkedin の active 版は lib/pages_report.js:964(concat順 pages_linkedin.js→pages_report.js で後勝ち=function hoisting・byte291758>101193で確認・pages_linkedin.js:702版はdead)。セールスタブ先頭に
_renderSCALERankCardLI()注入。 - 配色は テレアポ RANK_META を typeof ガード流用。テレアポ RANK_META/_calcSCALERank/_renderSCALERankCard(pages.js)は一切不変。
v10.56 担当パートナー/PM/案件専用Slack を「設定→案件別Slackチャンネル設定」に一本化
- 大串確定: ①案件編集=完全非表示+誘導 ②メンバー編集も両方ロックし設定一本化。
- 質問1の穴: v10.46で案件編集Slack UIをdisplay:none化時に「招待同期(syncProjectSlackMembers)」を設定へ移植し忘れ→到達不能。→ 設定に
招待同期(新設_syncProjectSlackMembersByIdDOM非依存)で根治。 - 設定
_renderSlackProjectChannelsに 担当パートナー選択(.sp_pt_cb)+PM選択(.sp_pm_cb)+〔自動作成 / 招待同期 / 担当・Slack保存〕実装。_saveSlackProjectChannels拡張: .sp_pm_cb→p.pms / .sp_pt_cb→各メンバーprojects[] add-remove+saveMembers+D1 PUT、保存後 _slackInviteProjectMembers で冪等招待。 - 案件編集(core.js showEditProjectModal) PM form-row(data-pm-ui-hidden-v1056)+担当パートナーblock(data-partner-ui-hidden-v1056)+メンバー編集(pages.js showMemberModal)担当案件form-row(data-memberproj-ui-hidden-v1056)を display:none+誘導バナー。全input(.ep_pt_cb/.ep_pm_cb/ep_slack_*/.mb_proj)はDOM温存→updateProject/createProjectFromModal/saveMember 読取保存ロジック完全不変=データロスゼロ。
v10.57 リストプール 均等抽出を案件分配モーダルに完全統合・単独モーダル廃止
- 大串確定: 完全統合して単独モーダル廃止。
_lpShowDistributeModal内に「均等抽出して分配(任意)」トグル新設(均等化キー複数選択/抽出件数/分配済除外)。_lpExecuteDistribute冒頭でトグルON時 選択(無→フィルタ)を _lpEqualSample で均等N件へ絞り window._lpSelectedIds 置換→teleapo/LinkedIn両経路に自然反映。- 均等抽出単独ボタン(renderListPool)除去→
_lpShowEqualSampleModal/_lpExecuteEqualSampleinert残置(呼出元grep済=ボタン1点のみ・退化なし)。アルゴリズム_lpEqualSample流用で不変。
編集ファイル
pages.js— v10.54 renderSlackSettings / v10.56 _renderSlackProjectChannels拡張lib/pages_report.js— v10.55 LinkedInランク一式core.js— v10.56 showEditProjectModal PM/担当パートナーblock非表示list_pool.js— v10.57 均等抽出を分配モーダル統合service.js— COCREATE_VERSIONS に v10.54〜57 changelog
デプロイ・バックアップ
- 各版
bash deploy.sh(pre/post tar.gz → Drive scale-lead-backups/) - 最終 post:
scale-lead-2026-05-16-2157-post-deploy.tar.gz(v10.57) - 本番
https://crm.scale-group.co.jp/全版 HTTP 200・D1 API 正常 - E2E
npm run test:e2e全版 69/69 PASS - Vault 最新基準点:
latest_version: v10.57/baseline_label: 2026-05-16-2157-post-deploy-v10.57
学び
- 本番JSは認証ゲート(403 "SCALE CRM session required")。curl で min.js 内容検証不可 → ローカル *.min.js の文字列/関数名 grep + deploy.sh ヘルスチェック(200/D1) + E2E で検証する運用。
- lib_bundle は raw concat(IIFE無)。同名 function 宣言は concat順で後勝ち(hoisting)。renderReportLinkedIn の active は pages_report.js:964版(pages_linkedin.js:702版はdead)。
- min.js 検証は terser がコメント除去・引数renameするため、保持される文字列リテラル/関数名で grep する。
注意ポイント・退化リスク
- v10.56で隠した案件編集/メンバー編集の input/checkbox(.ep_pt_cb/.ep_pm_cb/ep_slack_/.mb_proj)はDOM温存が退化ゼロの生命線*。削除するとデータ消失。
- renderReportLinkedIn を編集するときは active=lib/pages_report.js:964版(pages_linkedin.js:702版はdead)。
- テレアポ SCALEランク(pages.js RANK_META/_calcSCALERank/_renderSCALERankCard)は LinkedInランクと別系統。混同禁止。