💻 システム開発
2026-05-08_SCALE_Finance_D1サーバーサイド化_作業ログ
最終更新 2026年05月09日 / 31_システム開発部/SCALE_Finance/2026-05-08_SCALE_Finance_D1サーバーサイド化_作業ログ.md
作業ログ 2026-05-08 — SCALE Finance 大規模リニューアル
概要
SCALE Finance(finance.scale-group.co.jp)の全面リニューアル。前セッションから引き継ぎ、/periods ビルド復旧 → ダッシュボード・経費管理・売上予測・月次全体管理 → D1 サーバーサイド化(複数端末同期) → キャッシュフロー全面リニューアル → 同期トラブルシュート完了 まで約20ブロックの改修を実施。Cloudflare Pages へ各ブロックでデプロイ・全 HTTP 200 確認済み。最終的に別アカウント端末でも全データが同期表示される状態を達成。
最新スタンプ: 2026-05-08 17:39 / scale-finance_2026-05-08_173927_d1-final.tar.gz
:LiCheckCircle 完了タスク(時系列)
ブロック1: /periods ビルド復旧 (14:20)
- 前セッションで4チャートコンポーネント未定義のままビルド失敗していた問題を解決
app/periods/page.tsx末尾に MonthlyStackBarChart / MonthlyTrendChart / PaidProgressBar / RevenueDonutChart の4関数を追加(pure SVG・依存ライブラリなし・既存配色に合わせ)- バックアップ:
before-periods-charts
ブロック2: 共通モジュール化 + 他ページにチャート展開 (14:27)
components/finance/Charts.tsx新設(5チャート集約):MonthlyStackBarChart / MonthlyTrendChart / PaidProgressBar / RevenueDonutChart / BalanceTrendChart / CashflowInOutBars/periodsのローカル定義削除 → import に切替- ダッシュボード
/に「直近6ヶ月 売上 vs 経費 vs 利益」「当月 売上構成比ドーナツ」「直近6ヶ月 事業部別積み上げ」3チャート追加 - キャッシュフロー
/cashflowに「残高推移ライン(警戒ライン50万)」「口座別 入金 vs 出金 縦棒」2チャート追加 - バックアップ:
before-charts-rollout
ブロック3: ダッシュボード / 全面リニューアル (14:36)
- 手入力
monthly-revenueKV 依存をやめ、当月の数字をpartner-pay-${month}/payment-status-${month}/monthly-expense/expense-spot-${month}から完全自動集計(Clue・Next 税込保存対応・clientBizMap で事業部自動補完) - 構成: KPIカード4枚 / 着金進捗バー+ハイライト / 月別トレンド3チャート / TOP 5 案件テーブル / クイックアクセス
- 削除: 旧月次P/Lテーブル、累計サマリー、アラートリスト
- バックアップ:
before-dashboard-rebuild
ブロック4: 売上予測 事業部別ブロック化 + モーダル事業部選択 (14:43)
/forecastの単一テーブルから事業部ごとの独立ブロックに再構成(色付き左ボーダー+ヘッダ+必達/目標2段ヘッダのテーブル+フッタ)ForecastEditModalに「事業部(ブロック分け)」select 追加 → モーダルから事業部間移動が可能に- バックアップ:
before-forecast-blocks
ブロック5: 請求書発行ラベル変更 + .pdf削除 (14:45)
- 列ヘッダ「請求書発行」→「請求書送付」に改名
- KPIラベル「発行済」→「送付済」
app/invoices-issued/page.tsxのデフォルトテンプレ +lib/finance-data.tsの demoClients 4社のinvoice_filename_patternから.pdfを削除- バックアップ:
before-strip-pdf-ext
ブロック6: 経費管理リニューアル + 領収書PDF添付 (14:50)
ExpenseRow型にpdf_url/pdf_filename追加- 固定費タブ列を新仕様に:「確定 / 経費名 / 事業 / 種別 / 金額 / 決済日 / 領収書 / 領収書PDF / 削除」
- PDF添付は IndexedDB(
expense-pdf-${id})+ 外部URL対応 - 全体タブを集約版に再構成
- バックアップ:
before-expenses-rebuild
ブロック7: 数字入力ゼロ強制バグ修正 + 解約日機能 (15:03)
EditableCell.commitで空入力時の0強制保存を''に変更(呼び出し元で null 化可能に)- 経費管理3タブ + 固定費の onSave を
v === '' ? null : Number(v)パターンに統一 ExpenseRow型にchurn_date追加ExpenseEditModalに赤系「解約」セクション追加- バックアップ:
before-churn-date
ブロック8: 経費精算ブロック完全削除 + 集約版 (15:10)
- 経費精算(master)ブロック全削除
- KPI 4枚再構成:「経費合計 / 人件費(税込) / 固定費 / 突発経費」
- バックアップ:
before-expense-master-removal
ブロック9: 売上予測 1テーブル統合 + デザイン整理 (15:16)
- 旧『事業部ごとに独立テーブル』→ 1つの
<table>+<colgroup>列幅130px固定 + 事業部ごとに<tbody>に統合 - 色を大幅控えめ化:必達/目標ヘッダの背景色削除→グレー統一
- 各 tbody 末尾に小計行追加
- バックアップ:
before-forecast-unified-table
ブロック10: 解約日 → 解約月(動的判定)(15:20)
<input type="date">→<input type="month">に変更- 旧 useEffect 削除 → 動的判定
isActiveForMonth(r)に置換 - 月セレクタ切替に応じて自動振り分け
- バックアップ:
before-churn-month
ブロック11: 月次全体管理リネーム + 大規模リニューアル (15:32)
- ナビ + h1 を「月次全体管理」に改名
- 固定費連動バグ修正:手入力依存廃止 →
fixed-cost-masterからisActiveForMonthで当月集計 - KPI 整理:1行目4枚 / 2行目2枚(利益(暫定)+利益(最終))/ 3行目2枚(着金済 / 支払済)
- 事業部別テーブル拡充:5列 → 10列
- ダッシュボードの全機能を全体タブに統合
- バックアップ:
before-revenue-monthly-mgmt
ブロック12: 売上予測 固定費連動 (15:35)
fixed-cost-master+expense-spot-${month}から自動取得- バックアップ:
before-forecast-fixed-link
ブロック13: 開始月フィールド + 今後の経費予定セクション (15:40)
ExpenseRow型にstart_date追加isActiveForMonthヘルパーを4ファイルで拡張(開始前は除外・解約後は除外)- 固定費管理を3セクション分割:稼働中 / 今後の経費予定 / 解約済み
- バックアップ:
before-start-date
ブロック14: 売上予測 上部 全Statに自動計算ロジック (15:45)
Statコンポーネントにformula?prop 追加- 必達/目標 各3項目に formula 追加
- バックアップ:
before-forecast-stat-formula
ブロック15: D1 サーバーサイド化(複数端末同期) (17:00)
functions/api/kv/[key].ts新設・GET/PUT/DELETEwrangler.toml新設(D1 バインディングDB)migrations/0001_init_kv_store.sqllib/finance-store.tsを fetch ベースに改造(localStorage キャッシュ + D1 同期・last-write-wins)useFinanceMulti(keys, default)新フックmigrateLocalToServer()新規- バックアップ: 中間段階多数
ブロック16: キャッシュフロー全面リニューアル (17:00 同時)
/cashflow全面リニューアル:7ヶ月タイムライン(過去3+当月+未来3)- 入金予測・実績 / 出金予測・実績 / 月末累積残高
- 残高推移チャート(警戒ライン50万円)
- バックアップ:
before-cashflow-7m
ブロック17: D1 同期トラブルシュート + 最終確定 (17:30)
month-context.tsxを fetch 対応に改造public/_headers新設でキャッシュ制御強化- Cloudflare Access は断念し認証なし運用に確定
- 別アカウント端末で全データ同期確認
- バックアップ:
d1-final
:LiPackage バックアップ一覧
| 時刻 | ID | 主な変更 |
|---|---|---|
| 14:20 | before-periods-charts | /periods ビルド復旧 |
| 14:27 | before-charts-rollout | Charts.tsx 共通化 |
| 14:36 | before-dashboard-rebuild | ダッシュボード自動集計化 |
| 14:43 | before-forecast-blocks | 事業部別ブロック化 |
| 14:45 | before-strip-pdf-ext | 請求書送付改名 |
| 14:50 | before-expenses-rebuild | 経費管理リニューアル |
| 15:03 | before-churn-date | EditableCell修正・churn_date |
| 15:10 | before-expense-master-removal | 経費精算削除・集約版 |
| 15:16 | before-forecast-unified-table | 1テーブル統合 |
| 15:20 | before-churn-month | 解約月・動的判定 |
| 15:32 | before-revenue-monthly-mgmt | 月次全体管理リネーム |
| 15:35 | before-forecast-fixed-link | 固定費連動 |
| 15:40 | before-start-date | 開始月・3セクション |
| 15:45 | before-forecast-stat-formula | 上部Stat 自動計算 |
| 17:23 | before-cashflow-7m | D1+キャッシュフロー7ヶ月 |
| 17:39 | d1-final | D1 同期最終確定 |
すべて ~/scale-finance-backups/ に保存。
:LiCheckCircle2 デプロイ + 本番URL確認
各ブロックで Cloudflare Pages デプロイ実施 + HTTP 200 確認済み:
- https://finance.scale-group.co.jp/ / /periods / /forecast / /expenses / /fixed-costs / /revenue / /cashflow / /invoices-issued / /api/kv/* 全て
D1 サーバーサイド化(最終確定)
- DB:
scale-finance-db(id:a45145d8-e4b1-4fea-80c1-441b024ee0e8・APAC リージョン) - スキーマ:
kv_store(key TEXT PK, value TEXT, updated_at INTEGER) - 認証: なし(URL秘匿前提)
- 複数端末同期: 別アカウント端末で 4月・5月・6月の全データが見える
:LiAlertTriangle 注意点・退化リスク
isActiveForMonthヘルパーは 4ファイルで同じロジック使用 → 変更時は全ファイル同時更新EditableCell.commitの空入力挙動変更済 → 旧仕様に戻すと経費管理の null 対応が壊れる- D1 同期: 他端末の変更を反映するにはタブリロード必須(ポーリングなし)
scale-finance/AGENTS.mdにプロンプトインジェクション風の不審な指示が残存 → 削除推奨- ダッシュボード
/は削除予定(ナビにはまだ残っている)
:LiKey 主要KVキー一覧
| KV | 用途 | 月跨ぎ |
|---|---|---|
partner-pay-${month} |
メンバー別収支 | あり |
payment-status-${month} |
着金管理 | あり |
expense-spot-${month} |
突発経費 | あり |
forecast-${month} |
売上予測 | あり |
fixed-cost-master |
固定費マスタ | 全月(動的判定) |
clients / partners-master |
マスタ | 全月 |
bank-accounts / cashflow-${month} |
キャッシュフロー | あり |