⚙️ Vault運用

2026-07-01_作業ログ

最終更新 2026年08月10日 / 90_Meta/Claude作業ログ/2026-07-01_作業ログ.md

作業ログ 2026-07-01

06:27〜06:35 - SCALE CRM v11.6.2 所属外の案件を開けてしまう問題を権限ゲートで根治

対象

SCALE CRM(scale-lead / crm.scale-group.co.jp / 正本 ~/dev/scale-lead)。本番アプリ v11.6.2。

大串FB

「結グループのリスト依頼がTERASU案件のSlackに来た。原因は?」→「修正していいよ。そのメンバーが所属の案件しか開けないようにすればいいんだけど、そもそもなんでそれができないのか?」

原因調査(本番D1の物証)

  • リスト依頼レコード: requester=濵田・project_id=momb5hxfan3je(TERASU)updated_by=濵田・同時刻のセグメント「濵田①」もTERASUに作成。
  • 濵田さんの所属: projects=['moz6qooo63107']結グループのみ(TERASU非所属)。
  • 濵田さん本人が、TERASU案件を開いた状態のセッションでリスト依頼を作成(システムの取り違えではない)。

なぜ所属外を開けたか(真因=設計の穴)

  • 案件選択ドロップダウンとログイン初期化は getVisibleProjects() で所属案件に絞っていた(=「見せない」はできていた)。
  • ところが案件切替の本体 switchProject(id)(core.js) が無検証currentProjectId=id を受け入れる(=「させない」ゲートが無い)。
  • → 古いセッションの currentProjectId 残留や、アサイン解除後でリロード前に、所属外案件を操作できた。
  • 本質: 「表示の制限」だけで「権限のゲート」を作っていなかった。

修正(3層の権限ゲート)

  1. switchProject(core.js) に権限ゲート: admin以外は getUserObj().projects 以外に切替不可・所属外idは拒否してドロップダウンを戻す。
  2. submitListRequest(calllist_list_request.js) に検証: 古いセッションで currentProjectId が所属外のままリスト依頼を作る事故を入口でブロック(再読み込み案内)。
  3. _ensureProjectAccess新設 + renderPage冒頭で呼出: 所属外案件が開かれていたらページ描画のたびに担当案件へ自動修正(リロード不要で古いセッションから自動で抜ける)。
    - admin/PMは全案件アクセス可のまま(退化なし)。

編集ファイル

  • core.js(switchProject権限ゲート / _ensureProjectAccess新設 / renderPage冒頭で呼出)
  • lib/calllist_list_request.js(submitListRequest検証)
  • service.js(COCREATE_VERSIONS v11.6.2)

デプロイ・検証

  • bash deploy.sh(退化チェック付き・正本~/dev/scale-lead)。本番200・D1正常・全関数チェックOK・backup ~/scale-lead-backups(Drive外)。
  • 本番実体: core.min.js に「この案件へのアクセス権がありません」×1・_ensureProjectAccess×3、lib_bundle.min.js に「所属案件ではありません」×1、service.min.js に v11.6.2 反映確認。
  • git push(af1dfdc)でGitHub Actionsも連動。

設計教訓(恒久)

「表示の制限(UIで選択肢を絞る=見せない)」と「権限のゲート(切替・操作実行時に検証=させない)」は別物。 UIで隠すだけでは、UI以外の経路(セッション残留・プログラム呼び出し等)で所属外を操作できてしまう。権限は実行点でゲートする。

次(大串の実機確認)

一般メンバーで所属外の案件に切り替えようとしても弾かれるか。濵田さんが(古いセッションでも)リロード/ページ遷移で結グループに戻るか。adminは全案件開けるか。


06:46〜06:52 - 濵田①セグメントを結グループへ移行 + TERASU誤データ削除(本番D1操作)

大串指示

「はまださんがリスト依頼したものを、結グループに濵田①としてセグメント追加して」→「誤データは削除して」

背景

v11.6.2の原因調査で判明した、濵田さん(結グループのみ所属)がTERASU案件に誤って作ったセグメント「濵田①」とリスト依頼を、本来の結グループへ移す。

実施(本番D1・per-row+blob両方・バックアップ取得)

  1. 結グループに「濵田①」追加: segment_def_rows(per-row) + proj_moz6qooo63107_segment_definitions(blob) の両方に同一id(seg_1782856303749_fo11)で整合追加。条件はTERASUの濵田①と同じ(美容・アパレル/美容サロン × 1億円未満 × 従業員規模)。結グループ 5→6セグメント(既存の大串①/デモ①②/淺井①②は全保持)。
  2. TERASUの誤データ削除: セグメント「濵田①」(id seg_1782802909972_le8c)をblob除外+per-row DELETE、リスト依頼(濵田・id mr0atl982d003)をper-row DELETE。TERASUのデモアカウント①セグメント・デモのリスト依頼は別物なので保持。
    - 検証: 結グループ blob/per-row=6個に濵田①あり / TERASU=濵田①消滅(デモ①のみ)・per-row残0。
    - backup: ~/scale-lead-backups/segdef/(結グループ前blob・TERASU前blob・リスト依頼blob)。

教訓(恒久)

セグメント定義・リスト依頼は per-row(segment_def_rows / list_request_rows)+ blob(proj_X_segment_definitions / list_requests)の二系統。追加・削除は必ず両方を整合操作する(片方だけだと読み取りマージで残る/消える)。

残(大串確認待ち)

  • Slackの「リスト作成依頼」誤投稿メッセージ(terasu_テレアポ支援_リスト依頼チャンネル)はSlackに残存。消すなら別途。
  • 濵田さんは結グループ案件をリロードすればセグメント「濵田①」が使える。

22:47 - /handoff 実行(全テーマ)

このセッションで扱ったテーマ(全部)

  1. hp-flowコマンド最新化(v1.9→v2.1取り込み) — システム作業 — 完了
  2. テラクリニックデモHP 発行環境の構築(Cloudflare Pages GitHub自動デプロイ) — システム作業 — 完了・稼働中
  3. テラクリニックデモHP 制作継続(FVヒーロー刷新・ナビバー・配色・波・選ばれる理由節) — システム作業(HP制作) — 継続中

テーマ別の詳細

1. hp-flowコマンド最新化

2. テラクリニックデモHP 発行環境

  • serveo一時トンネル(v1.8廃止方式)→Cloudflare Pages GitHub自動デプロイに移行。
  • 固定URL: https://preview.demo-tera.pages.dev(preview.付き必須/demo-tera.pages.devは404)
  • リポ: scale-group-jp/demo-tera(private)・preview ブランチにpush→GitHub Actions自動デプロイ(約30秒)。terasu-seisakuにpush権限付与。
  • ローカル正本: ~/dev/demo-koba-clinic/site/index.html(git連携済み・git管理外ではなくなった)。
  • このPC(細川)に整備: CFトークン ~/.cf_token~/.config/scale/cloudflare_pages_token(600)/gh CLI ~/.local/bin/gh(v2.95・GH_TOKEN env方式)。詳細は memory project_demo_tera_deploy

3. テラクリニックデモHP 制作(FV等の連続改修)

  • 新ロゴ(ソフトブルーのシンボル logo-tera-symbol.png、Downloadsのロゴ案_01から切出)+テラクリニック名。ロゴ=メニュー(ハンバーガー)と同サイズ化。
  • 採用案の横型ナビバーを最上部固定(ロゴ+TOP/特徴/診察内容/アクセス+X/Instagram+電話+WEB予約)。旧ロゴ/ハンバーガー/下部電話バーは集約非表示。メニューは中央寄せ・17px。
  • 配色: 青系→一時エメラルド→revertで青戻し→最終背景#F4F7FA(採用案画像色)+青系水テーマ。歯オーバーレイは #E3FCF0→#DCECFB→#93CDEC(背景より濃く強調)
  • 背景アニメ: 青い玉2つ→3層の波(最下部bottom:0で水面に歯が立つ表現)
  • 歯4本: 全クリップ変形を統一(scale 1.83 1.937)で同一形状。幅24%・縦中央から+35px下げ。
  • 歯科名ラベル: 拡大(7.6rem)・インプラント文字化け修正(viewBox 114→126)・「の診療」18px・白枠10.5rem。選択時ポップアニメは追加後→ユーザー要望で削除。
  • ナビのインスタアイコン: fill-rule無しで塗り潰れ崩れ→アウトライン版に差し替え
  • 「テラクリニックが選ばれる 3つの理由」節: 見出しのテラクリニック(31.5px)・3(50.4px)を青強調/sticky写真クロスフェードで真っ白になっていたのを全文常時表示の積み上げレイアウトに変更/3見出しをすべて2行に統一(3つ目「安心して通院できる」に更新)。
  • 最新commit: 1b39d08。全変更 preview へ push済み・本番反映確認済み。

このセッション全体の大串FB(重要なやつ全部)

  • メイン要素の歯は背景より濃い色で強調する。
  • 選ばれる理由節など「真っ白で文字が出ない」状態はNG=全文常時表示にする(feedback_preview_must_open/section_full_reproduction 準拠)。
  • ナビバーは色変更時に触らない指定→後で明示的にメニュー中央寄せ等は変更OKに。
  • URL表示不可は「preview.」プレフィックス必須が原因(demo-tera.pages.devは404)。

注意点

  • プレビュー検証ツール(preview_screenshot)がスクロール位置・リロード後にtiny表示/空振りする不具合が頻発。DOM計測(eval)+elementFromPointで確認する運用に切替えた。FV先頭は opacity強制で撮れる。
  • hp-flow.md/learning.md にローカル未コミット変更(koba学習)が残っている。