# 04_05_01_business_management.md # 業務管理機能 設計書 **保存先**: `public_html/docs/04_business_flow/business_management/04_05_01_business_management.md` **対象**: 営業管理担当・案件管理担当・全管理者 --- ## 1. 概要 本仕様書は、従事者が日常的に行う「日報」「業務報告」「経費入力」を管理する業務管理機能を定義する。 案件に紐づかない経費の入力もここで行い、会計システムと連動する。 また、報告業務においては上位職・管理者への通知と確認・返信のワークフロー、および承認後のアーカイブ・改ざん防止・定期削除のライフサイクルを定義する。 ## 2. 画面構成と入力項目 ### 2.1 日報入力画面(daily_report.html) - **入力項目**: - 日付(デフォルト今日・修正可) - 業務時間(数値・時間) - 業務内容(テキストエリア・複数行可) - 関連顧客(プルダウン:`get_clients.php` から取得・任意) - 関連案件(プルダウン:任意) - **ステータス**:`draft` で保存後、「提出」ボタンで `submitted` へ。 ### 2.2 業務報告入力画面(work_report.html) - **入力項目**: - 日付(デフォルト今日) - 顧客・案件(プルダウン:任意) - 報告種別(プルダウン:訪問報告 / 電話報告 / その他) - タイトル(必須) - 内容(テキストエリア・必須) - **ステータス**:`submitted` で保存され、承認者へ通知。 ### 2.3 非案件経費入力画面(expense.html) - **入力項目**: - 日付(デフォルト今日) - 勘定科目(プルダウン:`accounts.json` から取得) - 金額(数値・必須) - 税区分(プルダウン:10% / 8% / 非課税) - 関連顧客(プルダウン・任意) - 摘要(テキスト) - 領収書画像(アップロード・OCR連携) - **ステータス**:`pending`(未承認)で保存。 ## 3. データ構造とライフサイクル ### 3.1 基本属性(自動セット・修正可能) - **入力者(`employee_id`)**: ログインユーザーのIDを自動セット。入力画面で修正可能。 - **日付(`report_date` / `date`)**: 登録日を自動セット。入力画面で修正可能。 - **内容**: 入力者が必要な内容を自由に記述する(スキーマ未定)。 ### 3.2 保存場所とライフサイクル(作業用とアーカイブの分離) データは「作業用フォルダ」と「アーカイブフォルダ」に分けて保存する。 1. **作業用(`/data/business/[種別]/...`)** - ステータスが `draft`(下書き)、`submitted`(提出済)、`returned`(差し戻し)のデータ。 - 報告者本人が編集・修正可能。 2. **アーカイブ(`/data/business/archive/[種別]/[年]/[月]/...`)** - ステータスが `confirmed`(承認済)に遷移した瞬間、自動的にこのフォルダへ移動する。 - **改ざん防止のため、承認後のデータは一切の編集・削除を禁止(読み取り専用)**とする。 - 修正が必要な場合は、アーカイブデータをコピーして新しい「修正版(新バージョン)」を作成し、再度承認フローを通す。 ### 3.3 データの自動削除と監査ログ - **作業用データの定期削除**: 承認済みの作業用データ、または一定期間(例:90日間)更新のない下書きデータは、定期バッチ処理により自動削除される。 - **アーカイブデータの自動削除**: アーカイブされたデータは、保存期間(例:5年間)経過後に、自動バッチ処理によってのみ削除される。**権限者であっても手動削除は一切不可**。 - **削除ログ**: 自動削除が行われた際は、削除日時、対象ファイル、ハッシュ値を `/data/logs/archive_deletion_log.json` に記録する。 ## 4. 報告ワークフロー(通知・確認・返信・承認) ### 4.1 ステータス定義 | ステータス | 意味 | 操作可能者 | |-----------|------|-----------| | `draft` | 下書き | 入力者 | | `submitted` | 報告済み(管理者確認待ち) | 入力者(修正・取消可)、承認者(確認・返信) | | `confirmed` | 承認済み(アーカイブへ移動) | 承認者のみ(操作は不可、自動保存) | | `returned` | 差し戻し(要修正) | 承認者 → 入力者 | | `archived` | 承認済み(アーカイブ保存) | 参照のみ | ### 4.2 宛先の自動決定(報告者は選択不可) - 報告書の宛先(主承認者、確認者、代理承認者)は、**報告者が提出時に選択することはできない**。 - 提出時、システムは `00_overview/00_04_notification_system.md` 5節で定義された「通知ルール」(`data/notification_rules.json`)に基づき、報告者の所属部署や報告種別から、適切な宛先(職務コードに紐づく従事者)を自動決定する。 ### 4.3 通知と承認の仕組み - 入力者が「報告」ボタンを押すと、`submitted` になり、システムが自動決定した「主承認者」「確認者」「代理承認者」全員に通知が飛ぶ(Rank 2: 通常)。 - **承認の成立**: 主承認者(To)または代理承認者(Delegate)の**いずれか1人**が「内容確認(承認)」ボタンを押した時点で、報告書は `confirmed`(承認済)となり、アーカイブへ移動する。 - 承認が成立した時点で、他の承認者・確認者の通知は `processed`(処理済み)となり、リストから消える。 - 確認者(CC)は承認アクションを行うことはできず、閲覧と任意のコメントのみ可能。 ### 4.4 管理者(承認者)側の操作 - トップページの通知から対象の報告書を開く。 - **承認ボタン**:報告書を `confirmed` にし、通知を `processed` にする(代理承認者も操作可能)。 - **返信・差し戻しボタン**:コメントを入力し、報告書を `returned` に変更。通知を `processed` にする。 - 管理者の操作履歴は `manager_reply` 配列に追記され、通知システムのログにも記録される。 ### 4.5 入力者の操作 - `returned` の報告書は、内容を修正して再度 `submitted` にできる。 - `confirmed` になった報告書は、入力者側で編集不可(閲覧のみ)とする。 ## 5. 業務報告データのJSONスキーマ(宛先自動決定) ```json { "report_date": "2026-10-24", "employee_id": "SPS01-00001", "client_id": "S101", "case_id": "S01R0610001A", "report_type": "訪問報告", "title": "○○損保 定期訪問報告", "content": "担当者と面談。次回案件の見込みについてヒアリングを実施した。", "status": "submitted", "recipients": { "to": ["SPS01-00004"], "cc": ["SPS01-00010"], "delegate": ["SPS01-00005"] }, "manager_reply": null } ``` ## 6. マスタ連携 - 日報・業務報告・経費データは、以下のマスタとIDでリンクする。 - 従事者マスタ(`employee_id`, `recipients.*`) - 顧客マスタ(`client_id`) - 案件データ(`case_id`) - 会計マスタ(`account_code`) - 通知ルール(`notification_rules.json`) ## 7. 会計連動(非案件経費) - 非案件経費データが承認されると、会計システムへ自動転記される。 - 転記時の処理: - `accounting_transferred` を `true` に更新する。 - `journal_id` に会計側の仕訳IDを保存する。 ## 8. 改訂履歴 | 日付 | 版 | 担当 | 内容 | 理由・影響範囲 | |------|----|------|------|--------------| | 2026-10-24 | 1.0 | 全体管理者(12代目) | 業務管理機能の基本仕様を新設。画面構成・入力項目、データ構造、ライフサイクル、報告ワークフロー、宛先自動決定、会計連動の全仕様を網羅。 | 営業管理メニューへの業務管理追加指示に基づく仕様策定 |