チョコレート卸向け納品計画システム 要件定義書
1. システム概要
1.1 システム名
海外高級チョコレート卸向け納品計画WEBアプリケーション
1.2 目的
デパートからの海外高級チョコレート発注に対して、在庫状況・賞味期限・ケース入数・納品先ルールを考慮し、最適な納品計画を自動生成することで、業務効率化と在庫の適正管理を実現する。
1.2.1 取扱商品の特徴
- 輸入品: ベルギー、スイス、フランスからの輸入高級チョコレート
- 高付加価値: GODIVA、Lindt、Valrhona等の世界的ブランド
- 賞味期限管理: 輸入品のため航空便/海上便による入荷時期のばらつき
- ロット管理: 国別・製造ロット別の厳格な管理が必要
1.3 対象ユーザー
- 海外高級チョコレート輸入卸売業者の在庫管理担当者
- 納品計画担当者
- 発注受付担当者
- 輸入管理担当者
1.4 期待効果
- 手作業による納品計画作成時間の削減
- 賞味期限の近い在庫の優先消化による廃棄ロス削減
- 納品先ルールの遵守による取引先との信頼関係向上
- 在庫状況の可視化による適切な発注判断の支援
2. 機能要件
2.1 ダッシュボード機能
2.1.1 概要表示
- 発注件数: 処理待ち発注の総数を表示
- 在庫アラート: 在庫が10ケース未満の商品数を警告表示
- 期限が近い在庫: 賞味期限まで60日以内の在庫数を表示
- 商品数: 登録されている商品の総数を表示
2.1.2 詳細表示
- 期限が近い在庫リスト
- 商品名、ロット番号、賞味期限、残日数を一覧表示
- 30日以内: 赤色バッジ(危険)
- 60日以内: 黄色バッジ(警告)
- 処理待ち発注リスト
- デパート名、商品名、数量、希望納品日を一覧表示
2.1.3 アクション
- 自動計算画面への遷移ボタン
2.2 商品管理機能
2.2.1 商品一覧表示
以下の項目をテーブル形式で表示:
- 商品コード(例: CHO-001)
- 商品名
- ブランド名
- ケース入数(個/ケース)
2.2.2 データ項目
Product {
id: 商品ID
code: 商品コード
name: 商品名
brand: ブランド名
unitsPerCase: ケース入数
}
2.3 在庫管理機能
2.3.1 在庫一覧表示
以下の項目をテーブル形式で表示:
- 商品(商品名 + 商品コード)
- ロット番号
- 賞味期限
- ケース数
- 状態(バッジ表示)
2.3.2 状態表示ルール
- 正常(緑): 賞味期限まで61日以上
- 警告(黄): 賞味期限まで31~60日
- 危険(赤): 賞味期限まで30日以内
2.3.3 データ項目
Inventory {
id: 在庫ID
productCode: 商品コード
lotNumber: ロット番号
expiryDate: 賞味期限(YYYY-MM-DD)
cases: ケース数
}
2.4 発注管理機能
2.4.1 発注一覧表示
以下の項目をテーブル形式で表示:
- デパート名
- 商品(商品名 + 商品コード)
- 数量(個数 + 必要ケース数)
- 希望納品日
- ステータス
2.4.2 ステータス種類
- 処理待ち(黄): pending
- 処理中(青): processing
- 完了(緑): completed
2.4.3 データ項目
Order {
id: 発注ID
department: デパート名
productCode: 商品コード
quantity: 注文数量(個数)
desiredDeliveryDate: 希望納品日(YYYY-MM-DD)
status: ステータス
}
2.5 ルール管理機能
2.5.1 ルール一覧表示
登録済みルールを以下の形式で表示:
- ルール名
- 説明
- 有効/無効スイッチ
2.5.2 ルール追加機能
- 「ルール追加」ボタンでフォーム表示
- 入力項目:
- ルール名(必須)
- 説明(必須)
- 追加されたルールはデフォルトで有効
2.5.3 ルール有効/無効切り替え
- スイッチUIで即座に切り替え可能
- 無効化されたルールは自動計算時に適用されない
2.5.4 標準ルール例
- 賞味期限優先: 賞味期限が近い在庫を優先的に使用する
- 納品時30日以上: 納品時に賞味期限が30日以上残っている必要がある
- 高島屋納品曜日: 高島屋は火曜日と金曜日のみ納品可能
- 1回最大20ケース: 1回の納品で最大20ケースまで
2.5.5 データ項目
Rule {
id: ルールID
name: ルール名
description: 説明
enabled: 有効フラグ
}
2.6 自動計算機能
2.6.1 計算実行
- 「自動計算を実行」ボタンで計算開始
- 計算中はボタンを無効化
2.6.2 計算処理ログ表示
リアルタイムで以下のログを表示:
- タイムスタンプ
- 処理ステップ(バッジ表示)
- メッセージ内容
- ログタイプ(情報/警告/成功/エラー)
2.6.3 計算ステップ
- 在庫確認: 対象商品の在庫状況を確認
- 期限チェック: 各ロットの賞味期限を検証
- 納品日計算: 納品先ルールに基づき納品可能日を算出
- 計画作成: 最適な納品計画を生成
2.6.4 計算完了時
- 完了メッセージを表示(緑背景)
- 「納品計画を確認」ボタンで結果画面へ遷移
2.6.5 データ項目
CalculationLog {
id: ログID
timestamp: タイムスタンプ(YYYY-MM-DD HH:mm:ss)
step: 処理ステップ名
message: メッセージ内容
type: ログタイプ(info/warning/success/error)
}
2.7 納品計画結果表示機能
2.7.1 納品計画一覧表示
以下の項目をテーブル形式で表示:
- 納品日
- デパート名
- 商品(商品名 + 商品コード)
- ケース数
- 使用ロット
- 賞味期限
- 警告(該当時のみ)
2.7.2 Excel出力機能
- 「Excel出力」ボタンで計画をダウンロード(デモではアラート表示)
- 実装時は納品計画データをExcel形式で出力
2.7.3 計画のポイント表示
自動計算で適用されたルールや判断基準を箇条書きで表示:
- 賞味期限が近い在庫の優先使用
- 納品可能日の考慮
- 1回あたりの最大ケース数制限
- 賞味期限の残日数確保
2.7.4 データ項目
DeliveryPlan {
id: 計画ID
deliveryDate: 納品日(YYYY-MM-DD)
department: デパート名
productCode: 商品コード
productName: 商品名
cases: ケース数
lotNumber: 使用ロット番号
expiryDate: 賞味期限(YYYY-MM-DD)
warning?: 警告メッセージ(任意)
}
3. 非機能要件
3.1 技術要件
3.1.1 フロントエンド
- フレームワーク: Next.js 16.x(App Router)
- UI: React 19.x
- 言語: TypeScript 5.x
- スタイリング: Tailwind CSS 3.x
- UIコンポーネント: shadcn/uiスタイル
- アイコン: Lucide React
3.1.2 データ管理
- デモ版: モックデータ(lib/mock-data.ts)
- 本番版: RESTful API経由でバックエンドと連携
3.2 ユーザビリティ要件
3.2.1 画面レイアウト
- 左サイドバーメニューで画面遷移
- レスポンシブデザイン対応
- 業務システムらしいシンプルで機能的なUI
3.2.2 視認性
- 重要な情報は色分けバッジで強調
- 警告・エラーは赤、注意は黄色、正常は緑で表示
- テーブルは見やすく整理されたレイアウト
3.2.3 操作性
- ボタンは大きく押しやすいサイズ
- 処理中はローディング表示とボタン無効化
- 重要なアクションは明確に配置
3.3 パフォーマンス要件
- 画面遷移: 1秒以内
- 自動計算処理: 5秒以内(デモでは4秒のシミュレーション)
- 一覧表示: 100件まで快適に表示
3.4 保守性要件
- TypeScriptによる型安全性確保
- コンポーネントの再利用性を重視
- 明確なディレクトリ構造
4. 画面遷移図
ダッシュボード (/)
├─ 商品管理 (/products)
├─ 在庫管理 (/inventory)
├─ 発注管理 (/orders)
├─ ルール管理 (/rules)
├─ 自動計算 (/calculate)
│ └─ 納品計画 (/delivery-plan) ※計算完了後
└─ 納品計画 (/delivery-plan)
5. データモデル
5.1 エンティティ一覧
Product(商品)
- 商品コード、商品名、ブランド、ケース入数
Inventory(在庫)
- 商品コード、ロット番号、賞味期限、ケース数
Order(発注)
- デパート名、商品コード、数量、希望納品日、ステータス
Rule(ルール)
- ルール名、説明、有効フラグ
DeliveryPlan(納品計画)
- 納品日、デパート名、商品、ケース数、使用ロット、賞味期限、警告
CalculationLog(計算ログ)
- タイムスタンプ、処理ステップ、メッセージ、ログタイプ
6. 業務フロー
6.1 基本フロー
- 発注受付
- デパートから発注を受け、発注管理に登録
- 在庫確認
- 在庫管理画面で在庫状況を確認
- 期限が近い在庫を把握
- ルール設定
- ルール管理で必要なルールを有効化
- 必要に応じて新規ルールを追加
- 自動計算実行
- 自動計算画面で計算を実行
- ログを確認しながら処理完了を待つ
- 計画確認
- 納品計画画面で結果を確認
- 警告がある場合は内容を確認
- Excel出力
- 納品計画をExcel形式で出力
- 関係部署へ共有
7. サンプルデータ
7.1 商品マスタ(海外輸入高級チョコレート - 専門店向けプレミアムブランド)
| 商品コード | 商品名 | ブランド(原産国) | ケース入数 | 特徴 | |———–|——–|———-|———–|——| | CHO-001 | アメデイ トスカーノブラック70% | Amedei(イタリア・トスカーナ) | 12個 | Bean to Bar / 単一農園カカオ | | CHO-002 | ドモーリ サンプラータ80% | Domori(イタリア・ピエモンテ) | 10個 | クリオーロ種100% | | CHO-003 | ミシェル・クルイゼル ブラン ド ブラン | Michel Cluizel(フランス) | 8個 | 自社農園カカオ | | CHO-004 | ボナ リオカリベ75% | Bonnat(フランス・ヴォワロン) | 6個 | シングルオリジン | | CHO-005 | コペヌール シングルオリジン マダガスカル | Coppeneur(ドイツ) | 15個 | 手作業製造 | | CHO-006 | フリス・ホルム チュノ75% | Friis-Holm(デンマーク) | 8個 | 少量生産 |
7.2 在庫データ
| 商品コード | ロット番号 | 賞味期限 | ケース数 | 状態 | 備考 | |———–|———–|———-|———|——|——| | CHO-001 | ITA202601A | 2026-04-30 | 5 | 警告 | イタリア2026年1月航空便輸入 | | CHO-001 | ITA202602A | 2026-06-30 | 8 | 正常 | イタリア2026年2月航空便輸入 | | CHO-002 | ITA202601D | 2026-05-15 | 12 | 正常 | イタリア2026年1月海上便輸入 | | CHO-003 | FRA202601M | 2026-04-20 | 6 | 警告 | フランス2026年1月航空便輸入 | | CHO-004 | FRA202603B | 2026-05-31 | 8 | 正常 | フランス2026年3月航空便輸入 | | CHO-005 | DEU202602C | 2026-07-15 | 20 | 正常 | ドイツ2026年2月海上便輸入 | | CHO-006 | DNK202602F | 2026-04-25 | 4 | 警告 | デンマーク2026年2月航空便輸入 |
ロット番号の命名規則:
- ITA: イタリア産(Amedei/Domori)
- FRA: フランス産(Michel Cluizel/Bonnat)
- DEU: ドイツ産(Coppeneur)
- DNK: デンマーク産(Friis-Holm)
- YYYYMM: 輸入年月
- 末尾アルファベット: ブランド識別子(A=Amedei, D=Domori, M=Michel Cluizel等)
7.3 発注データ
| デパート | 商品名 | 数量 | 希望納品日 | ステータス | 用途 | |———|——–|——|———–|———-|——| | 高島屋 | アメデイ トスカーノブラック70% | 100個 | 2026-04-08 | 処理待ち | ギフトコーナー・母の日 | | 伊勢丹 | ドモーリ サンプラータ80% | 80個 | 2026-04-10 | 処理待ち | 食品専門フロア | | 三越 | フリス・ホルム チュノ75% | 60個 | 2026-04-12 | 処理待ち | 催事・北欧フェア | | 大丸 | コペヌール シングルオリジン | 150個 | 2026-04-15 | 処理待ち | ギフトコーナー |
8. 今後の拡張性
8.1 短期的な改善
- 商品・在庫・発注の追加/編集/削除機能
- 検索・フィルタリング機能
- ページネーション対応
- 詳細なエラーハンドリング
8.2 中期的な機能追加
- バックエンドAPI連携
- データベース統合
- ユーザー認証・権限管理
- 実際のExcel出力機能
- 納品実績の記録と分析
8.3 長期的な展望
- AI/機械学習による需要予測
- 複数倉庫対応
- 配送ルート最適化
- モバイルアプリ対応
- 他システムとのAPI連携
9. 制約事項
9.1 現行デモ版の制限
- データはブラウザメモリ上のみで、リロードすると初期化される
- Excel出力は実装されておらず、アラート表示のみ
- ユーザー認証機能なし
- データの永続化なし
9.2 想定される運用制約
- 営業時間内での利用を推奨
- 複数ユーザーの同時編集による競合は本番版で対応
- 大量データ(1000件以上)は段階的な対応が必要
10. 用語集
| 用語 | 説明 |
|---|---|
| ケース | チョコレートの梱包単位。複数個が1ケースに入っている |
| ロット番号 | 製造ロットを識別する番号。在庫管理の基本単位 |
| 賞味期限 | 商品の品質が保証される期限 |
| 納品計画 | いつ、どのデパートに、何をどれだけ納品するかの計画 |
| 自動計算 | ルールに基づいて最適な納品計画を自動生成する処理 |
11. 承認履歴
| 版数 | 日付 | 作成者 | 承認者 | 備考 |
|---|---|---|---|---|
| 1.0 | 2026-03-16 | Claude | - | 初版作成(デモシステム基準) |
文書終わり