175 lines
5.8 KiB
Markdown
175 lines
5.8 KiB
Markdown
# SHJ-8 共通バッチ処理ログシステム
|
||
|
||
## 概要
|
||
SHJ-8は**全てのSHJ系バッチ処理**の実行ログを**batch_logテーブル**に登録する**共通機能**です。
|
||
仕様書に基づき、batch_logテーブルの各フィールドを活用してSHJ-8の要件を満たします:
|
||
|
||
### フィールドマッピング
|
||
- **デバイスID** → `parameters`(JSON形式)
|
||
- **プロセス名** → `process_name`
|
||
- **ジョブ名** → `message`の一部
|
||
- **ステータス** → `status`
|
||
- **ステータスコメント** → `message`、`error_details`
|
||
- **登録日時** → `start_time`、`created_at`
|
||
- **更新日時** → `end_time`、`updated_at`
|
||
|
||
## 処理フロー
|
||
|
||
### 【処理1】入力パラメーターをチェックする
|
||
- デバイスID: device表での存在確認
|
||
- プロセス名/ジョブ名: いずれか必須の確認
|
||
- ステータス: 必須チェック
|
||
- 登録日時/更新日時: yyyy/mm/dd形式の検証
|
||
|
||
### 【処理2】バッチ処理ログを登録する
|
||
- batch_logテーブルへのINSERT処理
|
||
- job_log_idはAUTO_INCREMENTで自動生成
|
||
- status_commentは処理成功時に「処理成功」を設定
|
||
- 仕様書指定の日付でcreated_at/updated_atを設定
|
||
|
||
### 【処理3】処理結果を返却する
|
||
- 処理結果: 0=正常終了、1=異常終了
|
||
- 異常情報の詳細メッセージ
|
||
|
||
## 使用方法
|
||
|
||
### コマンド実行
|
||
```bash
|
||
php artisan shj:batch-log {デバイスID} {プロセス名} {ジョブ名} {ステータス} {登録日時} {更新日時}
|
||
```
|
||
|
||
### 実行例
|
||
```bash
|
||
# SHJ-4C室割当処理のログ記録
|
||
php artisan shj:batch-log 9999 "SHJ-4C" "室割当処理" "success" "2025/01/15" "2025/01/15"
|
||
|
||
# SHJメール送信処理のログ記録
|
||
php artisan shj:batch-log 9999 "SHJ-MAIL-SEND" "メール送信" "running" "2025/01/15" "2025/01/15"
|
||
|
||
# その他のSHJ系バッチのログ記録
|
||
php artisan shj:batch-log 9999 "SHJ-5" "駐車場空き確認" "completed" "2025/01/15" "2025/01/15"
|
||
```
|
||
|
||
## テストデータ
|
||
`database/seeders/ShjBatchLogTestSeeder.php`にテスト用のデバイスデータが含まれています。
|
||
|
||
### テストデータ挿入
|
||
```bash
|
||
php artisan db:seed --class=ShjBatchLogTestSeeder
|
||
```
|
||
|
||
### テストデバイス
|
||
- device_id: 9999 (テスト用プリンター)
|
||
|
||
## データベーステーブル
|
||
|
||
### batch_log(統一テーブル)
|
||
```sql
|
||
CREATE TABLE `batch_log` (
|
||
`id` bigint(20) UNSIGNED NOT NULL,
|
||
`process_name` varchar(50) NOT NULL COMMENT 'プロセス名',
|
||
`status` varchar(20) NOT NULL COMMENT 'ステータス',
|
||
`start_time` datetime NOT NULL COMMENT '開始時刻',
|
||
`end_time` datetime DEFAULT NULL COMMENT '終了時刻',
|
||
`parameters` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'パラメータ(JSON形式)',
|
||
`message` text DEFAULT NULL COMMENT 'メッセージ',
|
||
`error_details` text DEFAULT NULL COMMENT 'エラー詳細',
|
||
`execution_count` int(11) NOT NULL DEFAULT 0 COMMENT '実行回数',
|
||
`success_count` int(11) NOT NULL DEFAULT 0 COMMENT '成功回数',
|
||
`error_count` int(11) NOT NULL DEFAULT 0 COMMENT 'エラー回数',
|
||
`created_at` timestamp NULL DEFAULT NULL,
|
||
`updated_at` timestamp NULL DEFAULT NULL
|
||
)
|
||
```
|
||
|
||
### device
|
||
```sql
|
||
CREATE TABLE `device` (
|
||
`device_id` int(10) UNSIGNED NOT NULL,
|
||
`park_id` int(10) UNSIGNED DEFAULT NULL,
|
||
`device_type` varchar(255) DEFAULT NULL,
|
||
`device_subject` varchar(255) DEFAULT NULL,
|
||
-- その他のフィールド...
|
||
)
|
||
```
|
||
|
||
## ファイル構成
|
||
|
||
### モデル
|
||
- `app/Models/Device.php` - deviceテーブルのEloquentモデル
|
||
- `app/Models/Batch/BatchLog.php` - **batch_logテーブル対応モデル**
|
||
- SHJ-8仕様に基づく共通バッチログ機能
|
||
- `createShjJobLog()` メソッドでbatch_logに統一記録
|
||
- 全SHJ系バッチで共通利用
|
||
|
||
### コマンド
|
||
- `app/Console/Commands/ShjBatchLogCommand.php` - Artisanコマンド
|
||
|
||
### サービス
|
||
- `app/Services/ShjBatchLogService.php` - 核となるビジネスロジック
|
||
|
||
### 設定
|
||
- `app/Providers/AppServiceProvider.php` - サービスの依存関係注入設定
|
||
|
||
## ログ
|
||
処理の詳細なログは`storage/logs/laravel.log`に出力されます。
|
||
|
||
## エラーハンドリング
|
||
- デバイスID存在チェックエラー
|
||
- パラメータ形式エラー
|
||
- 日付形式エラー
|
||
- データベース挿入エラー
|
||
- 全てのエラーはbatch_logテーブルに記録
|
||
|
||
## 入出力仕様
|
||
|
||
### 入力パラメーター
|
||
| No | パラメーター | 桁数 | 型 | 多重度 | 備考 |
|
||
|----|-------------|------|-----|--------|------|
|
||
| 1 | デバイスID | 10 | 数字列 | 1 | |
|
||
| 2 | プロセス名 | 20 | 文字列 | 1 | |
|
||
| 3 | ジョブ名 | 20 | 文字列 | 1 | |
|
||
| 4 | ステータス | 10 | 文字列 | 1 | |
|
||
| 5 | 登録日時 | 10 | 日付(yyyy/mm/dd) | 1 | |
|
||
| 6 | 更新日時 | 10 | 日付(yyyy/mm/dd) | 1 | |
|
||
|
||
### 出力パラメーター
|
||
| No | パラメーター | 桁数 | 型 | 多重度 | 備考 |
|
||
|----|-------------|------|-----|--------|------|
|
||
| 1 | 処理結果 | 1 | 数値 | 1 | 0:正常終了/1:異常終了 |
|
||
| 2 | 異常情報 | ## | 文字列 | 1 | |
|
||
|
||
## 出力結果(仕様書準拠)
|
||
|
||
### 正常終了時
|
||
```json
|
||
{
|
||
"処理結果": 0,
|
||
"異常情報": "",
|
||
"batch_log_id": 1
|
||
}
|
||
```
|
||
|
||
### エラー時
|
||
```json
|
||
{
|
||
"処理結果": 1,
|
||
"異常情報": "エラー: デバイスID 9999 が見つかりません",
|
||
"batch_log_id": 1
|
||
}
|
||
```
|
||
|
||
### 処理結果の値
|
||
- **0**: 正常終了
|
||
- **1**: 異常終了
|
||
|
||
### 異常情報
|
||
- 正常時: 空文字
|
||
- エラー時: エラーの詳細内容
|
||
|
||
## 注意事項
|
||
1. デバイスIDは事前にdeviceテーブルに存在している必要があります
|
||
2. プロセス名とジョブ名はいずれか必須ですが、どちらも設定可能です
|
||
3. 日付形式はyyyy/mm/dd形式で入力してください
|
||
4. batch_logテーブルを使用してSHJ-8の機能を実現しています
|
||
5. すべてのSHJ系バッチで共通利用できる統一ログシステムです |