182 lines
6.1 KiB
Python

# モジュールロード
import os
import sys
from datetime import datetime
import src.pre as pre # データ取得準備処理
import src.chk as chk # オブジェクト情報形式チェック処理
import src.date as date # データ取得期間設定処理
import src.fetch as fetch # CRMデータ取得処理
import src.resbk as resbk # CRM電文データバックアップ処理
import src.conv as conv # CSV変換処理
import src.csvbk as csvbk # CSVバックアップ処理
import src.upld as upld # CSVアップロード処理
import src.upd as upd # 前回取得日時ファイル更新
import src.end as end # 取得処理実施結果アップロード処理
from src.utils.logger import Logger
import src.utils.data_retention as data_retention
# 変数
# logger設定
logger = Logger().get_logger()
# 処理
def main() -> None:
"""コントロール処理
各処理を呼び出すコントローラー
"""
try:
# ① CRMデータ取得処理開始ログを出力する
logger.info('I-CTRL-01 CRMデータ取得処理を開始します')
# ② データ取得準備処理を呼び出す
try:
logger.info('I-CTRL-02 データ取得準備処理呼び出し')
crm_object_info_var = data_retention.CrmObjectInfoVar()
crm_object_info_dict, execute_datetime, process_result_per_object = pre(
crm_object_info_var)
except Exception as e:
logger.error('')
raise CustomException(e)
# ③ object_infoのobjectsキーの値の件数分ループする
logger.info('I-CTRL-03 取得対象オブジェクトのループ処理開始')
for object_info in crm_object_info_dict.get('objects'):
try:
# 1. オブジェクト情報形式チェック処理を呼び出す
logger.info('I-CTRL-04 オブジェクト情報形式チェック処理呼び出し')
try:
chk()
except Exception as e:
logger.error('')
# 2. 処理対象のオブジェクト名をログ出力する
logger.info('I-CTRL-05 ')
# 3. オブジェクト情報.is_skipがTrueの場合、次のオブジェクトの処理に移行する
logger.info('I-CTRL-06 ')
# 4. データ取得期間設定処理を呼び出す
logger.info('I-CTRL-07 ')
try:
except Exception as e:
logger.error('')
# 5. CRMデータ取得処理を呼び出す
logger.info('I-CTRL-08 ')
try:
except Exception as e:
logger.error('')
# 6. CRMデータのジェネレータをループする
# 6-1. 出力ファイル名を生成する
logger.info('I-CTRL-10 ')
try:
except Exception as e:
logger.error('')
# 6-2. CRM電文データバックアップ処理を呼び出す
logger.info('I-CTRL-11 ')
try:
except Exception as e:
logger.error('')
# 6-3. CSV変換処理を呼び出す
logger.info('I-CTRL-12 ')
try:
except Exception as e:
logger.error('')
# 6-4. CSVバックアップ処理を呼び出す
logger.info('I-CTRL-13 ')
try:
except Exception as e:
logger.error('')
# 6-5. CSVアップロード処理を呼び出す
logger.info('I-CTRL-14 ')
try:
except Exception as e:
logger.error('')
# 7. 前回取得日時ファイル更新処理を呼びだす
logger.info('I-CTRL-15 ')
try:
except Exception as e:
logger.error('')
# 8. 1オブジェクトのアップロードが完了した旨をログに出力する
logger.info('I-CTRL-16 ')
except GetObjectException as e:
logger.error(
'[取得対象のオブジェクト名] の[処理名]でエラーが発生しました 次のオブジェクトの処理に移行します')
except Exception as e:
logger.error(
'[取得対象のオブジェクト名] の処理中に予期せぬエラーが発生しました 次のオブジェクトの処理に移行します')
# ④ すべてのオブジェクトの処理が完了したことと、オブジェクト毎の処理結果をログに出力する
try:
logger.info(f'I-CTRL-17 すべてのオブジェクトの処理が終了しました 実行結果:[{実行結果JSON}]')
except Exception as e:
logger.error('')
raise CustomException()
# ⑤ 取得処理実施結果アップロード処理を呼び出す
try:
logger.info('I-CTRL-18 CRM_取得処理実施結果ファイルアップロード処理開始')
except Exception as e:
logger.error('')
raise CustomException()
# ⑥ CRMデータ取得処理終了ログを出力する
try:
logger.info('I-CTRL-19 CRMデータ取得処理を終了します')
except Exception as e:
logger.error('')
raise
except CustomException as e:
logger.error('I-ERR-01 [処理名]でエラーが発生したため、処理を終了します')
except Exception as e:
logger.error('I-ERR-02 予期せぬエラーが発生したため、処理を終了します')
# カスタムExceptionクラス
class CustomException(Exception, metaclass=ABCMeta):
def __init__(self, id, arg):
self.arg = arg
self.id = id
class GetObjectException(CustomException):
pass
if __name__ == '__main__':
main()