コンテンツにスキップ

KPI・予実ダッシュボード

位置づけ: 一部試作実装済み(crm_app /performance 画面)/本体(DB化・等級表マスタ・予算管理画面・評価サイクル連動)は後続フェーズ

KPI・予実ダッシュボードは、現行 Excel「営業成績ステータス(完工ベース)」で行われている予算・実績管理を CRM に置き換える機能である。営業マン・部署・事業部の3軸で予算と実績を横並びに表示し、差異・達成率を自動算出したうえで、等級表マスタと連動してインセンティブ額まで機械的に算出する。

根拠資料は BT社「現状の予算・実績管理方法の概要」、VE社「バリュー評価制度」、および現行Excelの構造分析である。売上計上・賞与計算の業務ルールは VE社「バリュー評価制度」に定義される制度をそのまま踏襲する。試作(React+TS)で画面イメージとデータモデル案の検証を実施し、本ページはその結果を確定仕様として記述する。

この試作は crm_app に /performance「営業成績」画面として実装済みである(サイドナビ「レポート」直下)。ただし実装範囲は限定的であり、DB化された予算・等級表マスタは伴わず、ブラウザ内の状態管理(zustand persist、ストアキー crm:sales-perf)でシード値を保持する軽量な検証実装にとどまる。実装済みの範囲と、本ページが定義する本体仕様との差分は次節「試作実装の状況」に明記する。

試作実装の状況(crm_app /performance)

Section titled “試作実装の状況(crm_app /performance)”

画面: サイドナビ「レポート」直下に「営業成績」(ルート /performance)を配置する。1画面構成で、上から (1) 全社KPI(売上・実粗利・粗利率・インセンティブ総額)+期間トグル(今月/先月/全期間、既定=全期間)、(2) 営業マン別テーブル(氏名・部署・等級・売上・粗利・粗利予算・達成率・インセンティブ率・インセンティブ金額)、(3) 事業部(部署)別サマリー(粗利/予算、達成率、インセンティブ支払予定額)の順に並ぶ。後掲「画面・機能」節が定義する事業部→部署→営業マンのドリルダウン型3画面、目標設定画面、等級表マスタ画面は、この試作には含まれない。

データ源: 案件(Deal。proposal=提案金額を売上、margin=粗利として使用)と、新規の軽量マスタ2種——営業マンマスタ SalesRep(氏名・部署・等級)、予算 Budget(repId・月・売上目標・粗利目標)。両マスタは zustand persist ストア useSalesPerf(ストアキー crm:sales-perf)にシード値ごと保持し、DBテーブル化はしていない。氏名の紐付けは Deal の roles.クローザー(自由文字列)と SalesRep.name の完全一致による。

集計ルール(実装 src/lib/salesPerf.ts の salesPerf() 準拠):

  • 計上対象は status が「成約/工事/完了」のみ。アポ・前確・商談・保留は未成約として集計対象外とし、失注・クーリングオフはキャンセル相当として除外する(ValueOSの「有効案件限定・キャンセル除外」判定と同じ思想。後掲「ValueOSとの対応」参照)。
  • 計上月は完工ベース:milestones の key="kankou"(完工)が「完了」であればその date の月とする。未完工の場合は closeDate(成約日)の月にフォールバックする。
  • 達成率=粗利 ÷ 粗利予算。予算行が対象期間に存在しない場合は「—」表示とし、後掲「指標定義」節のフォールバック方針と整合させる。

インセンティブ(現状実装=簡易式): 「粗利 × 等級別反映率」で算出する。反映率は定数 INCENTIVE_RATE で S=6.0%/A=4.0%/B=2.5%/C=1.5%と定義する。この簡易式は、後掲「インセンティブ自動算出(等級表連動)」節が定義する正式仕様(超過粗利 max(0, 実績粗利−予算粗利) に対する PS/WMS/FS/ESのチャネル別係数ロジック、反映日つき等級表マスタでの版管理)とは異なる暫定の代替実装である。正式仕様への置き換えは、後続フェーズで等級表マスタ(反映日つき履歴管理)とチャネル別係数ロジックを実装した時点で行う。

出典: 集計ロジックは background/budget-actuals.md(BT社資料「現状の予算・実績管理方法の概要」、Excel「【住設】営業成績ステータス_完工ベース」の分析)に準拠する。

第1弾リリース(催事+アイテム+商社)の範囲外であり、後続フェーズで実装する。前節の /performance 試作画面は集計ロジックの早期検証であり、本節が定義するDB化・等級表マスタ・目標設定画面を伴う本体機能の実装をもって対応完了とする。対象は次の3領域である。

領域内容
予実管理営業マン/部署/事業部 × 月次・四半期の予算・実績・差異・達成率、および未入金額・業務アラートの集計と表示(未入金額は商社(卸)の発注/請求/入金エンティティ化に依存。フェーズ区分 参照)
インセンティブ自動算出等級表マスタと超過粗利からインセンティブ額を自動計算し、支払予定額を集計
目標設定管理者による期初の四半期・月次目標の登録と、期中改定の履歴管理

日次・週次粒度への対応、経費配賦を含む営業利益の完全自動化、AIによる予実サマリ生成、マルチテナント予実は本フェーズの対象外とする。範囲外事項の位置づけは フェーズ区分 を参照。

現状の本番DBには予算・評価(等級)・ダッシュボード設定のテーブルが存在せず、DB化された予実管理・インセンティブ可視化は未実装である(実コード・DBダンプで確認済みの事実。テーブル定義・スキーマ概要 参照)。前節「試作実装の状況」の /performance 画面は、これらのテーブルをDB化せずブラウザ内 zustand persist の軽量マスタ2種(SalesRep・Budget)で代替した先行検証であり、ここでの「未実装」の評価を変えるものではない。一方、実績側の素材(contracts の total_amount(提案金額)・settlement_amount(仕切り金額)、customer_progress.construction_completion_date(完工日)、operation_reports の稼働、es_reports の催事実績)は揃っており、BT社「現状の予算・実績管理方法の概要」の集計ロジックは再利用可能な資産である(同ロジックは KPIダッシュボード の集計仕様と共通の素材を用いる)。不足は「予算」「等級マスタ」「設定」の3領域であり、新規テーブルの追加と現行Excel(Q目標設定・等級表)からの初期取込で補う。

エンティティ主なフィールド概要
営業マンマスタ拡張氏名・所属(部署/事業部)・役割・インセンティブ等級(改定履歴つき)既存の営業マンマスタ(users:belongs_id=事業部、sub_belongs_id=課、employee_post=役職)にインセンティブ等級と履歴を追加する
予算テーブル対象(営業マン/部署/事業部)・期間(月次/四半期)・目標売上・目標粗利・目標営業利益変更履歴を保持し、期中改定を追跡する
実績テーブル受注日・完工日・売上・名目/実質減価・粗利契約・完工登録から自動生成し、手動補正は履歴つきで記録する
等級表マスタ等級・反映率・適用期間見積・価格表 の SalesPrice と同型の「反映日 → 現在値導出」パターンで版管理する
ダッシュボード設定既定表示期間・既定表示指標利用者ごとの個人設定

マスタ系画面(営業マンマスタ拡張・等級表マスタ)は既存の定型(MasterScreen:テーブル+ドロワー+履歴、サイドバー「マスタ」集約)に統合する。以下、各エンティティのフィールド定義を示す。フィールド名は暫定の設計名であり、実装時に既存命名規則(users・contracts 等のスネークケース)へ合わせる。

営業マンマスタ拡張 — フィールド表

Section titled “営業マンマスタ拡張 — フィールド表”
フィールド型・enum必須既定制約・備考
salesUserIdstring(users.id 参照)必須—既存営業マンマスタへの拡張のため新規IDは発行しない
departmentstring(users.belongs_id 参照)必須—事業部。Google Workspace 正の所属同期方針(役割・権限)と整合させる
sectionstring(users.sub_belongs_id 参照)任意undefined課。事業部集計シートの「【東京FS】全体」等の単位に対応
incentiveGradestring(等級表マスタ参照)任意undefined未設定時はインセンティブ算出対象外(後述「エッジケース・異常系」参照)
gradeHistoryGradeHistoryEntry[]必須(空配列可)[]{ grade, effectiveDate, changedBy, changedAt }。等級改定のたびに追記し、行を書き換えない
incentiveChannelenum(PS/WMS/FS/ES)任意所属から導出Deal.channel との対応は「インセンティブ自動算出(等級表連動)」の節を参照
フィールド型・enum必須既定制約・備考
idstring必須—
targetTypeenum(営業マン/部署/事業部)必須—集計軸3層のいずれかを指定
targetIdstring(対象マスタ参照)必須—targetType に応じて salesUserId/部署ID/事業部IDのいずれかを保持
periodTypeenum(月次/四半期)必須—月次はM1/M2…。四半期(現行ExcelのQ目標設定に対応)と評価サイクルの算定期間(4ヶ月・第1〜3期)は区切りが一致しないため、対応づけは確認事項を参照
periodValuestring(例:“2026-M1”)必須—
targetRevenuenumber(円・税抜)必須—税抜計算の原則(VE社「バリュー評価制度」)に準拠
targetGrossProfitnumber(円・税抜)必須—名目/実質の区別は確認事項を参照
targetOperatingProfitnumber(円・税抜)任意undefined経費配賦ルールのシステム化範囲は確認事項を参照
managerFinalBudgetnumber(円)任意undefined「役職者の最終予算」。算出式は確認事項を参照(FS/ES 係長以上が対象)
claimAdditionboolean+amount任意falseクレーム費用の予算追加(過去1年以内の完工案件が対象)を表す手動フラグ
carryoverFlagboolean+amount任意false未達時の賞与繰越(翌タームへの予算改定)を表す手動フラグ
expenseCarryoverboolean+amount任意false採用費・経費枠超過分の繰越を表す手動フラグ
revisionHistoryRevisionEntry[]必須(空配列可)[]{ revisedAt, revisedBy, before, after, reason }。期中改定は必ずここに記録する
statusenum(登録済/改定中/確定)必須登録済締め処理でのロック状態を表す(後述「状態遷移・ワークフロー」参照)
フィールド型・enum必須既定制約・備考
idstring必須—
salesUserIdstring(users.id 参照)必須—
dealIdstring(契約・案件参照)必須—contracts の該当レコードに対応
channelenum(訪問販売/催事/反響/パートナー)必須Deal.channel から継承
orderDatedate任意undefined受注日。Excel項目を踏襲するが売上計上の起点には用いない
completionDatedate必須(確定時)undefined完工日。customer_progress.construction_completion_date に対応し、売上計上の起点となる
revenuenumber(円・税抜)必須(確定時)—入金確認済み案件のみ計上(後述「業務ルール」参照)
nominalCost / nominalGrossProfitnumber(円)任意undefined名目減価/名目粗利。内訳の粒度は確認事項を参照
actualCost / actualGrossProfitnumber(円)任意undefined実質減価/実質粗利。同上
operatingProfitnumber(円)任意undefined粗利-経費配賦。経費データが現状DBに存在しないため確認事項を参照
confirmedFlagenum(暫定/確定)必須暫定算定期間中は暫定値。締め処理後に確定へ遷移(後述「状態遷移・ワークフロー」参照)
manualAdjustmentboolean+履歴任意false手動補正時は編集履歴(変更者・変更前後・日時)を必須で記録する
sourceenum(自動反映/手動補正)必須自動反映商談・契約・完工登録との連携経路を明示する
フィールド型・enum必須既定制約・備考
idstring必須—
gradeCodestring必須—業績等級表(例:FSAP①業績等級表)の等級コード
incentiveChannelenum(PS/WMS/FS/ES)必須—反映率はチャネルごとに異なるため、等級×チャネルの組で1行とする
reflectionRatenumber(%)必須—PS=10%(課全体を該当人員数で分配)/WMS=15%/FS・ESは係数ロジック(初期実装範囲は確認事項)
coefficientParamsobject任意undefinedFS/ES 用の係数パラメータ(予算達成率・育成数・レーン稼働・生産性等)。資料 P.16〜18 準拠、格納方式は確認事項
effectiveDatedate必須—版のキー。SalesPrice と同型の「反映日 → 現在値導出」で管理する
endDatedate任意undefined(無期限)
memostring任意undefined

現在値の導出は、等級×チャネルごとに「effectiveDate <= 基準日(endDate があれば 基準日 <= endDate も満たす)」の行のうち反映日が最新の1件を採用する。これは 見積・価格表 の currentSalesPrice() と同一のアルゴリズムを踏襲する設計とする。

ダッシュボード設定 — フィールド表

Section titled “ダッシュボード設定 — フィールド表”
フィールド型・enum必須既定制約・備考
userIdstring(users.id 参照)必須—
defaultPeriodTypeenum(月次/四半期)必須月次
defaultMetricenum(売上/粗利/営業利益/達成率)必須達成率画面初期表示の主役指標を切り替える個人設定
defaultFilterobject任意undefined部署・事業部・チャネルの複合フィルタの既定値

再現対象 — 現行Excelの構造とCRM対応

Section titled “再現対象 — 現行Excelの構造とCRM対応”

現行Excelは営業マン個別シート・部署/事業部集計シート・目標設定シート・等級表シートの4層構造である。それぞれをCRMの対応先に割り当てる。

Excel構成要素内容CRMでの対応先
営業マン個別シート氏名・所属エリア+「マンスリー」M1/M2…の月次行営業マン別ダッシュボード
M1/M2行の項目売上・名目減価・名目粗利・実質減価・実質粗利・営業利益(税抜)・インセンティブ反映率・金額月次指標セットとして踏襲
部署・事業部集計シート「【東京FS】全体」等でメンバー実績を合算部署/事業部ダッシュボード
Q目標設定シート四半期・月次の売上/粗利/営業利益目標、生産性(1人あたり売上)予算(目標)設定画面
等級表シート業績等級 → インセンティブ反映率の対応等級表マスタ

画面群は視線の流れ(最初に見る → 次に比較する → 最後に行動する)に沿って構成する。

画面主な役割主な利用者
事業部ダッシュボード事業部全体のM1/M2予算・実績・達成率を俯瞰する。未達部署を先に目に入れる配置とする事業部責任者
部署ダッシュボード事業部からドリルダウンし、部署内メンバーの実績を比較する部署マネージャー
営業マン別ダッシュボード個人のM1/M2予算・実績・差異・インセンティブ見込みを表示する営業マン本人・上長
目標設定(予算管理)画面期初の四半期・月次目標を入力し、改定履歴を確認する管理者
等級表マスタ画面等級 × 反映率の一覧・履歴を管理する(MasterScreen定型)管理者

試作 /performance 画面は、この5画面のうち集計ロジックを1画面(全社KPI+営業マン別テーブル+部署別サマリー)に凝縮した簡易版であり、ドリルダウン遷移・目標設定画面・等級表マスタ画面は含まない(詳細は前掲「試作実装の状況」参照)。以下は本体機能としての設計仕様である。

集計軸は営業マン → 部署(営業課) → 事業部の3軸ロールアップとし、事業部全体から個人へ掘り下げるドリルダウンを基本動線とする。期間軸は月次(M1/M2…)を基本単位とし、四半期・年度累計を導出する。表示フォーマットは現場の慣れを維持するため、M1/M2月次行を横方向に「予算・実績・差異・達成率」で並べる現行Excel踏襲レイアウトとする。予算軸には役職者の最終予算(部下全員分の予算を合算した予算)を含め、役職者ビューで参照できるようにする。チャネル切り口(Deal.channel=訪問販売/催事/反響/パートナー)はBT社「現状の予算・実績管理方法の概要」の指標と整合させる。なお、後述のインセンティブ算定チャネル(PS/WMS/FS/ES、評価制度固有の呼称)はDeal.channelとは別の分類軸であり、対応関係は「インセンティブ自動算出(等級表連動)」の節を参照する。絞り込みは期間・部署・事業部・チャネルの複合フィルタとし、現行Excelのシート切り替えを同一画面上のフィルタUIに統合する。

各画面は「予算・実績・差異・達成率」を主役に据え、インセンティブ額は結果指標として画面下部・詳細ドロワーに配置する。色は状態色(達成/未達)を独立させ、ブランド色や操作色と混同しない設計とする。画面の見せ方は数パターンを試作し、先方と比較したうえで選定する進め方を踏襲する。

  • ドリルダウン:事業部ダッシュボードの行クリックで部署ダッシュボードへ、部署ダッシュボードの行クリックで営業マン別ダッシュボードへ遷移する。フィルタ条件(期間・チャネル)は遷移先に引き継ぐ。
  • 達成率の表示:達成率は「実績 ÷ 予算」の百分率で表示し、未達(100%未満)は状態色(注意色)、達成(100%以上)は状態色(達成色)で塗り分ける。ブランド色・操作色とは独立した配色とする(UIデザイン指針の「色の役割設計」に準拠)。
  • 暫定値の可視化:算定期間中(締め未到達)の月次セルには暫定値であることを示す表示(バッジ等)を付け、確定後は同一セルが確定値表示に切り替わる(切替条件は「評価サイクルとの整合」参照)。
  • 目標設定画面の入力:管理者が対象(営業マン/部署/事業部)・期間・目標売上/粗利/営業利益を入力する。保存時は revisionHistory に変更前後の値を記録し、既存値の上書きは行わない(イミュータブルな履歴)。
  • 等級表マスタ画面:MasterScreen定型(テーブル+ドロワー+履歴)に従い、行選択でドロワーを開き反映率・適用期間を編集する。編集は新しい反映日付き行の追加として扱い、既存行は書き換えない。

指標定義(予算・実績・差異・達成率)

Section titled “指標定義(予算・実績・差異・達成率)”
指標定義算出基準・データ源
売上完工日基準・税抜・入金確認済み案件のみ計上(評価制度の共通ルール準拠)contracts の金額+完工日
名目粗利/実質粗利売上 − 名目減価/実質減価。Excel項目をそのまま踏襲する減価内訳の粒度は確認事項を参照
営業利益(税抜)粗利 − 経費配賦経費データは現状DBに存在せず、システム化範囲は確認事項を参照
差異・達成率実績 − 予算/実績 ÷ 予算予算テーブル×実績テーブルから全軸・全期間で共通計算する
インセンティブ反映率・金額等級表参照 × 超過粗利で自動算出する(詳細は次節)等級表マスタ連動
生産性(1人あたり売上)事業部集計での表示指標分母(人員数)の定義は確認事項を参照

売上計上は VE社「バリュー評価制度」に定義される「税抜計算の原則」「完工基準の適用」「締め日と入金確認」の3ルールに準拠する。締め日は算定期間最終月の翌月末日までであり、完工証明書類に不備がなく入金確認が取れた案件のみを計上する。

達成率の算出式は 実績 ÷ 予算 × 100(%表示)とする。予算が 0 または未登録の場合は除算不能のため、達成率欄は「—」(未算出)を表示し、差異(実績−予算)のみを表示するフォールバックとする(後述「エッジケース・異常系」参照)。インセンティブ額・達成率の端数処理(四捨五入/切り捨て等の方針)は根拠資料に明記がなく、確認事項とする。

インセンティブ自動算出(等級表連動)

Section titled “インセンティブ自動算出(等級表連動)”

基本式は 超過粗利 × 職位別反映率 = インセンティブ額 である。等級表(業績等級表)をマスタ化し、営業マンの等級から反映率を自動参照する。この正式仕様は未実装であり、試作 /performance 画面は「粗利 × 等級別反映率(S/A/B/C 一律)」の簡易式で代替している(前掲「試作実装の状況」参照)。予算・反映率の算式は、PS/WMS/FS/ESの4区分(VE社「バリュー評価制度」に定義される評価制度固有のインセンティブ算定チャネル)ごとに異なる。この4区分はインセンティブ算定専用の呼称であり、Deal.channel(訪問販売/催事/反響/パートナーの4値)とは別の分類軸である。対応関係は次のとおり。

インセンティブ算定チャネル(評価制度)対応するDeal.channel
PS(代理店販売)パートナー
WMS(反響販売)反響
FS(訪問販売)訪問販売
ES(催事販売)催事
インセンティブ算定チャネル予算反映率
PS(代理店販売)課全体の予算超過粗利額に対して発生10%を該当人員数で分配
WMS(反響販売)個人の予算超過粗利額に対して発生15%
FS(訪問販売)予算達成率・育成数重視の係数ロジック係数はチャネル別算式の初期実装範囲に依存する
ES(催事販売)予算・レーン稼働・生産性の係数ロジック係数はチャネル別算式の初期実装範囲に依存する

超過粗利の算出式は 超過粗利 = max(0, 実績粗利 − 予算粗利(目標粗利)) とする(用語定義は 用語集 の「超過粗利」に準拠)。PS・WMSは超過粗利にそのまま反映率を乗じる単純式だが、FS・ESは資料 P.16〜18 の係数ロジック(平均粗利係数/低粗利係数)が別途適用され、予算達成・未達に関わらず指定の計算式で算出される点がPS・WMSと異なる。係数ロジックの数式化・初期実装範囲は確認事項とする。

営業マンマスタにインセンティブ等級を保持し、等級改定は反映日つき履歴で管理する(見積・価格表 のSalesPrice方式と同型の「反映日 → 現在値導出」パターン)。営業マンに等級が未設定、または反映日が基準日より未来の行しか存在しない場合は、反映率が確定しないためインセンティブ額を算出せず、ダッシュボード上は「等級未設定」を表示して算出対象から除外する。役職者は自分の予算に部下全員分の予算を加算し、超過粗利に職位別反映率を課す「役職者の最終予算」(部下全員分の賞与額 × 118%)を予算軸に含める(FS/ES 係長以上が対象)。予算改定(クレーム費用の予算追加、未達時の賞与繰越、経費超過の繰越)は、初期は手動フラグと履歴の記録で運用し、自動計算は将来フェーズで対応する。管理者ビューには部署全体のインセンティブ支払予定額の集計を表示する。

インセンティブ自動算出は、VE社「バリュー評価制度」に定義される職位評価サイクル(年3回)と同期させる。CRM側の締め処理・確定フラグ設計は、この査定サイクルを前提とする。

期算定期間査定・確定賞与反映
第1期4月〜7月8月中9月給与
第2期8月〜11月12月中1月給与
第3期12月〜3月4月中5月給与

職位評価(個人の実力・パフォーマンス、定量100%)は4ヶ月ごとの査定で賞与に反映する。役職評価(組織運営責任、定量100%)は年1回・毎年4月に固定給改定・昇降格へ反映する。二軸を混同せず、ダッシュボード上でも表示欄を分ける。各期は「M4:期末30日」を区切りに査定するため、月次ダッシュボードの実績値は算定期間中は暫定値として表示し、査定確定後に確定値表示へ切り替える。予算未達でも賞与が発生している場合の翌タームへの繰越処理(予算改定)は、当面はダッシュボード上の手動フラグと履歴で表現し、自動計算は将来フェーズで対応する。

予算テーブルは期初登録から締め確定まで次のライフサイクルをとる。

stateDiagram-v2
    [*] --> 登録済: 管理者が期初に四半期・月次目標を登録
    登録済 --> 改定中: 期中の改定事由が発生(クレーム費用追加/経費超過繰越/未達時の賞与繰越)
    改定中 --> 登録済: 改定内容をrevisionHistoryに記録し確定
    登録済 --> 確定: 締め日(算定期間最終月の翌月末)到達・査定確定
    確定 --> [*]

実績テーブルの confirmedFlag は、算定期間中の自動反映と締め処理後のロックを次のように遷移する。

stateDiagram-v2
    [*] --> 暫定: 契約・完工登録から自動反映
    暫定 --> 暫定: 手動補正(編集履歴を必須で記録)
    暫定 --> 確定: 締め日到達+入金確認+完工証明書類の不備なし+査定確定
    確定 --> [*]
    note right of 確定
        確定後の修正は別途の
        訂正フローを要する
        (運用ルールは確認事項)
    end note
sequenceDiagram
    participant Sales as 営業マン
    participant Deal as 商談・契約・完工登録
    participant Actual as 実績テーブル
    participant Admin as 管理者
    participant Grade as 等級表マスタ
    participant Budget as 予算テーブル
    participant Dash as ダッシュボード

    Sales->>Deal: 完工登録・入金確認
    Deal->>Actual: 完工日・売上・減価を自動反映(confirmedFlag=暫定)
    Dash->>Actual: 算定期間中は暫定値として表示
    Note over Actual: 締め日(算定期間最終月の翌月末)到達
    Admin->>Actual: 完工証明書類の不備チェック・入金確認
    Actual->>Actual: confirmedFlag=確定 にロック
    Actual->>Budget: 実績と予算を突合し超過粗利=max(0,実績粗利-予算粗利)を算出
    Budget->>Grade: 営業マンの等級・チャネルから反映率を参照(effectiveDate<=基準日の最新1件)
    Grade-->>Budget: 反映率を返す(該当行なしなら未算出)
    Budget->>Dash: インセンティブ額=超過粗利×反映率を確定表示
    Dash->>Sales: 査定確定後の確定値・インセンティブ見込みを表示
sequenceDiagram
    participant Admin as 管理者
    participant Budget as 予算テーブル
    participant Dash as ダッシュボード

    Admin->>Budget: 目標売上/粗利/営業利益の変更を入力
    alt クレーム費用の予算追加
        Note over Budget: 過去1年以内に完工した案件のクレーム負担額を該当営業担当(部署)の予算に加算
    else 経費超過の繰越
        Note over Budget: 採用費・経費枠の超過分を翌タームの予算に繰越
    else 未達時の賞与繰越
        Note over Budget: 営業課・支部全体の予算未達でも賞与が発生している場合、該当額を翌タームに繰越
    end
    Budget->>Budget: revisionHistoryに変更前後の値・変更者・変更日時・事由を記録(既存行は書き換えない)
    Budget->>Dash: 改定後の予算値を即時反映、履歴タブから変更前の値も参照可能にする
  • 予算入力:管理者が期初に四半期・月次目標を登録する。期中変更は履歴を残して改定する。
  • 実績反映:商談・契約・完工登録と連携して自動反映する。手動補正は編集履歴を必須とする。
  • 締め処理:締め日(算定期間最終月の翌月末)・入金確認を経て確定値をロックする確定フラグを、案件・期間の組で保持する。
  • 税抜計算:予算・実績(売上・粗利)はすべて税抜で計算する(VE社「バリュー評価制度」の共通ルール)。
  • 完工基準:締め日までに着工していても、期間内に完工していなければ未計上とする(完工日を起点に売上計上)。
  • 反映日パターン:等級表マスタは「反映日 → 現在値導出」のイミュータブル版管理とし、行を書き換えず新しい反映日付き行を積む(SalesPriceと同型)。
  • フォールバック:予算未登録・0の場合は達成率を「—」表示、等級未設定の場合はインセンティブ額を「未設定」表示とし、いずれも集計対象から除外する(合算値がゼロ扱いで歪まないようにする)。
  • Excel・等級表からの初期取込:現行Excel(Q目標設定・等級表シート)の内容を初期データとして取り込む。取込フォーマットと遡及移行期間は確認事項を参照。移行タイミングはデータ移行全体方針に従う(移行計画 参照)。
  • 通知連携:達成率アラート等のチャット通知は将来フェーズで対応する(チャット・コラボレーション 参照)。

営業マンは自分の数字のみを閲覧し、管理者は部署・事業部を横断して閲覧する想定である。実装の正本 crm_app/app/src/lib/permissions.ts に基づく 権限設計(第1弾) は、対象を催事・アイテム(商品マスタ)・商社(卸)の3モジュールに限定しており、顧客/商談CRM・見積・KPI予実領域の権限は明示的に対象外としている。本領域(予算・実績・等級・ダッシュボード設定)の権限は、役割・権限(全体設計) が定める権限スコープ4段+管理者のたたき台(メンバー ⊂ チームリーダー ⊂ 拠点管理 ⊂ 全社管理+システム管理者)に従う想定であり、同ページは「全社管理」スコープの見える範囲に明示的に「KPI/評価/予実」を含めている。ただし、この4段スコープモデル自体が「方針案(定例会での合意未確認)」の段階であり、KPI予実領域に対する権限ガードのコードは現行実装(lib/permissions.ts)に存在しない。等級表マスタ・予算テーブルの編集権(管理者相当のスコープ)と、営業マン別ダッシュボードの自分の数字への限定閲覧(メンバースコープ)は、権限スコープが確定した段階で実装する対応関係として整理する。

  • 予算未登録:対象・期間の組に予算が存在しない場合、差異・達成率は算出不能として「—」を表示し、実績のみを表示する。事業部・部署の合算値には含めない。
  • 等級未設定:営業マンにインセンティブ等級が設定されていない、または等級表に有効な反映率行(effectiveDate<=基準日)が存在しない場合、インセンティブ額を「未設定」と表示し、部署合算のインセンティブ支払予定額からは除外する。
  • 実績ゼロ件:期間内に完工実績が0件の営業マン・部署・事業部は、売上・粗利を0として表示し、達成率は上記フォールバックに従う(レイアウトは崩さない)。
  • 重複反映率行:同一等級・同一チャネルで反映日が重複する行が登録された場合、effectiveDate が最新の1件のみを採用し、旧行は履歴として保持する(版管理のイミュータブル方針に従う)。
  • 完工後の取消・返品:完工登録後に案件がキャンセル・クーリングオフとなった場合の実績テーブルへの反映方法(取消フラグか実績削除か)は確認事項とする。
  • 異常値:売上・粗利がマイナス値となるケース(返金・値引き調整等)の扱いは確認事項とする。超過粗利の算出式 max(0, 実績粗利-予算粗利) により、予算未達時の超過粗利は必ず0となりマイナスのインセンティブは発生しない。
  • 暫定値の締め跨ぎ表示:算定期間の途中で当月データを閲覧した際、確定済みの過去月と暫定の当月が同一画面に混在する。両者は表示(バッジ等)で区別し、合算値(四半期累計等)に暫定値を含めるかどうかは確認事項とする。
  • 役職者ビューの二重計上防止:役職者の最終予算は「部下全員分の予算を合算」するため、部下個人のダッシュボードと役職者ビューを両方集計する画面(事業部ダッシュボード等)で二重計上しないよう、集計対象(個人分のみ/役職者の最終予算込み)を明示する。

ValueOSの経営ダッシュボード(集計関数 aggregateDashboardV1)は、売上(税抜)を期間内に請求日 invoices.invoice_date を持つ有効請求(取消 除く・isActiveCaseStatus が真の案件のみ)の税抜金額合計、実粗利を案件単位の確定粗利(revenue − cost − fee)を期間内請求の税抜金額比で按分した合計、粗利率を実粗利÷売上、未入金額を通常決済の summarizeInvoicePayments().unpaidAmount と3社間決済の回収残高(computeThreePartyRecoveryAmounts)の合算(期間非連動)として算出し、キャンセル案件は集計から除外する(lib/status/activeRecords.ts の有効判定)。受注日 cases.order_received_date や case_products.sales_price/gross_profit を直接合算する旧方式(sumSalesAndProfit())は、現行の経営ダッシュボードでは呼び出されていない(ValueOS概要 参照)。本ダッシュボードは、このうち「有効案件限定・キャンセル除外」の判定ロジックのみValueOSと同一とし、売上の起点は請求日基準を踏襲せず、完工日基準(前掲「指標定義(予算・実績・差異・達成率)」参照)を用いる。

Dealのchannel(訪問販売/催事/反響/パートナーの4値)およびインセンティブ算定チャネル(PS/WMS/FS/ES、評価制度固有の呼称)は、いずれもValueOSの決済区分 case_settlements.settlement_type(正式値は前金/売掛/3社間決済/カード。掛売・三社間決済は旧称)とは別軸であり、混同しない。チャネル(Deal.channel/インセンティブ算定チャネル)は案件の販売経路・算定区分を表し、決済区分は代金回収方法を表す。

観点当方ValueOS
売上集計の起点完工日基準・税抜・入金確認済み請求日 invoices.invoice_date 基準・税抜(aggregateDashboardV1)
有効案件の判定キャンセル除外isActiveCaseStatus(lib/status/activeRecords.ts の有効判定)によるキャンセル除外
未収管理KPI予実の対象領域(未入金額・業務アラートの集計。商社(卸)の発注/請求/入金エンティティ化に依存し、実体は卸金額 のWPayment集計を参照。同機能では未入金額を税抜・期間非連動でキャンセル以外の全案件の残高合算として算出しており、本ダッシュボードの未入金額集計もこの方式に準拠する)通常決済は summarizeInvoicePayments().unpaidAmount、3社間決済は computeThreePartyRecoveryAmounts の回収残高を合算(期間非連動)
予算・等級マスタ本ページで新設する領域対応するテーブルなし

売上計上時点の基準(当方=完工日、ValueOS=請求日)が異なる点は、両システムを将来統合する際の調整対象である。差分の全体像は ValueOS差分・項目突合 を参照。

  • 部署別予算発生表の月次配分方法(案件単位で計上するか、月次比例配分にするか)
  • 予算の「四半期」(現行ExcelのQ目標設定)と評価サイクルの算定期間(4ヶ月・第1〜3期)の対応づけ(区切りが一致しないため、どちらの期間単位を予算の正とするか)
  • 日次・週次粒度、および勤怠(稼働時間)連携によるKPI指標のフル再現の対応要否
  • 名目減価/実質減価の内訳定義の粒度
  • 営業利益算出に用いる経費配賦ルールのシステム化範囲(経費データが現状DBに存在しない)
  • 生産性指標(1人あたり売上)の分母(人員数)の定義
  • チャネル別算式差分(PS=課全体予算の分配、WMS=個人予算超過分、FS/ES=係数ロジック)の初期実装範囲
  • 等級表マスタにおけるチャネル別係数の持ち方
  • 役職者の最終予算の算出式:根拠資料内で「自分の予算に部下全員分の予算を加算する」という説明文と「部下全員分の賞与額 × 118%」という数式が併記されており、両者が一致しない。どちらを正とするかの確認が必要
  • Excelからの取込フォーマットと遡及移行期間(過去何期分を移行するか)
  • グラフ描画ライブラリ(Chart.js/Recharts等)の選定
  • インセンティブ額・達成率の端数処理(四捨五入/切り捨て等)の方針
  • 完工後の取消・返品・マイナス調整が実績テーブルに与える影響の扱い
  • 算定期間途中の暫定値を四半期・年度累計に含めるかどうか
  • 権限スコープ4段+管理者モデル(役割・権限)がKPI予実領域に確定適用されるか、専用の権限設計を別途起こすか

上記は 未確定事項一覧 にも横断的に整理する。