最終更新: 2026/06/22 18:56
MAS-016: 営業ファネル連動型売上予測
概要
| 項目 | 内容 |
|---|---|
| 案件ID | MAS-016 |
| カテゴリ | シミュレーション |
| Phase | P3 |
| 優先度 | ★ |
| 所要時間 | 2時間 |
| 実装ステータス | 📝 仕様書段階・実装未着手 (2026-04-28 監査時点) |
| 対象ファイル | 600_report/601_datamart_ingest.js, 600_report/603_datamart_pl.js, 600_report/608_datamart_render.js |
| 関連タブ | 21_bud_pipeline(入力), 63/64(P/L計画 出力先), 77_pj_raw(パイプライン明細ビュー) |
| 前提案件 | なし(既存の確度加重ロジックを拡張) |
目的
21_bud_pipeline の「確度(ヨミ)」を営業ファネルのフェーズとして活用し、フェーズ別コンバージョン率に基づく確率加重売上予測をP/L計画タブに表示する。
背景
現在のシステムには既に確度加重の仕組みが存在する:
- RPA(401_bat_rpa.js):
確度(ヨミ)が「受注」の行のみ INV を生成(確定売上) - マート計画(601_datamart_ingest.js):
dmIngestPipelinePlanData_()で未受注案件を確度加重して P/L 計画に合流
現在のフェーズ定義と加重率:
| フェーズ | 確度 | 現在の処理 |
|---|---|---|
| 受注/Sヨミ | 100% | RPA → 32_wrk_invoice(確定。計画からスキップ) |
| 内示 | 90% | 計画に確度加重で合流 |
| Aヨミ | 80% | 同上 |
| Bヨミ | 50% | 同上 |
| Cヨミ | 25% | 同上 |
| Dヨミ | 10% | 同上 |
| 失注/保留 | — | スキップ |
つまり営業ファネル連動型売上予測は既に実装されている。本案件は以下の拡張を行う:
- ファネル別集計ビューの追加: 確度フェーズ別の売上見込み内訳を可視化
- コンバージョン率の設定可能化: 03_sys_params でフェーズ別確度を設定可能にする
- ファネルサマリーの P/L 計画タブへの表示: 計画 P/L の末尾にファネル内訳セクションを追加
現在のコード
確度加重ロジック(601_datamart_ingest.js L396-421)
// 確度変換
var probStr = idxProb !== -1 ? String(row[idxProb]) : '';
var prob = 1.0;
if (probStr !== '') {
if (probStr.includes('失注') || probStr.includes('保留')) {
continue; // 失注・保留はスキップ
} else if (probStr.includes('内示')) {
prob = 0.90;
} else if (probStr.includes('受注') || probStr.includes('S')) {
continue; // 受注/Sヨミ = 確定 → 32タブINVで管理するためスキップ
} else {
var match = probStr.match(/(\d+)%/);
if (match) {
prob = Number(match[1]) / 100;
} else if (probStr.includes('A')) {
prob = 0.8;
} else if (probStr.includes('B')) {
prob = 0.5;
} else if (probStr.includes('C')) {
prob = 0.25;
} else if (probStr.includes('D')) {
prob = 0.10;
}
}
}
問題点
- 確度がハードコード: A=80%, B=50% 等がコード内に直書きされており、変更にはコード修正が必要
- ファネル別の内訳が見えない: 計画 P/L には確度加重後の合算値しか表示されず、「Aヨミがいくら、Bヨミがいくら」が見えない
- 77_pj_raw に確度列はあるがフェーズ別集計がない: 明細は見えるがサマリーがない
修正方針
Step 1: 確度マスタの 03_sys_params 化
03_sys_params シートに確度テーブルを追加。dmIngestPipelinePlanData_() がハードコードの代わりにこのテーブルを参照する。
// 03_sys_params に追加するパラメータ
PROB_S = 1.00 // 受注/Sヨミ(計画からスキップ)
PROB_NAIJI = 0.90 // 内示
PROB_A = 0.80 // Aヨミ
PROB_B = 0.50 // Bヨミ
PROB_C = 0.25 // Cヨミ
PROB_D = 0.10 // Dヨミ
フォールバック: 03_sys_params に値がない場合は現在のハードコード値を使用。
Step 2: ファネル別集計の追加
dmIngestPipelinePlanData_() の戻り値に、フェーズ別の月次集計データを追加。
// 戻り値の拡張
return {
planData: events,
viewData: viewRows,
funnelSummary: {
// フェーズ別 × 月別の加重前・加重後金額
'内示': { raw: [0,0,...,0], weighted: [0,0,...,0] },
'Aヨミ': { raw: [0,0,...,0], weighted: [0,0,...,0] },
'Bヨミ': { raw: [0,0,...,0], weighted: [0,0,...,0] },
'Cヨミ': { raw: [0,0,...,0], weighted: [0,0,...,0] },
'Dヨミ': { raw: [0,0,...,0], weighted: [0,0,...,0] },
}
};
Step 3: P/L 計画タブにファネルサマリーセクションを追加
dmBuildPlOutput_() の計画モード時(isActualOnly=false)に、P/L の末尾にファネル内訳セクションを追加。
■ パイプライン売上内訳(確度別)
内示 (90%) [加重後金額 × 12ヶ月]
Aヨミ (80%) [加重後金額 × 12ヶ月]
Bヨミ (50%) [加重後金額 × 12ヶ月]
Cヨミ (25%) [加重後金額 × 12ヶ月]
Dヨミ (10%) [加重後金額 × 12ヶ月]
【パイプライン計】 [合計]
(参考: 加重前合計) [確度適用前の金額合計]
影響範囲
| 変更ファイル | 変更量 | 内容 |
|---|---|---|
600_report/601_datamart_ingest.js | 約30行追加 | 確度の sys_params 参照化 + funnelSummary 集計 |
600_report/603_datamart_pl.js | 約20行追加 | 計画モード時のファネルサマリーセクション出力 |
600_report/608_datamart_render.js | 約5行追加 | ファネル行の書式定義 |
既存の P/L 実績タブ(61/62)には影響なし。計画タブ(63/64)の末尾に追加。
注意事項
- 受注/Sヨミは表示しない: 確定売上は 32_wrk_invoice 経由で実績 P/L に反映済み。ファネルサマリーには未確定フェーズのみ表示
- 確度 100% の扱い:
PROB_S=1.00でもファネルにはカウントしない(受注=確定なので)。if (prob >= 1.0) continueの既存ロジックを維持 - 03_sys_params の読み込み:
Envモジュール経由ではなく、シートから直接読む既存パターン(ctx.sysParams)を使用 - 77_pj_raw との整合性: 77_pj_raw にはパイプライン明細が表示されている。ファネルサマリーはそのヘッダー集計版
- 実績タブへの影響なし: ファネルサマリーは計画モード(
isActualOnly=false)でのみ表示
関連ドキュメント
| 仕様書 | 関連箇所 |
|---|---|
| パイプラインRPA | 21_bud_pipeline のスキーマ、確度フェーズの定義 |
| P/L 仕様 | P/L 出力レイアウト |
| パイプライン計画 | dmIngestPipelinePlanData_() の設計 |
| MAS-001 予実差異分析 | P/L 出力配列の拡張パターン(参考) |
人間が検討すべき事項
- ファネルのフェーズ定義と各フェーズの確率設定(現行の A/B/C/D/内示 で十分か、リード/商談 等を追加するか)
- ファネルサマリーの表示位置(P/L 末尾 vs 別シート)
- 加重前金額(参考値)の表示要否
- 03_sys_params での確度変更が既存の計画P/Lに遡及的に影響する点の許容
実装プロンプト(Claude Code 用)
あなたはGAS会計システム(bizlp-gas-accounting)のシニア開発者です。
案件 MAS-016「営業ファネル連動型売上予測」を実装してください。
## 背景
21_bud_pipeline の確度加重は既に dmIngestPipelinePlanData_() で実装済み。
本案件は3つの拡張を行う:
1. 確度のハードコードを 03_sys_params から読み込む方式に変更
2. フェーズ別の月次集計データ(funnelSummary)を戻り値に追加
3. P/L 計画タブ(63/64)の末尾にファネル内訳セクションを表示
## 実行前タスク
以下のファイルを読み込み、現状を把握すること:
- `600_report/601_datamart_ingest.js` — dmIngestPipelinePlanData_() L363-480
特に確度変換ロジック L396-421
- `600_report/603_datamart_pl.js` — dmBuildPlOutput_() の出力配列構造
- `600_report/602_datamart_main.js` — pipeResult の使用箇所、ctx の構築
- `600_report/608_datamart_render.js` — 書式定義のパターン
- `docs/dev/dev_mas-016_funnel_forecast.md` — 本仕様書
## 修正対象ファイル
1. `600_report/601_datamart_ingest.js` — 確度の sys_params 参照化 + funnelSummary
2. `600_report/603_datamart_pl.js` — ファネルサマリーセクション追加
3. `600_report/608_datamart_render.js` — ファネル行の書式定義
## 実装内容
### Step 1: 確度の sys_params 化
dmIngestPipelinePlanData_() の冒頭で ctx.sysParams から確度値を読み込む。
キー: PROB_NAIJI, PROB_A, PROB_B, PROB_C, PROB_D
フォールバック: キーがなければ現行のハードコード値(0.90, 0.80, 0.50, 0.25, 0.10)
### Step 2: funnelSummary の集計
既存の events.push() ループ内で、フェーズ名ごとに月別の加重前金額・加重後金額を集計。
戻り値の funnelSummary プロパティに設定。
### Step 3: P/L 計画タブにファネルセクション追加
dmBuildPlOutput_() で isActualOnly=false(計画モード)の場合のみ、
P/L 出力配列の末尾にファネル内訳を追加:
- グループヘッダー「■ パイプライン売上内訳(確度別)」
- 各フェーズ行(内示/A/B/C/D × 加重後月次金額)
- 小計行
- 参考: 加重前合計行
## 制約
- 既存の dmIngestPipelinePlanData_() の戻り値 planData / viewData は変更しない(追加のみ)
- 実績タブ(61/62)には影響させない(計画モードのみ)
- 受注/Sヨミ(確定売上)はファネルに含めない
- 確度の数値解析(`NN%` パターンマッチ)の既存ロジックは維持
## 動作確認
1. 03_sys_params に PROB_A=0.80 等を設定
2. `npm run push:dev` → updateAllDatamarts() を実行
3. 63 タブ(P/L計画 単月)の末尾に「パイプライン売上内訳」セクションが表示されること
4. 各フェーズの金額が 21_bud_pipeline の該当行 × 確度と一致すること
5. 61 タブ(P/L実績)にはファネルセクションが表示されないこと
6. 03_sys_params の確度値を変更 → マート更新で金額が変わること
7. 03_sys_params に確度キーがない場合 → ハードコード値で動作すること
### 拡張思考の使用状況
| フェーズ | 拡張思考 | 備考 |
|---------|:--------:|------|
| sys_params 読み込み | なし | 既存パターンの踏襲 |
| funnelSummary 集計 | あり | 既存ループ内でフェーズ別集計を追加する挿入位置の判断 |
| P/L ファネルセクション | あり | 計画モード判定、出力配列の末尾追加、書式の整合性 |
### 推奨実行モデル
| 工程 | 推奨モデル | 理由 |
|------|----------|------|
| 全工程 | **Claude Opus 4.6** | 既存の確度加重ロジックの理解とP/L出力構造の拡張に会計ロジックの理解が必要 |
推奨実行モデル
| 工程 | 推奨モデル | 理由 |
|---|---|---|
| 仕様書作成 | Claude Opus 4.6 | 既存コードの分析(確度加重が既に実装済みの発見)、拡張方針の設計 |
| 実装 | Claude Opus 4.6 | 601/603/608 の3ファイル横断、計画モード判定、funnelSummary 集計 |
変更履歴
| 日付 | 変更内容 |
|---|---|
| 2026-04-15 | 初版作成。既存の確度加重ロジックを分析し、3段階の拡張を設計 |