graph TD
A[バッチ起動] --> B[パラメータ取得]
B --> C{target_date指定?}
C -->|なし| D[前日を対象日に設定]
C -->|あり| E[指定日を対象日に設定]
D --> F[対象日の売上データ抽出]
E --> F
F --> G{データ存在?}
G -->|なし| H[警告ログ出力]
H --> I[処理終了]
G -->|あり| J[部門別集計処理]
J --> K[商品別集計処理]
K --> L[日次サマリー作成]
L --> M{再集計モード?}
M -->|Yes| N[既存データ削除]
M -->|No| O[データ重複チェック]
N --> P[集計データ登録]
O --> Q{重複あり?}
Q -->|Yes| R[エラーログ出力]
R --> S[異常終了]
Q -->|No| P
P --> T[月次集計テーブル更新]
T --> U[処理件数ログ出力]
U --> V[正常終了]
SELECT
department_id,
department_name,SUM(amount)as total_amount,SUM(quantity)as total_quantity,COUNT(DISTINCT customer_id)as customer_count,COUNT(*)as transaction_count
FROM
sales_transactions
WHERE
transaction_date =:target_date
AND status ='completed'GROUPBY
department_id,
department_name
SELECT
product_id,
product_name,
category_id,SUM(amount)as total_amount,SUM(quantity)as total_quantity,COUNT(*)as transaction_count
FROM
sales_transactions
WHERE
transaction_date =:target_date
AND status ='completed'GROUPBY
product_id,
product_name,
category_id
sequenceDiagram
participant B as バッチ
participant M as 会員マスタ
participant S as 売上トランザクション
participant L as ログ
B->>M: アクティブ会員取得 (バッチサイズ単位)
loop 会員ごと
B->>S: 過去1年間の購入履歴取得
S->>B: 累計購入金額返却
B->>B: ステータス判定
alt ステータス変更あり
B->>M: 会員ステータス更新
B->>L: 更新ログ出力
else ステータス変更なし
B->>B: スキップ
end
end
B->>L: 処理完了ログ出力
graph LR
A[バッチ起動] --> B[バックアップ日付設定]
B --> C[対象テーブルループ]
C --> D[テーブルデータ抽出]
D --> E[SQLダンプ生成]
E --> F[ファイル圧縮 gzip]
F --> G[ローカル保存]
G --> H[外部ストレージ転送]
H --> I{転送成功?}
I -->|Yes| J[古いバックアップ削除]
I -->|No| K[リトライ]
K --> H
J --> L[次のテーブル]
L --> C
C --> M[全テーブル完了]
M --> N[バックアップ検証]
N --> O[完了ログ出力]