# 04_01_12_sales_menu.md # 営業管理メニュー設計書 **版数**: v1.0(2026-10-25時点) **対象**: `backoffice/private/sales/index.html` / `backoffice/corporate/sales/index.html` ## 1. 概要 本仕様書は、営業管理メニューの画面構成(UI)と、案件管理システムへの連携(新規案件登録)を定義する。 営業管理メニューは、営業担当が日常的に行う「案件登録」「案件確認」「顧客・担当者の確認」の起点となる画面である。 ## 2. 画面構成 営業管理メニューは以下の6ボックスで構成する。 | # | ボックス名 | リンク先(SPS) | リンク先(SCSPS) | |---|---|---|---| | 1 | 新規案件登録 | `/private/cases/input.html?mode=sales` | `/corporate/cases/input.html?mode=sales` | | 2 | 案件一覧 | `/private/cases/index.html` | `/corporate/cases/index.html` | | 3 | 業務管理 | `/private/business/index.html?company=SPS` | `/corporate/business/index.html?company=SCSPS` | | 4 | 企業一覧 | `/clients/list.html?company=SPS` | `/clients/list.html?company=SCSPS` | | 5 | 担当者一覧 | `/clients/contacts.html?company=SPS` | `/clients/contacts.html?company=SCSPS` | | 6 | 顧客管理 | `/clients/index.html?company=SPS` | `/clients/index.html?company=SCSPS` | ## 3. UI仕様 ### 3.1 ヘッダー - 構造:`.header` 内を flexbox で3分割(左・中央・右)。 - 左:`← SPS BACK OFFICEへ` - 中央:`
`、リンクボタン `.menu-button`。 - 新規画面のCSSは既存トップページ(`backoffice/index.html`)を一字一句コピーすること。独自定義・上書きを禁ずる。 ### 3.3 各ボックスの構成 | # | タイトル | 説明文 | ボタンテキスト | |---|---|---|---| | 1 | 案件受付 | 営業担当として新規案件を登録します(自動ロック)。 | 新規案件登録 | | 2 | 案件一覧 | 登録済み案件の確認。 | 案件一覧を見る | | 3 | 業務管理 | 日報・業務報告の作成、および経費の入力。 | 業務管理へ | | 4 | 企業一覧 | 登録企業の検索・詳細確認。 | 企業一覧へ | | 5 | 担当者一覧 | 登録担当者の横断検索・詳細確認。 | 担当者一覧へ | | 6 | 顧客管理 | 顧客組織・担当者の登録、および顧客区分の管理。 | 顧客管理へ | ### 3.4 権限による表示制御 - 画面全体の表示条件:`case_list_view` / `case_detail_view_own` / `case_create_from_sales` / `permission_assign` のいずれか。 - 各ボックスは、リンク先画面の必要権限に準じて表示制御する(`04_01_08_case_permission.md` §3準拠)。権限がないボックスは `display: none;`。グレーアウト禁止。 - 「顧客管理」ボックス:`client_edit` / `client_edit_cross` / `permission_assign` を持たない場合非表示。 - 「企業一覧」ボックス:`client_view` を持たない場合非表示。 - 「担当者一覧」ボックス:`client_view` / `client_view_cross` を持たない場合非表示。 ### 3.5 URLパラメータ - リンクには `?company=SPS` または `?company=SCSPS` を付与する。会社切替プルダウンはトップページのみのため、以降の画面ではこのパラメータで会社を維持する。 ### 3.6 通知アイコン - ヘッダー右上に「🔔 通知」アイコンを配置する(引継書ステップ5)。 - 表示仕様は `00_overview/00_04_notification_system.md` §4.1 に準拠する。 - 実装詳細(HTML構造・CSSクラス・`get_notifications.php` の呼び出しタイミング・バッジ描画方法)は `00_04` に未定義のため、別途詰める。 ### 3.7 制約事項 - localStorage / sessionStorage 使用禁止。 - 権限チェックは `session.js` の `window.spsUser.permissions` で行う。 - `alert()` / `confirm()` / `prompt()` は使用禁止。エラーは画面内にインライン表示する。 ## 4. 案件管理との連携(新規案件登録) ### 4.1 画面遷移 ``` 【営業管理のindex】(private/sales/ または corporate/sales/) ↓ 「新規案件登録」ボタン 【案件入力画面】(同じ側の cases/input.html?mode=sales) private/sales/ → /private/cases/input.html?mode=sales corporate/sales/ → /corporate/cases/input.html?mode=sales ↓ 保存 案件一覧に反映 ``` 営業管理と案件管理は**常に同じ側**(個人事業は個人事業、法人は法人)でリンクする。個人事業と法人の完全分離原則(`00_経営理念_事業構造.md` 5節)により、側をまたぐリンクは作らない。 ### 4.2 URLパラメータ | パラメータ | 値 | 説明 | |-----------|-----|------| | `mode` | `sales` | 営業管理からの新規登録であることを示す | ### 4.3 新規案件登録の2つの入口 | 入口 | URL(個人事業側/法人側) | 営業担当ID | ロック | |------|-----|-----------|--------| | 営業管理から | `/private/cases/input.html?mode=sales`/`/corporate/cases/input.html?mode=sales` | 自動入力 | 自動ロック | | 案件管理から | `/private/cases/input.html`/`/corporate/cases/input.html` | プルダウン選択 | 未ロック | ### 4.4 案件入力画面の分岐処理 | 入口 | 必要権限 | |------|---------| | 営業管理から | `case_create_from_sales` | | 案件管理から | `case_create_from_cases` | ```javascript window.addEventListener('spsSessionReady', function() { const mode = new URLSearchParams(window.location.search).get('mode'); if (mode === 'sales') { // 営業管理から:権限が無ければ入力不可(案件管理側の権限では代替しない) if (!hasPermission('case_create_from_sales')) { showAccessDenied(); return; } document.getElementById('sales_person_id').value = window.spsUser.userId; document.getElementById('sales_person_id').disabled = true; document.getElementById('locked').value = true; } else { // 案件管理から if (!hasPermission('case_create_from_cases')) { showAccessDenied(); return; } loadSalesPersonSelect(); document.getElementById('locked').value = false; } }); // 権限不足:「権限がありません」と案件一覧へのリンクを画面内に表示し、入力フォームは非表示にする。 // alert() は使用しない。表示直後の即時リダイレクトも行わない(メッセージが読めないため)。 function showAccessDenied() { /* インライン表示(実装時に確定) */ } ``` ※ 本分岐は**新規登録時のみ**適用する。既存案件の編集時は `case_edit_*` 権限で判定する。編集モードを示すURLパラメータは `04_01_04_case_input_screens.md` で未定義のため、`input.html` 実装時に案件管理担当が確定し、仕様書に追記すること。 ## 5. データ構造 ### 5.1 案件JSONへの記録 | フィールド | 値 | 説明 | |-----------|-----|------| | `created_from` | `"sales"` / `"cases"` | 登録元 | | `locked` | `true`(営業管理)/ `false`(案件管理) | ロック状態 | ```json { "case_id": "L01R0709001A", "created_from": "sales", "locked": true, "sales_person_id": "00005", ... } ``` ## 6. 権限 | 権限キー | 説明 | 主な対象 | |---------|------|---------| | `case_create_from_sales` | 営業管理から新規案件登録できる(自動ロック) | 営業担当、上級調査職 | | `case_create_from_cases` | 案件管理から新規案件登録できる(未ロック) | 事務職、管理者 | ## 7. 関連仕様書 | # | 仕様書 | 内容 | |---|--------|------| | 1 | `04_01_01_case_management.md` | 案件管理全体設計 | | 2 | `04_01_02_case_data_structure.md` | 案件データ構造(created_from, locked) | | 3 | `04_01_04_case_input_screens.md` | 入力画面設計(mode分岐) | | 4 | `04_01_08_case_permission.md` | 権限設計(case_create_from_sales, case_create_from_cases) | | 5 | `06_permission/06_01_permission_design.md` | 権限設計の基本方針 | | 6 | `00_overview/00_04_notification_system.md` | 通知システム(ヘッダー通知アイコン) | ## 8. 改訂履歴 | 日付 | 版 | 担当 | 内容 | |---|---|---|---| | 2026-10-25 | 1.0 | Deepseek | 営業管理メニューの正式なUI仕様書として新規作成。6ボックス構成、ヘッダー、ボックス配置、権限による表示制御、URLパラメータ、通知アイコン、案件管理との連携仕様を記載。 |